Как использовать кватернионы для подачи контура стабилизации ПИД-квадрокоптера?


9

Я делаю квадрокоптер. Я установил ПИД-петлю, чтобы стабилизировать ее до заданного угла Эйлера (тангажа и крена). Проблема возникает, когда крен приближается к 90 градусам (45 градусов и выше). Значения больше не имеют смысла, так как они приближаются к замку карданного подвеса. Я намерен заставить его выполнять сложные маневры, такие как зацикливание и т. Д., Которые превышают 45-градусный предел крена.

Как я могу использовать кватернионы, чтобы преодолеть эту проблему? (Я получаю кватернионы от MPU-9150.) Я прочитал много статей по вопросу о кватернионах, но все они говорят о вращениях в программном обеспечении 3D и анимации между двумя точками вращения. Это не имеет большого смысла, так как я не знаю мнимых чисел и матриц.


Вы решили свою проблему? Если нет, пожалуйста, дайте нам знать, как это происходит, в противном случае вы можете принять один из ответов.
marcv81

1
@ marcv81 Да, сейчас все работает очень хорошо. Спасибо, что напомнили мне принять ответ :)
Друг Ким,

Я рад, что это работает. Это заставило меня подумать о своем собственном коде и исправить ошибку тоже :)
marcv81

Ответы:


6

Квадрокоптер содержит (помимо прочего) два отдельных и независимых алгоритма: алгоритм оценки ориентации и алгоритм управления.

Алгоритм оценки ориентации вычисляет информацию об ориентации квадрокоптера: углы крена, тангажа и рыскания.

Алгоритм управления отвечает за управление двигателями таким образом, чтобы ориентация квадрокоптера соответствовала тому, что ожидает пилот (или программное обеспечение автопилота). Этот алгоритм предназначен для считывания оцененных углов квадрокоптера (из алгоритма оценки положения) и изменения скорости двигателя, чтобы попытаться соответствовать желаемым углам. PID - это подходящий алгоритм управления для квадрокоптеров.

Блокировка подвеса - это явление, которое может происходить в алгоритме оценки отношения. Это не имеет ничего общего с алгоритмом управления. Таким образом, вам не нужны ESC, двигатели или пропеллеры для проверки блокировки карданного подвеса: вы можете изменить свой код для отображения углов крена, наклона и рыскания, а также проверить, что правильные значения рассчитываются при ручном перемещении квадрокоптера. Вы можете сделать это с помощью квадрокоптера, подключенного к компьютеру, через Bluetooth или другими способами, в зависимости от вашей платформы.

Если углы рассчитаны правильно, вам не нужно беспокоиться о кватернионах. Если они не рассчитаны правильно, кватернионы могутпомочь тебе. Алгоритм оценки ориентации должен выводить 3 угла для использования алгоритмом управления, однако он может использовать другое внутреннее представление, такое как кватернионы или матрицы 3х3. В этом случае он все равно преобразует информацию об ориентации в углы, чтобы предоставить пригодные данные для алгоритма управления. Вообще говоря, кватернионы не интуитивны, но эффективны в вычислительном отношении. Это делает их хорошо подходящими для медленных платформ, таких как Arduino. Матрицы или углы могут быть более легким выбором для более быстрого оборудования. Если вам нужно, чтобы я подробно остановился на одном или другом решении, пожалуйста, дайте мне знать, но было бы преждевременно давать подробности на данном этапе, поскольку я не уверен, что вам нужно внедрять кватернионы.

Наконец, если углы рассчитаны правильно, способ сделать вашу петлю квадрокоптера состоит в контроле угловой скорости, а не угла. Если ваши палки представляют угол квадрокоптера, то сделать полный цикл невозможно: попробуйте визуализировать положение палочек по мере петли квадрокоптера, и вы должны понять, почему. Однако, если палочки контролируют угловую скорость, вы можете контролировать скорость, с которой они вращаются.

Удачи с вашим проектом!

Примечание. Для простоты я не упомянул теоретический вариант манипулирования данными в виде матриц или кватернионов как в алгоритме оценки ориентации, так и в алгоритме управления. Я никогда не видел квадрокоптер, реализующий такие алгоритмы.


Спасибо за исчерпывающий ответ! Сотрудник InvenSense сказал, что в большинстве приложений кватернионы были проще и лучше, чем углы Эйлера. Глядя на привязанные данные, кажется, что можно исправить одну ось, чтобы остановить блокировку карданного подвеса, когда это должно произойти.
Друг Ким

1
Углы Эйлера - плохой выбор для внутреннего представления ориентации. Их просто визуализировать, но очень трудно правильно манипулировать, чтобы избежать блокировки карданного подвеса. Кватернионы лучше, потому что вы не наткнетесь на замок карданного подвеса, но их трудно визуализировать. Матрицы как-то легче визуализировать, чем кватернионы, но не так эффективно, если ваша платформа медленная. Мой квадрокоптер использует кватернионы внутри, но преобразует их в углы Эйлера для использования PID.
marcv81

3

Во-первых, я думаю, вам нужно вернуться и посмотреть на свой код. Блокировка карданного подвеса является проблемой только тогда, когда вы приближаетесь (в пределах пары градусов) к 90. Если вы видите странное поведение при 45 градусах, то причина кроется в другом.

