Плата управления квадрокоптером. Немного теории.


Для начала, давайте разберемся, зачем вообще нужна плата управления. Вон, на моделях самолетов летают без всякой «умной» электроники вообще, почему так нельзя летать на коптерах?

Дело в том, что классический самолет (планер) конструктивно обладает таким свойством как «устойчивость». «Устойчивость – свойство самолета восстанавливать без вмешательства пилота кинематические параметры невозмущенного движения и возвращаться к исходному режиму полета после прекращения действия возмущений».

Вот это свойство очень облегчает управление самолетом.


А коптер, конструктивно, таким свойством не обладает. Он «статически неустойчив» и при малейшем внешнем воздействии сразу начинается «неуправляемое снижение», проще говоря – коптер падает :) Притом, это насколько быстрый процесс, что реакции человека не хватает для того чтобы вручную попытаться стабилизировать коптер. Раз реакции человека не хватает – на помощь приходит электроника.

Как вы уже наверное поняли, основная задача платы управления – сделать наш летательный аппарат (ЛА) «устойчивым» и максимально упростить управление ЛА.

Дале, мы будем рассматривать наш коптер с точки зрения теории автоматизированного управления (ТАУ).

Для того, чтобы эффективно управлять системой нам нужно 3 вещи:

1. Знать, в каком состоянии мы хотим поддерживать систему;
2. Иметь возможность определить, в каком состоянии находится система в данный момент;
3. Иметь возможность оказывать управляющее воздействие на систему.

Для определения состояния системы мы воспользуемся различными датчиками (гироскопы, акселерометры, магнитометры и т. д.) Эти датчики обеспечат нам обратную связь.

Оказывать управляющее воздействие (в случае квадрокоптера) мы будем посредством изменения скорости вращения двигателей/винтов. Думаю здесь все понятно. Например, нужно развернуть коптер вокруг определенной горизонтальной оси – увеличиваем обороты одного двигателя и снижаем обороты противоположенного двигателя. Изменяя, на одинаковое значение, обороты сразу всех двигателей, мы изменяем общую подъемную силу, и можем управлять положением ЛА по высоте.

Теперь касательно пункта №1. Я знаю два подхода, которые применяются в платах управления, это управления по угловой скорости вращения вокруг осей и по абсолютному положению ЛА.

Управление по угловой скорости.

Во-первых, давайте разберемся — о каких углах идет речь. Так как коптер является ЛА, для обозначения углов используются авиационные термины:



Итак, есть три угла: тангажа (pitch), крена (roll) и рысканья (yaw).

Так вот, первая проблема, с которой приходится сталкиваться при управлении коптером – он самопроизвольно вращается по всем этим углам. Причем быстро, спонтанно и по всем трем одновременно. Если стабилизировать вращение по данным углам – поведение ЛА будет более предсказуемым, и управлять ним будет на порядок легче.

Есть такая популярная (в силу свой доступности) плата управления КуК. Вот она, как раз, и работает по принципу стабилизации вращения по углам. Говоря в терминах ТАУ, КуК это пропорциональный регулятор с обратной связью по угловой скорости.

Давайте разберемся, как данная плата управления работает (вся информация почерпнута из анализа последней отрытой прошивки данной платы).

Программа данной платы содержит основной «супер-цикл» регулирования. В каждом цикле, для каждого из трех углов, происходит следующее:

1. получаем моментальное значение угловой скорости с гироскопа (для данного угла).

2. нормируем полученное значение, и умножаем на некий коэффициент P. Этот коэффициент – пареметр пропорционального регулирования, в КуКе но устанавливается с помощью подстрочного резистора, установленного на плате.

3. Изменяем скорость вращения двигателей (на одной из осей коптера) на величину, полученную на предыдущем этапе. Для одного двигателя уменьшаем скорость вращения (на указанную величину), для противоположенного – увеличиваем. Это создает тягу, направленную в противоположенную сторону от вращения коптера (измененного на этапе 1), и тормозит вращение.

Алгоритм (1 – 3) повторяется для каждого из трех углов. После чего цикл начинается сначала.

Вот и все. При правильно подобранном коэффициенте P регулятор будет достаточно эффективно «тормозить» вращение коптера.

