Как стать автором
Обновить

Оценивание пространственной ориентации, или Как не бояться фильтров Махони и Маджвика

Время на прочтение11 мин
Количество просмотров27K
Всего голосов 33: ↑33 и ↓0+33
Комментарии21

Комментарии 21

Я хотел бы задать немного вопросов по теме:

Насколько я понял из статьи, принципиальная разница в фильтрах Махони и в Мэджвика в том, что в одном случае корректируется угловая скорость, а во втором кватернион? Если еще значительные различия в принципе работы?

У кого из этих двух лучше с быстродействием?

Как так получилось, что ардуинщики большинстве своём знают только о фильтре Мэджвика?
1. Для программиста отличия два: а) у Махони — матрица, у Маджвика — кватернион; б) у Махони корректируется угловая скорость, у Маджвика — скорость изменения кватерниона. Для математика важно ещё и то отличие, что у Махони решение строится геометрически, у Маджвика — аналитически.

2. Не сравнивал, но предполагаю, что у Маджвика может выйти чуть быстрее за счёт меньшей избыточности (4 параметра ориентации вместо 9). Но Маджвик очевидно проиграет на этапе построения своих градиентов, якобианов и т.п., особенно если векторов больше одного и нужно ещё оценить уход гироскопов.

3. Кроме смутных технических соображений из п. 2, могу предположить, что Маджвик больше занят саморекламой. Он коммерсант, а Махони — университетский учёный и уже давно сменил тему исследований. А ведь кроме Махони и Маджвика, было ещё много народу, кто занимался подобными вещами: и Боннабель, и тот же Салычев. О них вообще редко вспоминают.
Понято… Чтож, когда в следующий раз дойдут руки до навигации, попробую фильтр Махони…
Оффтоп: С Салычевым я даже шапошно знаком :)… И книга у него весьма подробная. Фактически настольная. А про Боннабеля впервые слышу. Надо будет ознакомится.
У Боннабеля была очень амбициозная цель: построить общую «геометрическую» теорию таких фильтров, пригодных не только для навигации, но и вообще для всех задач, где используется, например, фильтр Калмана. Красиво размахнулся, но, увы, слабовато ударил.

А у Салычева я и учился, и работал, и диссер защищал.
Может статься, мы встречались :)
то ли из-за высоких требований к вычислительным ресурсам, неприемлемых для дронов
Господа, я просто оставлю это здесь:
The Apollo computer used 2k of magnetic core RAM and 36k wire rope [...]. The CPU was built from ICs [...]. Clock speed was under 100 kHz [...]. The fact that the MIT engineers were able to pack such good software (one of the very first applications of the Kalman filter) into such a tiny computer is truly remarkable.
— Interview with Jack Crenshaw, by Matthew Reed, TRS-80.org (2009) [1]
Да, это был шедевр. Не знаю, удалось ли кому-то такое повторить. Кстати, там интегрировалось кинематическое уравнение для матрицы поворота, а малые ошибки дооценивались фильтром Калмана. Ассемблерные исходники выкладывались в интернете.
Интересно, какой фильтр реализован в DPS InvenSens MPU. (https://www.invensense.com/products/motion-tracking/6-axis/mpu-6050/) Сталкивались?
Не сталкивался. Но судя по документации — никакого. Упомянутый там Digital Motion Processor, вероятно, предназначен только для предобработки сырых измерений. Нигде не упомянуты выходные данные об ориентации, нет и сведений об их точности. У меня создалось впечатление, что реализация фильтра возлагается на пользователя.
Спасибо за ответ.
Я с ним работал. Глубоко не копал. Мне нужна была стабилизация. Пробовал Магдвика на Ардуино. И их собственный DMP. Чисто на практике. Их соственный DMP оказался удобней. Не грузит Ардуино, а для меня было критичным передача данных с фиксированным (не переменным) лагом. Быстро поправляется, если обездвижить. Фильтр Магдвига, я так и не понял как настраивать). Он иногда давал необъяснимые большие всплески. И судя по вашей статье, возможно (может ошибаюсь), это «фича» алгоритма, в отсутствие внешних датчиков. Invensense вроде пишет, что их собственный алгоритм учитывает все датчики, и акселерометр и гироскопы (на одной вафле), а фильтр магдвига (судя по коду который я использовал) этого не делает.
Для меня так и осталось непонятным, оценивает ли он углы. По вашим словам выходит, что всё-таки оценивает. Однако в документации я ни слова о них по-прежнему не вижу.

