Я делаю квадрокоптер. Я установил ПИД-петлю, чтобы стабилизировать ее до заданного угла Эйлера (тангажа и крена). Проблема возникает, когда крен приближается к 90 градусам (45 градусов и выше). Значения больше не имеют смысла, так как они приближаются к замку карданного подвеса. Я намерен заставить его выполнять сложные маневры, такие как зацикливание и т. Д., Которые превышают 45-градусный предел крена.
Как я могу использовать кватернионы, чтобы преодолеть эту проблему? (Я получаю кватернионы от MPU-9150.) Я прочитал много статей по вопросу о кватернионах, но все они говорят о вращениях в программном обеспечении 3D и анимации между двумя точками вращения. Это не имеет большого смысла, так как я не знаю мнимых чисел и матриц.
quadcopter
pid
stability
Друг ким
источник
источник
Ответы:
Квадрокоптер содержит (помимо прочего) два отдельных и независимых алгоритма: алгоритм оценки ориентации и алгоритм управления.
Алгоритм оценки ориентации вычисляет информацию об ориентации квадрокоптера: углы крена, тангажа и рыскания.
Алгоритм управления отвечает за управление двигателями таким образом, чтобы ориентация квадрокоптера соответствовала тому, что ожидает пилот (или программное обеспечение автопилота). Этот алгоритм предназначен для считывания оцененных углов квадрокоптера (из алгоритма оценки положения) и изменения скорости двигателя, чтобы попытаться соответствовать желаемым углам. PID - это подходящий алгоритм управления для квадрокоптеров.
Блокировка подвеса - это явление, которое может происходить в алгоритме оценки отношения. Это не имеет ничего общего с алгоритмом управления. Таким образом, вам не нужны ESC, двигатели или пропеллеры для проверки блокировки карданного подвеса: вы можете изменить свой код для отображения углов крена, наклона и рыскания, а также проверить, что правильные значения рассчитываются при ручном перемещении квадрокоптера. Вы можете сделать это с помощью квадрокоптера, подключенного к компьютеру, через Bluetooth или другими способами, в зависимости от вашей платформы.
Если углы рассчитаны правильно, вам не нужно беспокоиться о кватернионах. Если они не рассчитаны правильно, кватернионы могутпомочь тебе. Алгоритм оценки ориентации должен выводить 3 угла для использования алгоритмом управления, однако он может использовать другое внутреннее представление, такое как кватернионы или матрицы 3х3. В этом случае он все равно преобразует информацию об ориентации в углы, чтобы предоставить пригодные данные для алгоритма управления. Вообще говоря, кватернионы не интуитивны, но эффективны в вычислительном отношении. Это делает их хорошо подходящими для медленных платформ, таких как Arduino. Матрицы или углы могут быть более легким выбором для более быстрого оборудования. Если вам нужно, чтобы я подробно остановился на одном или другом решении, пожалуйста, дайте мне знать, но было бы преждевременно давать подробности на данном этапе, поскольку я не уверен, что вам нужно внедрять кватернионы.
Наконец, если углы рассчитаны правильно, способ сделать вашу петлю квадрокоптера состоит в контроле угловой скорости, а не угла. Если ваши палки представляют угол квадрокоптера, то сделать полный цикл невозможно: попробуйте визуализировать положение палочек по мере петли квадрокоптера, и вы должны понять, почему. Однако, если палочки контролируют угловую скорость, вы можете контролировать скорость, с которой они вращаются.
Удачи с вашим проектом!
Примечание. Для простоты я не упомянул теоретический вариант манипулирования данными в виде матриц или кватернионов как в алгоритме оценки ориентации, так и в алгоритме управления. Я никогда не видел квадрокоптер, реализующий такие алгоритмы.
источник
Во-первых, я думаю, вам нужно вернуться и посмотреть на свой код. Блокировка карданного подвеса является проблемой только тогда, когда вы приближаетесь (в пределах пары градусов) к 90. Если вы видите странное поведение при 45 градусах, то причина кроется в другом.
Что касается вашего вопроса, кватернионы обычно не используются напрямую в базовом ПИД-контроле, поскольку они имеют сложное поведение, приводящее к неинтуитивным результатам. Обычно они либо преобразуются в углы Эйлера, а затем используются в обычном ПИД-контроллере, либо для их использования предназначены специальные нелинейные контроллеры.
Обратите внимание, что для ваших петлевых маневров PID обычно не очень хороший контроллер: коэффициенты усиления, которые хорошо работают при наведении, больше не работают при больших углах. Обычно, когда кто-то хочет сделать цикл, он идет по «разомкнутому циклу», то есть он начинает маневр под контролем, а затем, когда он проходит определенный угол, просто применяет фиксированный ряд команд, пока не завершит цикл. Выяснение того, какую фиксированную серию команд использовать, является сложной частью и часто использует обучение с подкреплением (что-то вроде формального способа проб и ошибок).
источник
Serial Chart
( code.google.com/p/serialchart ). Вход - это прямой выход Эйлера из I2CDevLib (MPU-9150). Я проверю немного больше. «Ошибка» могла быть вызвана неточными движениями мной.Эта статья Эмиля Фреска и Джорджа Николакопулоса « Контроль ориентации на основе полного кватерниона для квадротора » демонстрирует, чего вы пытаетесь достичь.
источник
Этот бесплатный курс MOOC, Добро пожаловать в AUTONAVx от TUMx! Автономная навигация для летающих роботов , может помочь. Это покрывает:
источник