Летать на КуКе можно, и при хороших навыках – получается неплохо. Но, нужно понимать, что данный регулятор просто пытается свести к нулю значение угловой скорости. Он не знает, в каком положении относительно горизонта находится ЛА, не берет в расчет линейное перемещение ЛА. Если наш коптер уже перевернулся на 180 градусов и отвесно падает – регулятор на это никак не реагирует – если при падении вращения по осям нет (есть только линейное ускорение), регулировать КуКу нечего :)

Намного более перспективным является другой подход:

Стабилизация по абсолютному положению ЛА.

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

Но здесь есть одна большая сложность – готового «датчика», который бы позволял получить с достаточной точностью и оперативностью данные об абсолютном положении ЛА в пространстве нет. Вернее есть, но не для наших целей. Нам придется построит свой такой «датчик» (на самом деле это будет БИНС) используя более простые и доступные компоненты (акселерометры, гироскопы, магнетометры и т. д.). Сама по себе задача построения такой системы очень непростая. Плюс, мы не можем рассчитывать на сверхточные лазерные гироскопы и т. д. Мы будем использовать MEMS приборы, а это дополнительно усложняет задачу.

Предлагаю в следующей статье перейти к построению БИНС.

Данная статья является «пробной». Просто не уверен, что она соответствует тематике Сообщества. Боюсь, меня пошлют на авиамодельный форум :) Да и плата управления, с точки зрения схемотехники, ничего интересного не представляет. Берем МК, вешаем кучу датчиков на SPI/I2C, пишем программу :) А вот с точки зрения ТАУ и БИНС (и немного ЦОС) – задача, ИМХО, очень интересная.
  • +7
  • 18 марта 2012, 16:50
  • e_mc2

Комментарии (70)

RSS свернуть / развернуть
Пиши. Интересно. Но в качестве основы схемы ИМХО лучше взять какие-нить хорошие наработки в этой области и заняться прошивкой с GNU.
0
Спасибо! Взять за основу готовое решение – это абсолютно правильное и здравое решение. Тем, кто решил пойти по сложному пути и стоить плату управления с нуля – советую еще раз подумать :) В следующей статье будет описание того, с чем придется столкнутся.

Просто меня очень заинтересовала данная тематика. Сначала решил, что это просто, потом понял, насколько ошибался. Но поздно, я уже влез в тему и «сдаваться» не хочу.
0
Но, нужно понимать, что данный регулятор просто пытается свести к нулю значение угловой скорости.
В принципе, для управляемой модели этого достаточно. Более продвинутое управление нужно для начинающих пилотов и для беспилотного полета.

Хотя мне все же интересно, как именно чаще всего начинающие пилоты грохают коптер? Боком об землю? Дном? Или вообще перевернутый?
0
  • avatar
  • Vga
  • 18 марта 2012, 17:46
