Слияние данных датчиков (sensor fusion)
Акселерометр знает, где низ, но путается при движении. Гироскоп точно отслеживает поворот, но со временем уплывает. Магнитометр показывает север, но боится железа рядом. Слияние данных объединяет их так, чтобы недостатки одного перекрывались достоинствами другого.
Обновлено Редакция GAW
Слияние данных (sensor fusion) — объединение показаний нескольких датчиков в одну оценку величины, точнее любой из исходных. В электронике чаще всего так определяют ориентацию: наклон, поворот и курс по акселерометру, гироскопу и магнитометру.
Почему одного датчика мало:
| Датчик | Что измеряет хорошо | Чем плох |
|---|---|---|
| Акселерометр | направление силы тяжести в покое — наклон | при движении к гравитации добавляются ускорения |
| Гироскоп | быстрые повороты | смещение нуля накапливается при интегрировании |
| Магнитометр | направление на север — курс | искажения от железа и токов рядом |
Смещение нуля гироскопа — главная причина. У BMI270 по даташиту оно до ±0,5 °/с, и угол, полученный интегрированием, уходит на 30° за минуту. Акселерометр не уплывает, но шумит и реагирует на любое движение. Слияние доверяет гироскопу на коротких отрезках времени, а акселерометру и магнитометру — на длинных, исправляя медленный уход.
Внутри датчика. BNO055 по даташиту Bosch — 9-осевой модуль со своим процессором. В режимах слияния он сам выдаёт кватернион, углы Эйлера, вектор поворота, линейное ускорение без гравитации, вектор гравитации и курс — 100 раз в секунду. Режимы различаются набором датчиков:
| Режим BNO055 | Датчики | Что даёт |
|---|---|---|
| IMU | акселерометр и гироскоп | относительная ориентация без курса на север |
| COMPASS | акселерометр и магнитометр | курс как у компаса |
| M4G | акселерометр и магнитометр, вращение — по магнитометру | ориентация без гироскопа |
| NDOF | все три | абсолютная ориентация |
После включения BNO055 находится в режиме настройки CONFIGMODE, а качество калибровки каждого датчика показывает регистр CALIB_STAT.
В микроконтроллере. 6-осевые датчики вроде BMI270 выдают сырые ускорения и угловые скорости, а слияние считает программа. Это экономнее — сам BMI270 потребляет сотни микроампер против миллиампер у BNO055, — но нужно подобрать фильтр и откалибровать датчики. Курс при этом недоступен без магнитометра: BMI270 по даташиту умеет подключать его через свой вспомогательный интерфейс I²C. Шум датчиков задают плотностью шума, и от неё зависит, насколько плавной получится оценка.
Подробнее о датчиках — в статье об акселерометрах и гироскопах.
Частые вопросы
Зачем объединять акселерометр и гироскоп?
Потому что у каждого свой недостаток. Угол по гироскопу получают интегрированием скорости, и смещение нуля накапливается: у BMI270 по даташиту до ±0,5 °/с — до 30° за минуту. Акселерометр в покое точно показывает направление силы тяжести, но при движении к ней добавляются ускорения. Слияние берёт у гироскопа быструю реакцию, а у акселерометра — долгосрочную точность наклона.
Зачем нужен магнитометр?
Чтобы знать курс — поворот вокруг вертикали. Акселерометр его не видит: сила тяжести при таком повороте не меняет направления. Поэтому в BNO055 режимы с курсом — COMPASS, M4G и NDOF — используют магнитометр, а режим IMU, только с акселерометром и гироскопом, даёт относительную ориентацию.
Где считать слияние — в датчике или в микроконтроллере?
BNO055 по даташиту делает это сам и выдаёт готовые углы и кватернион 100 раз в секунду, но потребляет до 12,3 мА. С 6-осевыми BMI270 и подобными слияние считает микроконтроллер: это экономнее по току и гибче, но требует вычислений и настройки фильтра.
Источники
- Bosch Sensortec. BNO055 Data Sheet (BST-BNO055-DS000-18, Revision 1.8, October 2021) — 9-осевой модуль с процессором, выдаёт кватернион, углы Эйлера, вектор поворота, линейное ускорение, гравитацию и курс 100 раз в секунду; режимы без слияния (ACCONLY, MAGONLY, GYROONLY, ACCMAG, ACCGYRO, MAGGYRO, AMG) и со слиянием (IMU — акселерометр и гироскоп, COMPASS, M4G, NDOF_FMC_OFF, NDOF — все три датчика); после включения режим CONFIGMODE; в регистре CALIB_STAT — состояние калибровки датчиков
- Bosch Sensortec. BMI270 Data Sheet (BST-BMI270-DS000-08, Revision 1.6) — 6-осевой IMU без встроенного слияния; вспомогательный интерфейс I²C для внешнего магнитометра или датчика давления; смещение нуля гироскопа ±0,5 °/с
Нашли ошибку?
Смотрите также
- Акселерометры и гироскопыBMI160, BMI270, BMI323, BNO055: параметры, дрейф гироскопа, слияние, подключение
- Смещение нуля гироскопаПоказание гироскопа в покое: значения, дрейф угла, компенсация
- Спектральная плотность шуманВ/√Гц: шум усилителя в полосе 1 Гц
- ДатчикиТок и температура: шунты, датчики Холла, термисторы, термопары — подключение и расчёт