При разработке устройств, в которых необходимо оценивать углы ориентации, может встать вопрос — какой МЭМС датчик выбрать. Производители датчиков приводят множество параметров, из которых нам требуется получить полезную информацию о качестве датчика.
Чтобы понять, на какие точности углов мы можем рассчитывать, нужно приложить некоторое количество усилий.
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).
Акселерометр
Это датчик, измеряющий проекцию кажущегося ускорения на ось чувствительности. Кажущегося — потому что измеряет и силу тяжести тоже, даже в то время как акселерометр неподвижен. Проще всего представить акселерометр как грузик на пружинке, его выдаваемые измерения пропорциональны степени растяжения пружины. Если акселерометр покоится — пружина растянута лишь силой тяжести. Если ускоряется — то будет сумма сил: инерции грузика и силы тяжести
Примем следующую модель измерений триады ортогональных (взаимно перпендикулярных) акселерометров:
где – измеряемое ускорение в ССК (собственной системе координат) XYZ, – матрица перекоса осей и масштабных коэффициентов акселерометра, – вектор истинного ускорения в ССК XYZ, – вектор смещения нуля акселерометра, – шум измерений.Матрица перекоса осей и масштабных коэффициентов выглядит следующим образом:
где элементы, расположенные по главной диагонали () — это масштабные коэффициенты и их погрешности по трём осям акселерометра, а остальные элементы матрицы — перекосы осей акселерометра.Акселерометр 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 — мультипликативный эффект, отражающий изменение направления и/или ослабление вектора магнитной индукции. Этот эффект может быть вызван наличием металлического предмета в непосредственной близости от магнитометра или же собственными искажениями датчика — погрешностью масштабного коэффициента или перекосом его оси чувствительности.
Примем модель измерений триады магнитометров: где – измерения магнитометра в ССК XYZ, – диагональная матрица перекоса осей и масштабных коэффициентов (которая описывает эффект soft–iron), – вектор истинной магнитной индукции в ССК, – смещение нулей магнитометра (описывает эффект hard–iron), – шум измерений.
Матрица перекоса осей и масштабных коэффициентов магнитометра: элементы, расположенные на главной диагонали () — масштабные коэффициенты и их погрешности по трём осям магнитометра, остальные элементы матрицы — перекосы осей магнитометра. Все элементы матрицы также учитывают эффект soft-iron.
Магнитометр MPU-9250
В даташите нужных нам параметров нет, поэтому предположим, что магнитометр откалиброван и возьмем следующие числа:
- смещение нуля —
- погрешность масштабных коэффициентов —
- перекосы осей — предположим, что они такие же, как у акселерометров —
- шум на выходе —
Магнитометр ADIS16488A
- Смещение нуля — Initial Bias Error — будем считать, что мы его откалибровали до ;
- Погрешность масштабного коэффициента — Initial Sensitivity Tolerance
- Перекосы осей — Misalignment Axis to axis — в градусах, переводим в разы (радианы, так как величина маленькая);
- Спектральная плотность мощности шума — Noise Density — переводим в
- Полоса пропускания — возьмем для модели значение
Расчет углов ориентации
Благодаря наличию на Земле силы тяжести, акселерометры «чувствуют» направление вниз. Их измерения используются для расчета углов крена и тангажа. Формулы для расчёта можно найти тут. Третий — угол рыскания (а в данном случае — магнитного азимута), может быть определен благодаря наличию у Земли магнитного поля. Вектор индукции магнитного поля измеряется магнитометрами и их измерения участвуют в расчете угла рыскания. Нужно отметить, что в расчёте магнитного азимута используются измерения магнитометра, пересчитанные в плоскость. Здесь можно найти формулу для расчёта магнитного азимута. где — функция полного арктангенса, , , — измерения акселерометра по трём осям в ССК, , — измерения магнитометра по осям X', Y' (измерения магнитометров пересчитаны в плоскость).
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, получены предельные ошибки оценивания углов ориентации при совместном влиянии погрешностей акселерометра и магнитометра.
В таблице ниже — максимальные значения полученных ошибок:
Совместное влияние погрешностей акселерометра и магнитометра на ошибки оценивания углов ориентации:
- Вот так выглядят ошибки оценивания крена в зависимости от значений крена и тангажа:
- Ошибки оценивания тангажа в зависимости от значений крена и тангажа:
- Ошибки оценивания магнитного азимута от углов крена и тангажа:
- Ошибки оценивания магнитного азимута от углов крена и магнитного азимута:
- Ошибки оценивания магнитного азимута от углов тангажа и магнитного азимута:
Допустим мы поворачиваем ось чувствительности Z () акселерометра так, чтобы проекция силы тяжести на эту ось стала меньше (). Значение проекции силы тяжести плюс погрешность акселерометра дадут область возможных значений измерения (розовая область). Погрешность оценки угла при этом возрастает (). Таким образом, при уменьшении проекции вектора силы тяжести на ось чувствительности ошибка акселерометра начинает вносить бОльшую ошибку в оценку угла.
Влияние погрешностей только магнитометра (акселерометр считаем идеальным) на ошибки оценивания углов ориентации:
Итог
- Разработана модель, позволяющая оценивать погрешности расчёта углов ориентации. Углы ориентации рассчитаны по измерениям акселерометров и магнитометров. В расчете погрешности углов учитываются модели погрешностей этих датчиков.
- Ошибки оценивания углов ориентации являются функциями одновременно всех углов ориентации. При этом максимальные значения ошибок наблюдаются на границах диапазонов измерений углов.
- Не рекламируем и не рекомендуем покупать эти датчики (они уже довольно старые).
- Не учитываем влияние нелинейности измерений, влияние вибрации, нестабильности и т.д. — используем лишь первое приближение к модели ошибок датчиков.
Комментариев нет:
Отправить комментарий