Имхо, основная проблема каптера в том, что он устойчив и управляем в относительно небольшом диапазоне углов по крену и тангажу. Стоит превысить угол (ошибка пилота, ветер) — и аэродинамика коптера резко меняется. Есть конечно спецы, которые летают с углами близкими к 90 градусов, но это никак не начинающие пилоты. А уж как именно он ударится об землю, не принципиально, здесь как «повезет».
0
в дополнение, рискну предположить по своему опыту начинающего, что наиболее частой ошибкой бывает раскачка по газу…
0
А у меня, как мне кажется, основная проблема — потеря ориентации. Т.е. я не понимаю (или не вижу, или напугался :-) где у коптера зад, а где перед. И поэтому не могу адекватно им управлять. В результате — коптер пытается от меня сбежать, я его — вернуть, потом — приземлить и… падение :-( Обычно боком в землю.
Если бы он умел при отпускании стиков просто останавливаться и ждать следующих команд… О, это было бы счастье!
Сделайте кто-нибудь такой полетный контроллер — и цены ему бы не было!!!
0
Ты ж вроде говорил, что у твоего есть автогоризонт и если отпустить стики — он сам выравнивается?
0
Да, он выравнивается. Тут три фактора срабатывают:
1. Он сохраняет скорость с которой летел в горизонтальном направлении.
2. Скорость выравнивания конечна
2. Пилот, т.е. я пытаюсь им управлять :-)
Более всего достает факт 1, т.к. если просто тупо выравнивать стики, а он при этом удаляется от меня со скоростью пару десятков км/ч — ничего хорошего не выйдет. Вот и пытаюсь его обратно завернуть, и… не попадаю с направлением воздействия, например, вместо того, чтобы лететь ко мне, он еще быстрее начинает лететь чуток левее прежней траектории. Что это? Как на это отреагировать? Что на пульте крутить? Начинаешь в другую сторону рулить — он делает бочку и… ломится вправо и вниз, пытаешься поднять и влево — и опять не попал, т.к. он уже успел повернуться вокруг оси и… втыкаешь его в землю, т.к. еще чуть-чуть и его уже видно вообще не будет.
Как так, весь сценарий и проходит :-)
0
Стоит налетать сначала на симуле наверное. Ещё немного помогает самому крутиться в соответстви с его положением, так голова легче воспринимает его «систему координат» и подстраивает рефлексы. Полностью невозможно повернуться как надо, но и частичный поворот помогает почувствовать его ориентацию. На пробу можно делать небольшой поворот по yaw и подстроаиваться под наблюдаемую реакцию.
0
ой… пардон — ерунду сказал, по yaw только заутает в установившемся крейсерском полёте. Думаю лучше креном, _очень_ нежно. Опять же, для меня, как для чела до этого вообще не летавшего, было большим открытием, что кренами надо работать сосвсем не так как я это представлял в теории. На практике приходится работать с кренами «импульсно», отклоняя стик на короткий период. С обязательным парированием/компенсацией в обратную сторону. Глубина манёвра зависит не только от величины отклонения но и от продолжительности.

У самого пока опыт крайне малый — обломал три винта на 500-й гайке и плотно засел за симуль :) Насколько я понял — гаечный GU-344 не сильно отличается от KK. Не для новичков.
0
Это нормально =) это общая проблема — не только начинающих. Как ни обозначай, но есть дистанция/высота на которой уверенно не разглядеть его ориентацию. Спасение в FPV imho.
0
А что такое FPV?
И вообще, не подскажете ресурс, где можно подробно почитать про различные уникальные модули и системы коптеров?
0
камера на вертолет, изображение транслируется на землю (на монитор/очки)
0
Я один из тех больных, кто задумал сделать квадрокоптер полностью сам.
Благо в универе ТАУ было основной дисциплиной)
Как раз хочу построить такой коптер, который будет стабилизироваться по всем углам и по высоте при отпускании ручек или отдельной кнопкой какой-нибудь.
0
Мне интересно, по какому сценарию грохается.
Сам-то я только с китайскими трехканальными вертолетиками игрался. Они обычно или врезаются в потолок/пол, пока не научишься высоту держать, или врезаются в препятствия из-за того, что удержать такую вертушку от вращения по рысканью крайне сложно — в результате она летит в рандомном направлении.
А вот как грохаются коптеры?
0
коптеры грохаются по-разному. зависит от креативности начинающего пилота. его можно сразу при взлете вверх тормашками перевернуть, можно, запутавшись в ориентации кабины (к пилоту, от пилота, сбоку) тоже грохнуть неплохо, а можно в опасной ситуации испытать панику и тогда результат будет вообще непредсказуем.

Поэтому, чтобы сюрпризов не было, надо начинать учиться летать на симуляторе и только затем на живом аппарате
0
А кто есть информация о проектах коптеров в натуральную величину, ну что бы человека мог везти… Про вертолёты я в курсе…
0
Летают, но just for fun.
0
Хорошо написано, очень буду ждать продолжения, например, про более продвинутые системы стабилизации более подробно. Зачем нужны акселерометры? А компас зачем? А почему оно болтается как го… о в проруби хотя даже ветра нет? :-) И еще миллион вопросов возникает, когда начинаешь изучать тему.
И хорошо бы перенести статью в блог про коптеры, он тут недавно появился :-)
0
Зачем нужны акселерометры? А компас зачем?
Вот об этом и пойдет речь в следующей статье :)
0
да, я бы тоже попросил написать о математике стабилизации (гиро + аксель + может быть компас) простыми словами. Всетки пока я вижу, что здесь, на ЕЕ, мысли лучше получается излагать, чем на RC форумах. И хоть ЕЕ специализированный ресурс, думаю, что можно обсуждать околокоптерные темы, но не уползая далеко. Типо выбор аппаратуры, камеры, двигателей. А вот принципы построения и прочее не будет оффтопом ;)
0
Вообще, коптер — как раз по специализации этого ресурса, т.к. на 99% состоит из электроники (точнее даже ПО, электроника там типовая — проц и плеяда датчиков, плюс драйверы движков).

Вообще, было бы интересно поэкспериментировать, но меня пока что жаба давит даже на 200 баксов на предельно дешевую платформу.
0
мочить жабу. ;) Мало того, что это полезно, так еще и дико увлекательно. Был рад как ребенок, когда наконец смог выполнить свой первый полностью управляемый полет. Сейчас доделал навеску FPV. Жду пока снег потает, чтобы можно было легко определять горизонт.
0
Как это ни печально, финансовое положение жабу поддерживает. Так что пока она побеждает…
0
ну чтож, пока есть время. Думаю, немного погодя, здесь все будет разжевано и китайцы подоспеют.
Появляются новые датчики. Сравнительно недавно такой — MPU6050 — гира и аксель в одном корпусе.
Так что не за горами время, когда плата коптера будет содержать всего 2-3 МС ;)
0
MPU6050 — гира и аксель в одном корпусе
Гм, разве это новость?
0
для меня была да. Месяца два назад как узнал )
0
Я имею в виду, аксель и гиро в одном корпусе. Вроде я такие уже встречал. Как минимум, когда ковырял китайский вимоут (или допсенсор М+ к нему ли).
0
у м+ внутрях только гира, у новых itg-3205 трехосевой, у старых связка из 2х + 1х. а вот в нунчаке аксель
0
Похоже надо написасть о синтезе регуляторов в общем случае, но это будет ещё дальше от тематики :)
0
Обязательно напишите.
0
Класная статья, мне понравилась, и жду продолжения! У меня самопальный коптер на КУКе и для его пилотирования нужно много опыта, благо нашол альтернативные прошивки в которых уменьшена чувствительность на повороты стыков.
На щет розработки из нуля платы мозгов, ето интересно. У меня была идея разработать типа шылд, как для ардуины, который бы втикался в КУКа из своим набором датчиков. Но знаний програмирования АВРок мало, уже год учу ассемблер без особых результатов.
0
Соглашусь со всеми предыдущими комментариями: жду продолжения, очень интересная тема.

Я к своему будущему коптеру уже закупил трехосевые гироскоп и акселерометр. Очень интересно почитать, как их них сделать навигационную систему. А вот насчет цифрового компаса у меня есть некоторые сомнения, ибо в роботе он у меня прижился плохо (любой относительно металлический предмет в радиусе 30 сантиметров — и компас показывает какой-то совершенно рандомный угол :(, равно как и движение по наклонной плоскости, но это хотя бы можно компенсировать гироскопом).
Кстати, автоматическую посадку можно делать с помощью ультразвукового датчика (он метра на три фигачит), а избегать столкновений со стенками — четырьмя инфракрасными дальномерами (есть у Sharp такие, от 40 см до 1.5 метров), но это наверно актуально при полётах внутри помещений.
+1
Спасибо за поддержку. Но, дабы никого не сбивать с толку, сразу скажу, что статей типа «Феерическая расстановка точек над БИНС», не будет. Я (ИМХО) достаточно углубился в «тему», получаю неплохие результаты. Но пока они не выходят за рамки того, что представляет «покупная» плата управления среднего уровня. Просто есть некий опыт, которым хочется поделится.

По поводу цифрового компаса – там действительно хватает проблем. У неплохого MESM магнетометра погрешность измерения около 10 градусов (это в идеальных условиях).
0
А феерическую расстановку точек и не надо :) А вот «опыт, которым хочется поделиться» — как раз то, что нужно.
0
с ИК и УЗ датчиками уже все сделано ;)
А вот компас очень полезная штука. Коптер всетки летает на открытом пространстве, там наводок много не должно быть. НО пришли уже к общему выводу, что плату с компасом надо выносить подальше от силовых проводов. Тогда показания будут чище
0
А по-другому, кроме компаса, можно как-то текущий угол узнать? По сигналам GPS — так это шустрое движение надо, то есть, просто зависнуть в одной точке и поворачиваться на 20 градусов (например, для панорамной съёмки) не получится…
0
Стабилизация по абсолютному положению ЛА
«абсолютное положение» предполагает наличие системы координат. Какие они применительно к ЛА? Читал, что используют кватернионы…
0
Для определения «абсолютного» положения, мы можем сами выбрать любую систему отсчета. В случае ЛА – логично привязать систему отсчета к Земле.

