emnip: (27)
Иоганн Вольфгангович Корнцанг ([personal profile] emnip) wrote2018-01-26 01:59 pm

Кое-что про летательные аппараты (ЛА), которые один мой шеф называет "бесчеловечными"

Сейчас в системах инерциальной навигации (ИН) наряду с фильтром Калмана популярен фильтр Маджвика - такая математическая штука, в которую зажёвываются данные с акселерометра, который будет врать про наклон ЛА, если он испытывает ускорение; гироскопа, у которого ощутимый дрейф нуля; магнитометра, который подвержен помехам по полю - и наружу выдаются вполне правдоподобные данные о углах крена, тангажа и рыскания ЛА.

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

Но есть еще один источник ошибок, который называется испорченный телефон.

Вот перевод оригинальной статьи автора, С. Маджвика, про его фильтр - https://habrahabr.ru/post/255661/. Переводчиком указано, что он исправил более 10 опечаток. Но ошибки содержатся и в С-коде фильтра - в обсуждении http://diydrones.com/forum/topics/madgwick-imu-ahrs-and-fast-inverse-square-root - сказано, что автор, скорее всего, запутался в скобках при переводе уравнений из матричной формы. Это во первых, во вторых, использованная формула быстрого вычисления обратного квадратного корня работает очень плохо - и то, и другое скоро приводят к неработоспособности фильтра.

Спустя два года после обнаружения этих ошибок выясняется, что код автор на сайте так и не удосужился обновить, хотя обещал.

А вот и практические результаты, для продающихся модулей ИН -

1. http://amperka.ru/product/troyka-imu-10-dof
Библиотека для работы с этим модулем включает в себя оригинальный код Маджвика с обеими ошибками.

2. http://iarduino.ru/shop/Expansion-payments/imu-sensor-na-9-stepeney-svobody-trema-modul-v2-0.html
Здесь обратный квадратный корень вычисляется втупую вызовом соответственной функции (что для ардуино излишне для быстродействия) но та же ошибка в алгоритме.

И то же самое - использование старых ошибок, а о фиксах все позабыли - для фильтра Калмана описано здесь -

"Прошло тридцать лет. Написано много книг и учебников. Подготовлено несколько поколений инженеров. И подавляющее большинство из них использует "старый", неустойчивый метод. Когда ошибка накапливается, и фильтр начинает показывать позавчерашнюю погоду, его просто реинициализируют - вроде ребута компьютера с Windows."

(с) http://scholar-vit.livejournal.com/162018.html

Вот так прошлое передает пламенный привет будующим строителям БПЛА, космических ракет и спутников.