
При разработке устройств, в которых необходимо оценивать углы ориентации, может встать вопрос — какой МЭМС датчик выбрать. Производители датчиков приводят множество параметров, из которых нам требуется получить полезную информацию о качестве датчика.
Чтобы понять, на какие точности углов мы можем рассчитывать, нужно приложить некоторое количество усилий.
TL;DR: Описан небольшой скрипт для Octave/MATLAB, позволяющий оценить ошибки расчёта углов ориентации по измерениям МЭМС акселерометров и магнитометров. На входе скрипта — параметры датчиков из даташитов (и/или погрешности калибровки). Статья может быть полезна тем, кто начинает использовать инерциальные датчики в своих устройствах. Небольшой ликбез по датчикам прилагается. Ссылка на гитхаб тоже.
Сходу примем такие условия:
- Мы хотим оценить углы ориентации неподвижного устройства.
Почему?Ориентацию подвижного устройства просто по формулам не посчитать, нужно использовать хитрые алгоритмы. - Для оценки углов мы будем использовать измерения МЭМС акселерометров и магнитометров.
1. Краткий ликбез
Углы ориентации

Будем понимать под углами ориентации объекта углы Эйлера — крен (roll), тангаж (pitch), рыскание (yaw), связывающие собственную систему координат XYZ объекта и локальную систему координат восток-север-верх (ENU — East North Up). Углы roll, pitch, yaw обозначают поворот, который нужно совершить осям XYZ чтобы перейти в оси ENU. Соответственно, нулевые углы означают, что ось X объекта смотрит на восток, ось Y объекта смотрит на север, ось Z — вверх.
Порядок поворота осей — начиная с последнего угла: сначала на yaw (вокруг оси Z), потом на pitch (вокруг оси Y), потом на roll (вокруг оси X).
Акселерометр
Это датчик, измеряющий проекцию кажущегося ускорения на ось чувствительности. Кажущегося — потому что измеряет и силу тяжести тоже, даже в то время как акселерометр неподвижен. Проще всего представить акселерометр как грузик на пружинке, его выдаваемые измерения пропорциональны степени растяжения пружины. Если акселерометр покоится — пружина растянута лишь силой тяжести. Если ускоряется — то будет сумма сил: инерции грузика
Примем следующую модель измерений триады ортогональных (взаимно перпендикулярных) акселерометров:
Матрица перекоса осей и масштабных коэффициентов выглядит следующим образом:
Выбор параметров акселерометра из даташита
Зная спектральную плотность мощности шума и полосу пропускания датчика можно рассчитать СКО шума на выходе датчика:
Акселерометр MPU-9250
- Смещение нуля акселерометра — Zero-G Initial Calibration Tolerance (
для компонент
,
для компоненты
) — для расчётов переводим в единицы
домножив на
- Погрешность масштабного коэффициента — Initial Tolerance (
) — выражается в процентах. Для расчётов надо перевести в разы, домножив на
- Перекосы осей — Cross Axis Sensitivity (
) — также умножаем на
- Спектральная плотность мощности шума акселерометра — Noise Power Spectral Density
— переводим числитель в
домножая все на
- Полоса пропускания — Low Pass Filter Response
— приведены границы, в пределах которых её можно изменять. Установим максимальную полосу. Все равно ошибки будут определяться не шумами;
Зная спектральную плотность мощности шума и полосу пропускания датчика можно рассчитать СКО шума на выходе датчика:
Акселерометр ADIS16488A:
- Смещение нуля — Bias Repeatability (
) — переводим в
домножая на
- Погрешность масштабного коэффициента — (Sensitivity) Repeatability (
) — переводим из процентов в разы;
- Перекосы осей — Misalignment Axis to frame (
) — в градусах, переводим в разы (радианы, поскольку величины малые);
- Спектральная плотность мощности шума — Noise Density
— переводим числитель в
- Полоса пропускания —
— выберем такой же, как у MPU-9250;
Магнитометр
Датчик, который измеряет проекцию индукции магнитного поля на ось чувствительности. Магнитометру свойственны искажения hard-iron и soft-iron. Hard-iron искажение — это аддитивный эффект, когда к измеряемому полю добавляется постоянная составляющая. Причиной может быть, например, действие постоянного магнита или собственное смещение нуля датчика. Искажение soft-iron — мультипликативный эффект, отражающий изменение направления и/или ослабление вектора магнитной индукции. Этот эффект может быть вызван наличием металлического предмета в непосредственной близости от магнитометра или же собственными искажениями датчика — погрешностью масштабного коэффициента или перекосом его оси чувствительности.
Примем модель измерений триады магнитометров:
Матрица перекоса осей и масштабных коэффициентов магнитометра:
Выбор параметров магнитометра из даташита
В даташите нужных нам параметров нет, поэтому предположим, что магнитометр откалиброван и возьмем следующие числа:
Магнитометр MPU-9250
В даташите нужных нам параметров нет, поэтому предположим, что магнитометр откалиброван и возьмем следующие числа:
- смещение нуля —
- погрешность масштабных коэффициентов —
- перекосы осей — предположим, что они такие же, как у акселерометров —
- шум на выходе —
Магнитометр ADIS16488A
- Смещение нуля — Initial Bias Error
— будем считать, что мы его откалибровали до
;
- Погрешность масштабного коэффициента — Initial Sensitivity Tolerance
- Перекосы осей — Misalignment Axis to axis
— в градусах, переводим в разы (радианы, так как величина маленькая);
- Спектральная плотность мощности шума — Noise Density
— переводим в
- Полоса пропускания — возьмем для модели значение
Расчет углов ориентации
Благодаря наличию на Земле силы тяжести, акселерометры «чувствуют» направление вниз. Их измерения используются для расчета углов крена и тангажа. Формулы для расчёта можно найти тут. Третий — угол рыскания (а в данном случае — магнитного азимута), может быть определен благодаря наличию у Земли магнитного поля. Вектор индукции магнитного поля измеряется магнитометрами и их измерения участвуют в расчете угла рыскания. Нужно отметить, что в расчёте магнитного азимута используются измерения магнитометра, пересчитанные в плоскость. Здесь можно найти формулу для расчёта магнитного азимута.
2. Ошибки оценивания углов ориентации
Описание алгоритма

