добавились некоторые пояснения касательно как работает fusion mode
Описана вполне логичная работа механизма коррекции дрейфа показаний гири по показаниям акселя. Не более того. Это не калибровка, это именно коррекция и логично что это все время должно работать. Но по прежнему не раскрыты подробности механизма FMC. И по прежнему неясно, работает ли коррекция показаний магнитометра по показаниям гири и акселя в режиме FMC_OFF. А именно магнитометр используется как основной канал для определения хидинга, а аксель и гиря используются для его коррекции. Опять же работает это в режиме FMC_OFF ил нет - неясно, но судя по вот этой цитате такой коррекции в режиме FMC_OFF не происходит:
Предположу, что, действительно, в любом из фьюжн-режимов происходит перепроверка гири по акселю и корректировка гири если аксел адекватен. Однако в режиме FMC_OFF корректировки показаний магнитометра по показаниям гири (и опосредовано по показаниям акселя) не происходит, а именно он используется за основу хидинга в данном компасе.
Итого алгоритм предположительно следующий:
- Показания магнитометра используются для вычислений хидинга. Хиддинг вычисляется только в фьюжн-режимах
- Показания гири могут корректировать показания магнитометра (и соответственно хидинга) в режиме NDOF. В режиме NDOF_FMC_OFF этой корректировки не происходит
- Показания гири (дрейф) пытаемся скорректировать по показаниям акселя, если конечно аксель позволяет (нет предельных ускорений, сравнимых с ускорением гравитации и нет состояния покоя или равномерного движения, когда аксель бесполезен)
Собственно, фюжн режимы используются только для разгрузки устройства-потребителя и освобождения его от самостоятельных аналогичных вычислений. Если не доверям фюжн-алгоритму, мы можем использовать нонфюжн режим выдачи показаний только магнитометра, использовать его как хидинг и забыть о страшной и мешающей автокалибровке. Ну или получать все три датчика также в нонфюжн режиме (без какой-либо взаимной их коррекции) и выполнять всю математику корректировок самостоятельно по своим собственным алгоритмам. Тем, у кого дрейф гири существенно мешает точности, можно пойти одним из этих путей и переложить всю работу на скетч, чип BNO при этом будет использоваться исключительно как высокоточный поставщик показаний датчиков в исходном виде, никаких проблем