Фильтр Маджвика, разумеется, может использовать и акселерометры, и магнитометры наряду с гироскопами. Тем не менее, каждая область применения (самолёт, дрон, автомобиль, пешеход), по-хорошему, требует своих настроек фильтра — хоть Калмана, хоть Махони, хоть Маджвика. Поэтому мораль своей статьи я вижу именно в том, чтобы сподвигнуть публику самостоятельно изобретать, дорабатывать и настраивать фильтры ориентации, а не полагаться на готовые решения.
Благородная цель. Однако публика низка и ленна). Но ваша статья безусловно облегчила понимание. Спасибо.
А вот еще вопрос в догонку.
Поведение системы ориентации на земле, когда есть реакция опоры и в воздухе — две разные вещи.

Как отлаживать фильтры для дронов, чтобы не получить много удивления в момент отрыва аппарата от земли?
Сложный вопрос. Боюсь, удивляться придётся. Именно для дронов я фильтры не делал, но делал для самолётов и вертолётов. Там самая большая проблема была не с наличием или отсутствием реакции опоры, а с ускорениями и вибрациями. Более или менее адекватную имитацию этих условий (в смысле погрешностей датчиков) давал автомобиль — этим я пользовался в своём диссере. Во всяком случае, автомобиль намного больше похож на самолёт, чем стол :)
подвешивать и обдувать напольным вентилятором
Но точно не для дрона самолётного типа — там направленное движение и виражи играют слишком большую роль :)
Можно попробовать вначале вешать балластом на уже гарантированно летающего дрона не включая в управляющую схему.
Приведу здесь некоторую информацию, касательно фильтра Маджвика. Может быть, кому-нибудь она будет полезна. Это, кстати, по странному стечению обстоятельств говорит в пользу тезиса автора данного топика, о том, что не всегда стоит полагаться на готовые решения.

Я не очень сильно разбираюсь в математической подоплёке реализации фильтра, однако есть обсуждение фильтра Маджвика, где упоминается пара проблем в авторской реализации. Одна связана с быстрым обратным корнем. И вторая, как утверждается (ближе к концу обсуждения), в ошибочной реализации расчёта градиентов в версии с магнитометром для языка Си.

Выше упоминалось, о не слишком удачном опыте использования данного фильтра на arduino. Если посмотреть на одну из реализаций библиотеки для arduino, то она повторяет оригинальную авторскую версию на Си. Не знаю, может ли это быть одной из причиной. Мои эксперименты, пока, не дали однозначного ответа, насколько данные замечания критичны для работы фильтра.
Спасибо. Вопрос об ошибке в градиенте при использовании магнитометра уже поднимали в комментариях к тому посту, на который я ссылаюсь в начале. Для меня это ещё один аргумент в пользу фильтров с более «геометрическим» и наглядным корректирующим членом, чем у Маджвика.
Если кто-то интересуется работами Маджвика: у него есть три известных публикации по одноименному фильтру (2010, 2011 и 2014 гг.).
Наиболее известна публикация 2010 г. – она представляет собой отчет по НИОКР в Бристольском Университете (связанной с компьютеризированной хирургией, если правильно помню). В ней описаны принципы построения фильтра, формирующего кватернионы из сигналов трехосевых инерциальных датчиков – акселерометра, магнетометра и гироскопа и приведен пример его практической реализации. Приведены формулы для расчета коэффициентов фильтрации шума и систематической ошибки (дрейфа) сигналов гироскопа.
В 2011 г. Маджвик сотоварищи опубликовал вторую работу (тезисы выступления на конференции IEEE on Rehabilitation Robotics), в которой описаны принципы построения фильтра, формирующего кватернионы из сигналов трехосевых инерциальных датчиков – акселерометра, магнетометра и гироскопа и приведен пример его практической реализации. Кроме того, в ней приведена формула для расчета коэффициента фильтрации шума сигналов гироскопа и экспериментальные данные о влиянии величины этого коэффициента на параметры фильтра.
В 2014 г. он защитил в Бристольском Университете докторскую диссертацию на основе описанных выше разработок и затем потерял интерес к этой теме. Понятно, что диссертация – наиболее капитальная из его публикаций. Кто хочет разобраться – лучше читать именно ее.
1. Sebastian O.H. Madgwick. An efficient orientation filter for inertial and inertial/magnetic sensor arrays. Report x-io and University of Bristol (UK) vol. 25, 113–118, 30.04.2010
2. Sebastian O.H. Madgwick, Andrew J.L. Harrison, Ravi Vaidyanathan. Estimation of IMU and MARG orientation using a gradient descent algorithm. 2011 IEEE International Conference on Rehabilitation Robotics, Rehab Week Zurich, ETH Zurich Science City, Switzerland, June 29 – July 1, 2011
3. Sebastian O.H. Madgwick. AHRS algorithms and calibration solutions to facilitate new applications using low-cost MEMS. PhD Theses, Department of Mechanical Engineering, University of Bristol, Bristol, UK, 2014
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории