2014-01-13 4 views
4

КонтекстQuadcopter ПИД-регулятор

Моя задача состоит в том, чтобы спроектировать и построить регулятор скорости PID для микро Quadcopter чем мух в помещении. Комната, в которой летает квадроцикл, оснащена системой слежения за камерой с высокой точностью камеры, которая может обеспечивать как данные о скорости, так и положение для квадроцикла. Полученная система должна быть способна принимать целевую скорость для каждой оси (x, y, z) и приводить в действие квадроцикл с этой скоростью.

Управляющие входы для квадроцикла - это углы наклона валка/шаг/угол и процент тяги для высоты.

Моя идея - реализовать ПИД-регулятор для каждой оси, где SP - желаемая скорость в этом направлении, измеренное значение - это скорость, обеспечиваемая системой слежения, а выходное значение - угол рулона/высоты/угла поворота и соответственно.

К сожалению, поскольку это мой первый контакт с теорией управления, я не уверен, что я направляюсь в правильном направлении.

Вопросы

  • Я понимаю, основной принцип ПИД-регулятора, но он по-прежнему для меня неясным, как он может конвертировать скорость (м/с) в рулон/шаг/рыскания (радиан) путем суммирования ошибок и умножения на константу? Да, скорость и рулон/шаг прямо пропорциональны, так что означает, что умножение на правую константу дает правильный результат ?

  • Для случая вертикального регулятора скорости, если скорость установлена ​​на 0, квадроцикл должен фактически поддерживать свою высоту без восходящего или нисходящего. Как это можно интегрировать с ПИД-регулятором, чтобы значения тяги не равны 0 (должны оставаться парящими, а не падать), когда ошибка на самом деле равна 0? Должен ли я добавить постоянный термин для вывода?

  • Как только система будет реализована, что было бы хорошим подходом к настройке параметров усиления ПИД-регулятора? Ручная пробная версия и ошибка?

  • Следующий шаг в развитии системы является дополнительным слоем контроллеров позиции PID, которые принимают в качестве заданного значения требуемого положения (х, у, г), измеренные положения обеспечиваются внутренним слежения система, а выходы - скорости x/y/z. Это хороший подход? Причина разделения этих уровней управления PID заключается в том, что проект является частью более крупной структуры, которая способствует повторному использованию. Было бы лучше просто использовать один слой ПИД-регуляторов, которые непосредственно принимают координаты положения в качестве заданных значений и значений вали/тангажа/рыскания/тяги на выходе.

ответ

1
  • Это основная идея. Вы могли бы теоретически завершить работу с несколькими константами в системе, чтобы конвертировать из одной единицы в другую. В вашем случае ваши постоянные P, I, D будут неявно включать правильные коэффициенты пересчета. например, если в идеализированной системе вы хотите управлять углом обратной связью с P = 0,5 в градусах, то все, к чему у вас есть доступ, это скорость, и вы знаете, что 5 градусов наклона дают 1 м/с, тогда вы запрограммируйте контроллер P, чтобы умножить измеренную скорость на 0,1, и результатом будет управляющий вход для угла.
  • Я думаю, что лучший способ сделать это - реализовать ПИД-регулятор SISO не по высоте (h), а по вертикальной скорости (dh/dt) с процентом тяги в качестве выхода, но я не уверен в этом.
  • К сожалению, если вы не знаете заранее о параметрах, это будет единственный путь. Я рекомендую среду, которая не будет делать много вреда, если Quadcopter падает ...
  • Это звучит как хороший способ пойти
+3

после нескольких проб и ошибок это сработало. [Видеоролик YouTube] (https://www.youtube.com/watch?v=kC0z7a7aisg) – xabre

0

подход был правильным. Это заняло некоторое время, но после некоторых проб и ошибок это сработало. Результаты можно увидеть здесь: https://www.youtube.com/watch?v=kC0z7a7aisg

1

Мой блог может представлять интерес для Вас: http://oskit.se/quadcopter-control-and-how-to-really-implement-it/

Основной принцип легко понять. Настройка намного сложнее. Мне потребовалось больше времени, чтобы на самом деле выяснить, что нужно кормить в контроллере pid и мелочи, такие как знаки + и - на переменных. Но в конце концов я решил эти проблемы.

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

Начните с малого, создайте рабочий вертолет с помощью готового контроллера, а затем напишите свой собственный. Затем проверьте его и настройте и поэкспериментируйте. Вы никогда не будете по-настоящему понимать ПИД-контроллеры, если не попытаетесь самостоятельно построить вертолет. Моя библиотека разработки программного обеспечения для голого металла может помочь вам упростить работу с вашим программным обеспечением, не беспокоясь о внедрении драйвера. Ссылка: https://github.com/mkschreder/martink

Смежные вопросы