Что касается вашего вопроса, кватернионы обычно не используются напрямую в базовом ПИД-контроле, поскольку они имеют сложное поведение, приводящее к неинтуитивным результатам. Обычно они либо преобразуются в углы Эйлера, а затем используются в обычном ПИД-контроллере, либо для их использования предназначены специальные нелинейные контроллеры.

Обратите внимание, что для ваших петлевых маневров PID обычно не очень хороший контроллер: коэффициенты усиления, которые хорошо работают при наведении, больше не работают при больших углах. Обычно, когда кто-то хочет сделать цикл, он идет по «разомкнутому циклу», то есть он начинает маневр под контролем, а затем, когда он проходит определенный угол, просто применяет фиксированный ряд команд, пока не завершит цикл. Выяснение того, какую фиксированную серию команд использовать, является сложной частью и часто использует обучение с подкреплением (что-то вроде формального способа проб и ошибок).


Спасибо за ваше понимание. Я совершенно новичок в программировании голого металла. Я только сделал программирование высокого уровня. Я также очень интересуюсь физикой и математикой, хотя я только что закончил среднюю школу, так что я все еще не слишком много знаю ...
Друг Ким

Я делаю это с другом, и мы сами "изобрели" цикл PID. Привыкнув к «правильному» ответу, нам было очень трудно использовать его, не зная, что это обычный способ решения нашей проблемы. И когда мы обнаружили цикл PID в Википедии, наш собственный изобретенный цикл PID был «одобрен».
Друг Ким

Поэтому я очень ценю ваше понимание того, как это обычно делается в рабочих проектах. Странное поведение, о котором я говорю, проявилось при взгляде на график в Serial Chart( code.google.com/p/serialchart ). Вход - это прямой выход Эйлера из I2CDevLib (MPU-9150). Я проверю немного больше. «Ошибка» могла быть вызвана неточными движениями мной.
Друг Ким

Ролл это синяя линия. Красный - рыскание, зеленый - высота, синий - рулон. Как видите, проблемы начинаются примерно с пи / 4 и выше. Это проблема с I2CDevLib, или она «должна» быть такой? screencast.com/t/svPV3C8B Я поворачиваю гироскоп на 360 градусов вокруг оси крена.
друг Ким

Я видел, как AeroQuad способен стабилизироваться даже после того, как его выбросили в воздух. Это потому, что сначала он заботится о крене, затем о тангаже, а затем о рыскании?
друг Ким

3

Эта статья Эмиля Фреска и Джорджа Николакопулоса « Контроль ориентации на основе полного кватерниона для квадротора » демонстрирует, чего вы пытаетесь достичь.

Аннотация - Цель данной статьи - представить новую схему управления на основе кватернионов для задачи управления ориентацией квадротора. Кватернион - это гиперкомплексное число ранга 4, которое можно использовать, чтобы избежать присущей ему геометрической сингулярности при представлении динамики твердого тела с углами Эйлера или сложности наличия связанных дифференциальных уравнений с матрицей направляющих косинусов (DCM). В представленном подходе как модель ориентации квадротора, так и предложенный нелинейный пропорциональный квадрат ( P 2) алгоритм управления был реализован в кватернионном пространстве, без каких-либо преобразований и вычислений в угловом пространстве Эйлера или DCM. На протяжении всей статьи анализируются и обсуждаются достоинства предложенного нового подхода, а эффективность предлагаемого нового контроллера на основе кватернионов оценивается с помощью расширенных результатов моделирования.


2
Спасибо за соответствующую статью @ jgkim2020. Но можете ли вы уточнить это? Возможно, подведем итоги работы? (Ссылки могут устареть в конце концов). Вы также можете проверить, как ответить
Бен

1
Я согласен с Беном - резюме статьи было бы здорово, так как смерть ссылки обычно происходит через некоторое время.
Greenonline

2

Этот бесплатный курс MOOC, Добро пожаловать в AUTONAVx от TUMx! Автономная навигация для летающих роботов , может помочь. Это покрывает:

  • Теория обучения
  • Упражнение по программированию Quadcoptor, которое работает как на стимуляторе, так и на реальном оборудовании

Ссылка не работает.
друг Ким

Ссылка работает, если вы вошли в систему.
Друг Ким

Видео 1.4 имеет демоверсию множества квадроторов, выполняющих удивительные действия. Надеюсь, вы заинтересовались этой темой.
EEd

Может проверить программное обеспечение FreeIMU, которое предоставляет: а) объединенные данные от нескольких датчиков (гироскоп скорости, компас, акселерометр), предоставляя более стабильные, менее дрейфующие и точные данные, чем просто считывание необработанных данных из микросхемы b), предоставляя несколько выходных форматов, включая высоту тона, вращаться и рыскать, что может быть проще для визуализации, понимания и использования.
EEd

Спасибо за помощь. Я использую MPU-9150, который имеет встроенный DMP (датчик синтеза) как гироскопа, так и акселерометр. Слияние этого с магнитометром должно быть сделано вручную.
друг Ким
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.