Вопрос по android, algorithm – Как получить вращение между осью акселерометра и вектором движения?

1

Я работаю над системой пешеходной навигации на Android. В настоящее время я пытаюсь получить матрицу вращения между 3-осевым акселерометром и движением, которое применяется к устройству.

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

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

EDIT : Магнитометр и гироскоп помогают вам найти ориентацию устройства, даже когда он неподвижен, но не позволяют вам знать, в каком направлении движется устройство. У меня есть первый, и я ищу второй. В принципе :

Ссылка на человека (направление движения) - & gt; Ссылка на устройство (или ссылка на акселерометр) - & gt; Земля Ссылка

и я ищу способ найти матрицу вращения, чтобы вычислить расстояния от HR до DR, что я затем применил бы к матрице вращения, которая, как я обнаружил, идет от DR к ER.

Торбен - Да, к сожалению, он предназначен для использования только внутри помещений. Но опять же я не рассчитываю расстояния с помощью акселерометра (иначе у меня не было бы этой проблемы) PeterGriffin
Итак, вы знаете скорость из алгоритма шагомера, и вы хотели бы получить курс? В этом случае вам понадобитсяcompassакселерометры понятия не имеют, где находится север. Ali
Я должен спросить ... у вас есть очень веская причина не использовать GPS? Акселерометр не очень хороший тип датчика для расчета больших расстояний. Torben
Вы решили свою проблему? В настоящее время я сталкиваюсь с аналогичной проблемой, когда мне нужно переназначить ускорение на земную ссылку ... т.е. я хочу вычислить ориентацию устройства относительно истинного севера, а затем вычислить ускорение относительно истинного севера. Я думаю, что ваше решение может помочь мне ... htz
Али - у меня есть заголовок акселерометра, как сказано в посте. Просто движение человека, удерживающего устройство, не находится ни в одной из осей акселерометра. Поэтому, если вы просто применяете заголовок к этим расстояниям (или скорости, если хотите), как это в настоящее время реализуется прямо сейчас, это не правильно. PeterGriffin

Ваш Ответ

1   ответ
1

ссылка на сайт.
Идея основана на получении данных акселерометра по оси 3, (что n раз 3 матрица) и поиск PCA (принцип анализа основных компонентов) матрицы. PCA - это 3 вектора с самой высокой энергией матрицы).
В идеале основное направление вектора (с наибольшей энергией) направлено вверх, а второе - направление движения. Вы можете прочитать все это в статье. Я попытался реализовать алгоритм в Matlab, результат ок. (не хорошо) Надеюсь, у вас получится лучше (хотелось бы услышать о хороших результатах).

Надеюсь это поможет

Ariel

Похожие вопросы