Может кто-нибудь сказать мне, является ли датчик силы тяжести в качестве датчика наклона для повышения точности курса? - PullRequest
0 голосов
/ 06 ноября 2011

Оси X и Y магнитометра можно использовать для расчета направления на север, когда телефон находится на уровне земли. Но при раскатывании или наклоне телефона мы должны использовать степень крена и тангажа, чтобы устранить ошибку наклона.

Теперь я хочу знать, используется ли датчик силы тяжести в качестве датчика наклона, чтобы получить крен и наклон, чтобы помочь улучшить точность направления на север?

1 Ответ

3 голосов
/ 06 ноября 2011

Здесь я опишу, как получить ориентацию устройства относительно горизонтальной плоскости и магнитного севера. Это всего лишь 1 строка кода для получения магнитного курса от ориентации (матрицы вращения).

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

Возможно, вы захотите применить хотя бы простое скользящее среднее к вашим данным, прежде чем вычислять перекрестное произведение.

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

Показания акселерометра a , перекрестное произведение a x m и перекрестное произведение показаний акселерометра и перекрестного произведения a x ( a x m ) дает 3 попарно перпендикулярных вектора. Сделайте их единичными векторами, умножив их на обратную величину их соответствующей длины. Эти 3 единичных вектора дадут вам матрицу вращения .

Матрица вращения эквивалентна ориентации устройства. В моем приложении магнитный курс был atan2(R[Y][Y], R[Y][X]), где R - матрица вращения. Возможно, вам придется взять различные элементы матрицы вращения и, возможно, изменить знаки в зависимости от соглашений, которые вы соблюдаете.

Если API устройства предоставляет матрицу вращения, то для получения магнитного курса достаточно просто кода.

...