Intereting Posts
Android Emulator, экран обложки с ладонью Android: предупреждения компилятора в Android Studio Вход в Quickblox Chat не работает с несанкционированным ответом CookieManager и CookieSyncManager не синхронизируют файлы cookie с веб-просмотром в ICS (работает на всех предыдущих уровнях API) Значок ActionBarDrawerToggle отсутствует при использовании AppCompat v22 Как обновить путь к обложке альбома, используя contentResolver? Как сделать Android Expansion File с помощью Android Studio? Android читает пиксели от GL_TEXTURE_EXTERNAL_OES Инструмент командной строки Android Debug Bridge (adb) существует в $ PATH, но «команда не найдена» в Linux Как изменить положение диалога прогресса? Изменение стиля анимации ViewPager Панель действий Android Как Android определяет, имеет ли приложение «Высокое использование батареи» в разделе «Недавние запросы местоположения»? Ошибка компиляции с API 10 Как реализовать механизм рециркуляции представления для PagerAdapter?

Использование акселерометра, гироскопа и компаса для расчета движения устройства в 3D-мире

Я работаю над андроидным приложением, которое может рассчитать движение устройства в 6 направлениях. Я думаю, что могу использовать ускорение как;

" X = at ^ 2 ", но a не является константой. И это проблема. Как я могу рассчитать общее движение?

Solutions Collecting From Web of "Использование акселерометра, гироскопа и компаса для расчета движения устройства в 3D-мире"

Акселерометр дает вам три направления (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 образцов вы можете начать вычислять позицию из этого.

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

http://developer.android.com/reference/android/hardware/SensorEvent.html

Вот способ придумать положение с помощью акселерометра вместе с алгоритмом поиска позиции в деталях:

http://www.freescale.com/files/sensors/doc/app_note/AN3397.pdf

Это правда, вы получаете позицию, дважды интегрируя линейное ускорение. Но ошибка ужасна. На практике это бесполезно.

Вот объяснение, почему (Google Tech Talk) в 23:20. Я очень рекомендую это видео.

Это не шум акселерометра, вызывающий проблему, а белый шум гироскопа , см. Подраздел 6.2.3 «Распространение ошибок». (Кстати, вам понадобятся гироскопы.)

Аналогичным вопросом является расстояние, перемещаемое акселерометром .