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

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

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

1 ответ

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

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

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

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

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

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

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

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