- Сформируем массивы случайных углов Эйлера roll, pitch, yaw. Они будут задавать наборы вариантов истинной ориентации объекта в модели.Зачем много углов?Потому что ошибки зависят от значения углов ориентации, и если мы хотим получить представление об их величине во всем диапазоне изменения — то это самый простой способ.
- Из случайных углов roll, pitch, yaw формируется матрица преобразования из ССК XYZ в ЛСК ENU:
где,
,
,
,
,
.
- Используя данную матрицу можно получить выражение для истинных ускорений в ССК:
— вектор, определяющий направление гравитационного ускорения, выраженный в единицах g,
— матрица преобразования координат из ЛСК в ССК (обратная матрице преобразования из ССК в ЛСК).
- Применяем модель измерения акселерометра:
- По измерениям акселерометра рассчитываются новые углы крена и тангажа (оценки) по формулам:
- Также необходимо сформировать матрицу пересчета в «горизонт» из этих углов, для этого воспользуемся функцией rpy2mat:
где углы roll' и pitch' — это углы, рассчитанные по измерениям акселерометра, а третий угол — нулевой. - Возьмем вектор истинных магнитных плотностей в ЛСК ENU и пересчитаем его в ССК XYZ:
- Применяем модель измерений магнитометра:
- Осталось пересчитать измерения магнитометра из ССК в «горизонт»:
- По «горизонтированным» измерениям магнитометра расcчитывается угол магнитного азимута:
- Ошибки оценивания углов ориентации рассчитываются как разность между истинными углами roll, pitch, yaw и рассчитанными по измерениям датчиков — roll', pitch', yaw'.
3. Результаты — расчет погрешностей оценки углов
Для двух датчиков, которые мы взяли для примера — ADIS16488A и MPU-9250, получены предельные ошибки оценивания углов ориентации при совместном влиянии погрешностей акселерометра и магнитометра.
В таблице ниже — максимальные значения полученных ошибок:
Угол | MPU-9250 | ADIS16488A |
Крен | ||
Тангаж | ||
Магнитный азимут |
Совместное влияние погрешностей акселерометра и магнитометра на ошибки оценивания углов ориентации:
- Вот так выглядят ошибки оценивания крена в зависимости от значений крена и тангажа:
- Ошибки оценивания тангажа в зависимости от значений крена и тангажа:
- Ошибки оценивания магнитного азимута от углов крена и тангажа:
- Ошибки оценивания магнитного азимута от углов крена и магнитного азимута:
- Ошибки оценивания магнитного азимута от углов тангажа и магнитного азимута:
Как можно заметить - величина ошибок растёт с приближением к границе диапазонов измерений углов.
Почему?
Это можно понять из рисунка ниже.

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