А кватернион – это элемент мат. аппарата (система гиперкомплексных чисел), который часто используют в теории БИНС.
0
Эхехе) И тут кватернионы)
А вообще, они не относятся к системе координат. Это всего лишь способ представить трехмерное вращение в удобной для расчетов форме (всем известные углы Эйлера (Yaw/Pitch/Roll), например, очень неудобно интерполировать).
0
привязать систему отсчета к Земле
т.е. обычные 3-х мерные декартовы координаты? не сферические, цилиндрические и т.д… чисто из праздного любопытства
0
Пишите обязательно. Настройка и калибровка датчиков очень интересна. Да и применение кватернионов.

По прозвучавшему вопросу: «зачем нужен аксель» — ну например чтоб горизонтировать платформу. Только вот при ускорениях в движении будут возникать сложности, потому как придется отфильтровывать мусор.
0
В следующей статье ожидаю увидеть не просто гироскопы/акселерометры/магн. датчики, а также GPS, барометр ну и синтез и настройка фильтра калмана, настройка ПИД регуляторов =) Кватернионы считаю в этих задачах лишними, матрицы поворота вполне достаточно, не игры рисуем всё же.
0
Да вот не факт, что лишние… Я матрицы поворота и так и этак к компасу прикручивал, а в итоге… опа получалась. Скорее всего я конечно сам дурак, но не факт…
0
По сути кватернион это не что иное как нормированный вектор ориентации в пространстве с немного другой математикой. Один фиг его потом на практике приходится преобразовывать в углы Эйлера и смысл их использования теряется.
0
Зачем преобразовывать в углы?
0
Потому что в авиации для управления используются интуитивно понятные углы крен, тангаж и курс (он же рысканье). Но если Вы можете в уме оперировать с гиперкомплексными числами и можете представить ориентацию объекта в 4-мерном пространстве по одному действительному и трём мнимым числам то преобразовывать наверное не надо.
0
с квантернионом вроде сама матрица преобразования проще получается, но дополнительные преобразования так и так жрут ресурс.
0
Физический смысл кватерниона не так уж и сложен. Насколько я помню, три числа задают вектор, вокруг которого вращать и четвертое — угол, на который вращать.
Да и представлять не требуется, требуется посчитать управляющие воздействия.
0
Если бы там был угол, то при переходе от 359 к 0 градусов был бы разрыв в отображении кватерниона на группу вращений, но этого нет.
0
Нда, помню я таки неправильно. На самом деле, мне помнилась формула
q=(cos(Θ/2), u*sin(Θ/2)).
Во многом она похожа на задание поворота в OpenGL, где как раз-таки и задаются вектор оси вращения (u) и угол (Θ), но на деле больше похожа на матрицу вращения, только записанную в другом пространстве (а вообще, этот матан я понимаю с трудом, больше знаком с его следствиями и применением).

