Использование акселерометра, гироскопа и компаса для расчета движения устройства в 3D-мире
Я работаю над андроидным приложением, которое может рассчитать движение устройства в 6 направлениях. Я думаю, что могу использовать ускорение как:
" x = a.t ^ 2", но a не является константой. И в этом проблема. Как я могу рассчитать общее движение?
Ответ 1
Акселерометр дает вам три направления (x, y, z). Это измерения ускорения, которые сложнее узнать, что такое положение устройства. Но помните, что ускорение связано с позицией через интеграцию:
a(t) = a[x]
v(t) = a[x]t + c
x(t) = a[x]t ^ 2 + ct + d
Проблема в том, что вы не можете знать c или d, потому что, когда вы берете производную, константы выпадают. Таким образом, есть некоторая сумма, которую вы не можете получить с помощью c и d. Вы можете попытаться компенсировать это, вспомнив значения, которые вы использовали для них. Таким образом, после захвата 3 образцов вы можете начать вычислять позицию из этого.
Существует значительная информация о том, как интерпретировать данные с датчиков. Как выяснение, где гравитация для ориентации, и вычитание силы тяжести для получения линейного ускорения.
Это не шум акселерометра, вызывающий проблему, но gyro white noise, см. подраздел 6.2.3 "Распространение ошибок". (Кстати, вам понадобятся гироскопы тоже.)