Как рассчитать движение телефона в вертикальном направлении от отдыха? - PullRequest
6 голосов
/ 09 июня 2011

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

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

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

Ответы [ 3 ]

5 голосов
/ 10 июня 2011

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

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

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

3 голосов
/ 21 января 2014

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

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

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

0 голосов
/ 07 декабря 2013
  1. вы можете соотнести его с датчиком магнитного поля в MicroTesla

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

...