Допустим мы поворачиваем ось чувствительности Z (
Поиграем с входными параметрами чтобы понять чем определяются ошибки
Влияние только погрешностей акселерометра (магнитометр считаем идеальным) на ошибки оценивания углов ориентации:
Влияние погрешностей только магнитометра (акселерометр считаем идеальным) на ошибки оценивания углов ориентации:
- Влияние погрешностей акселерометра на ошибки оценивания крена от крена и тангажа
- Влияние погрешностей акселерометра на ошибки оценивания тангажа от крена и тангажа
- Влияние погрешностей акселерометра на ошибки оценивания магнитного азимута от крена и тангажа
- Влияние погрешностей акселерометра на ошибки оценивания магнитного азимута от крена и магнитного азимута
- Влияние погрешностей акселерометра на ошибки оценивания магнитного азимута от тангажа и магнитного азимута
Влияние погрешностей только магнитометра (акселерометр считаем идеальным) на ошибки оценивания углов ориентации:
- Влияние погрешностей магнитометра на ошибки оценивания крена от крена и тангажа
- Влияние погрешностей магнитометра на ошибки оценивания тангажа от крена и тангажа
- Влияние погрешностей магнитометра на ошибки оценивания магнитного азимута от крена и тангажа
- Влияние погрешностей магнитометра на ошибки оценивания магнитного азимута от крена и магнитного азимута
- Влияние погрешностей магнитометра на ошибки оценивания магнитного азимута от тангажа магнитного азимута
Итог
- Разработана модель, позволяющая оценивать погрешности расчёта углов ориентации. Углы ориентации рассчитаны по измерениям акселерометров и магнитометров. В расчете погрешности углов учитываются модели погрешностей этих датчиков.
- Ошибки оценивания углов ориентации являются функциями одновременно всех углов ориентации. При этом максимальные значения ошибок наблюдаются на границах диапазонов измерений углов.
Спойлер - дисклеймер:
- Не рекламируем и не рекомендуем покупать эти датчики (они уже довольно старые).
- Не учитываем влияние нелинейности измерений, влияние вибрации, нестабильности и т.д. — используем лишь первое приближение к модели ошибок датчиков.
Литература
- Tilt Sensing Using a Three-Axis Accelerometer, Rev. 6 — Freescale Semiconductor, Inc.
- Implementing a Tilt-Compensated eCompass using Accelerometer and Magnetometer Sensors — Freescale Semiconductor
Application Note. - MPU-9250 Product Specification Revision 1.1 — InvenSense Inc.
- ADIS16488A Data Sheet — Analog Devices, Inc.
- Перов А. И., Харисов В. Н. ГЛОНАСС. Принципы построения и функционирования М.: Радиотехника, 2010. – 800 с.
Авторы
- Илья Нагин — Stormgazer
- Дарья Малафеева
Московский Энергетический Институт, Кафедра Радиотехнических Систем