В любом случае, кватернион гораздо удобнее для связанных с вращением расчетов и не подвержен таким проблемам углов Эйлера, как блокировка вращения. Один из знакомых программистов-трехмерщиков, насколько я помню, в своем движке вообще отказался от углов эйлера и матриц поворота в пользу кватернионов.
А у коптера в основном с углами работать и надо — положение по линейным координатам, насколько мне известно, вообще никто в них не стабилизирует. Высоту, разве что.
0
Да я тоже не все хорошо понимаю, в случае кватернионов было бы позезно знать, что такое SO(3), двулистное накрытие, гомоморфизм, но я не знаю. И пока ещё не понял, что такое параметры Родрига-Гамильтона.
0
Улы понятны только пока отклонения от нуля не велики.
0
Имхо, выбор мат. аппарата в данном случае не столь принципиален. Во многих существующих проектах вообще применятся очень упрощенная реализация. Не престаю удивляться, как такая упрощенная реализация вообще может летать и показывать неплохие результаты :). Про КуК я уже рассказывал. В следующей статье коснемся другого проекта — MultiWII. MultiWII v1.9 обеспечивает «честную» стабилизацию по крену и тангажу. А внутри практически все сведено к целочисленной арифметике. Они используют матицу поворота, но при этом везде используют аппроксимацию для малых углов (хотя углы не такие уж и «малые» ). У них в реализации SIN(X) = X, COS(X) = 1.
0
Увы, но фильтра Калмана не будет. Будет комплементарный фильтр.
0
Пишите продолжение! Как это не соответствует тематике — можно сказать на самом переднем крае хоббийного применения электроники, да и в Рунете сделано пока очень мало в этом направлении.
Сам начинаю «заболевать» мультикоптерами, особенно интересна возможность в перспективе полетать с FPV.
0
Переразвел вот эту плату для своих коптеров.

www.pololu.com/catalog/product/1265

Когда будем тестировать — отпишусь.
0
аксель цифровой, а какой для его обработки мозг используете?
0
Вероятно, одну из вариаций Ардуины. То есть Мегу168.
Возможно, попробуем подключиться на ту плату, что с микрокоптер.де.
0
Эх. почему то во всех встреченных готовых прошивках регулятор сделан с точки зрения ТАУ абсолютно безумно) вообще интересная тема, если хорошо посидеть то можно вполне сделать быстродействующий ПИД-регулятор, потому что математика там достаточно простая(ну почти), только вот в железяке это реализовывать почему то не получается)
0
  • avatar
  • mart
  • 21 марта 2012, 14:07
Начитался в последнее время столько про коптеры, теперь(как и многие другие, наверное) загорелся идеей сваять квадрокоптер. Причем хочу взять готовую раму и дистанционное управление(ДУ), а контроллерную часть делать самостоятельно. Имеет ли смысл такой подход? Большие ли сложности возможны при сопряжении «своих мозгов» с готовым ДУ? И еще просьба накидать ссылок на места продажи рам для коптеров :)
0
паркфлайер ака хоббикинг
0
Посоветуйте материалы по расчету пропеллеров и двигателей. Интересуют например как правильно рассчитать диаметр, мощность двигателя и т.д. в зависимости от различных параметров. В интернете искал, там в большинстве случаев просто говорят «возьми такой-то двигатель, такой-то пропеллер и не морочь голову» либо дают непонятно от куда взятую формулу. Подозреваю, что можно применить что-то из теории для вертолетов. Что посоветуете? Желательно книги, так как там обычно более основательный подход.
0
Увы, по данному вопросу ничего подсказать не могу, т. к. не интересовался расчетом ВМГ, пользовался готовыми решениями уровня «возьми такой-то двигатель, такой-то пропеллер …»
0
Хотя это и не «материалы» (разве что если в сырки глянуть...), но если стоит задача посчитать ВМГ, а не вникнуть в теорию — в инете водятся онлайн-калькуляторы.
0
  • avatar
  • Vga
  • 22 сентября 2015, 18:08
Недавно мысль пришла — а что, если сделать не перпендикулярные винты, а с некоторым развалом, возможно, регулируемым? По-моему, система была бы намного устойчивее, т.к. находилась бы на дне воздушной ямы. Если интересно, могу прикинуть на рисунке.
+1
0
Не восстановиться. Вы взяли только вертикальную проекцию F1, но проигнорировали горизонтальную, а она будет наклонять коптер вправо. Можно просто сложить вектора F1 и F2 и вы увидите, что результирующий вектор будет направлен вверх и вправо (как и в случае с перпендикулярной установкой двигателей)
+2
Практика — критерий истины, по ВИЛ :)
Я б рискнул, при наличии ингредиентов и хотя бы свободных выходных.
0
Висеть будет хорошо, маневрировать плохо.
-1
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.