Расчет расстояния по измеренному ускорению в зависимости от времени

У меня есть акселерометр, подключенный к устройству, которое передает мгновенные значения ускорения в трех направлениях. Я пытался рассчитать расстояние для вертикального движения, используя эти значения в Excel (применяя двойное интегрирование), но почему-то это не работает должным образом.

Как можно было бы рассчитать пройденное расстояние по измеренному ускорению с помощью таблиц Excel?

Если вас интересует только вертикальное смещение, вам потребуется только вертикальное ускорение. Можете ли вы показать нам, что вы сделали?
На самом деле меня интересует смещение во всех направлениях, но для начала я попробовал максимально просто...
У меня есть длинный список значений, и, поскольку я знаю временной интервал для измерений, я попытался сначала вычислить среднее значение ускорения, а затем x = a * 0,5 * t ^ 2 ... результат теста далёк. отличается от ожидаемого расстояния
Посмотрите на Eurequa ( creativemachines.cornell.edu/eureqa ), где вы можете взять измеренные данные, сгладить, подогнать и применить математические функции.

Ответы (1)

Начинается с п о с я т я о н г "=" г = 0 и в ( г ) "=" 0 и путем отслеживания нескольких значений ускорения либо с временным интервалом, либо с фиксированными интервалами, т , то можно получить позицию.... несколько. Со временем будет дрейфовать. Кроме того, ваше устройство вообще не может вращаться, иначе вам понадобится гироскоп, чтобы отслеживать это, а затем использовать тригонометрию, чтобы правильно ориентировать значения xy и z от акселерометра. Предполагая, что он всегда ориентирован так, что а ( г ) всегда идеальное вертикальное ускорение (если вы находитесь в транспортном средстве, которое всегда плоско, и в этом случае z не имеет значения, или вы находитесь на вертикальной направляющей),

п ( г ) "=" 0 т в ( г )   д т "=" 0 т а ( г )   д т

Так же отсюда :

Краткий ответ: забудьте об этом.

Более длинный ответ: если вы не находитесь на идеально прямом рельсе, вы не добьетесь того, чего хотите, без (а) набора гироскопов; и (б) Гораздо более точные датчики, чем те, что у вас есть.

Акселерометры измеряют ускорение в фиксированной системе отсчета тела, тогда как вам нужно некоторое смещение в фиксированной системе отсчета земли.

Следовательно, вам нужно не только интегрировать акселерометры, но и повернуть их в рамку, закрепленную на земле, прежде чем выполнять интеграцию.

Это при условии идеальных датчиков. Датчики MEMS далеки от совершенства — я написал здесь пост о некоторых ошибках.

Рассмотрим две ошибки: 1. Смещение на акселерометре. 2. Ошибка начальной ориентации (наклона).

В дополнение к любому сигналу ускорения, интегрируйте смещение, и вы получите линейную ошибку со временем. Интегрируйте рампу, и вы получите квадратично возрастающую ошибку со временем. Это будет складываться очень, очень быстро.

Рассмотрим ошибку наклона. Теперь вы будете измерять часть вектора гравитации в прямом (или любом другом) направлении. Интегрируйте эту ошибку дважды, и вы получите ту же проблему, что и смещение.

Так что мой совет еще раз НЕ ДЕЛАЙТЕ! Найдите другой метод.

Кроме того, ознакомьтесь с этой книгой для более подробного проектирования или используйте любые датчики и алгоритмы, на которых работают эти ребята:

http://www.youtube.com/watch?v=6ijArKE8vKU

Если вы все еще хотите попробовать, используйте трапециевидный метод в Excel, это довольно просто. Здесь есть страница объяснения с образцом, но вот более полный способ:

1  Time [A]  Acceleration [B]   Velocity [C]                Distance [D]
2  0         a(z)               0                           0
3  1         a(z)               =C2+(A3-A2)*(B2+B3)/2       =D2+(B3-B2)*(C2+C3)/2
4  2         a(z)               =C3+(A4-A3)*(B3+B4)/2       =D3+(B4-B3)*(C3+C4)/2
5  3         a(z)               =C4+(A5-A4)*(B4+B5)/2       =D4+(B5-B4)*(C4+C5)/2
6  4         a(z)               =C5+(A6-A5)*(B5+B6)/2       =D5+(B6-B5)*(C5+C6)/2
7  5         a(z)               =C6+(A7-A6)*(B6+B7)/2       =D6+(B7-B6)*(C6+C7)/2
8  6         a(z)               =C7+(A8-A7)*(B7+B8)/2       =D7+(B8-B7)*(C7+C8)/2
9  7         a(z)               =C8+(A9-A8)*(B8+B9)/2       =D8+(B9-B8)*(C8+C9)/2
10 8         a(z)               =C9+(A10-A9)*(B9+B10)/2     =D9+(B10-B9)*(C9+C10)/2
11 9         a(z)               =C10+(A11-A10)*(B10+B11)/2  =D10+(B11-B10)*(C10+C11)/2
12 10        a(z)               =C11+(A12-A11)*(B11+B12)/2  =D11+(B12-B11)*(C11+C12)/2
   ...       ...                ...                         ...
Хотя вы совершенно правы в том, что это ненадежный метод, он действительно зависит от приложения. Для чего-то вроде модели ракеты с большим ускорением в одну сторону это вполне может сработать, а вот отследить положение человека с помощью смартфона без GPS — безнадежно.
Модель ракеты испытает некоторое «опрокидывание» и может даже изменить направление при спуске, что исказит ваши измерения, обеспечивая меньшее ускорение z, чем точное, а затем, соответственно, добавляя к положению при падении. На наземном транспортном средстве x и y могут быть полезны, но как только вы введете подвеску, ему действительно понадобится гироскоп для отслеживания крена, тангажа и рыскания акселерометра, чтобы иметь большую точность.