Как рассчитать движение телефона в вертикальном направлении от отдыха?

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

Например, устройство находится в состоянии покоя (точка A), пользователь поднимает его в своей руке (точка B), теперь происходит изменение высоты между точкой A и точкой B, как бы я рассчитал это?

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

3 ответа

Решение

Если вы интегрируете ускорение дважды, вы получаете позицию, но ошибка ужасна. Это бесполезно на практике. Вот объяснение, почему (Google Tech Talk) в 23:20. Я очень рекомендую это видео.

Теперь вам не нужно ничего точного, и это другая история. Линейное ускорение доступно после слияния датчиков, как описано в видео. Смотрите датчик.TYPE_LINEAR_ACCELERATION на SensorEvent. Сначала я бы попробовал фильтр верхних частот, чтобы обнаружить внезапное увеличение линейного ускорения вдоль вертикальной оси.

Я понятия не имею, хорошо ли это для вашего приложения.

Вы можете фактически установить (только) вертикальное положение без измерения ускорения с течением времени. Это достигается путем измерения угла между направлением на центр Земли и направлением на северный магнитный полюс.

Это изменяется только (значительно), когда высота (высота) телефона изменяется. Что вы делаете, это использовать accelerometer а также magnetometer чтобы получить два массива с плавающей точкой [3], обработайте их как векторы, сделайте их единичными векторами, а затем угол между любыми двумя единичными векторами будет arccos(AxM).

Обратите внимание, что это точечный продукт, т.е. math.acos(A[0]*B[0]+A[1]*B[1]+A[2]*B[2]) Любое изменение этого угла соответствует изменению высоты. Также обратите внимание, что это должно быть откалибровано для реальных единиц измерения, и отношение изменения угла к высоте будет различным на разных долготах; Но это метод получения абсолютного значения высоты; хотя, конечно, угол также искажается при ускорении или при наличии поблизости магнитов:)

  1. Вы можете соотнести его с датчиком магнитного поля в MicroTesla

  2. Вы можете использовать dist= интеграл от интеграла ускорения ~ сигма ~ суммирование = интеграл от скорости + константа

Другие вопросы по тегам