Управляем квадрокоптером с помощью Arduino »

Самолеты

Математика стабилизации, пид-регуляторы (pid)

Если вы решили заняться мультикоптерами, то рано или поздно вам придется столкнуться с настройкой ПИД-регулятора, поскольку этот математический аппарат применяется почти во всех задачах стабилизации: стабилизация углов квадрокоптера в воздухе, полет и удержание позиции по GPS, удержание высоты по барометру, бесколлекторные механизмы стабилизации видеокамеры в полете (подвес камеры).

Вы приобретаете двухосевой подвес для камеры, ставите туда, например, GoPro, включаете и вместо стабилизации получаете конвульсии, вибрации и дергания, хотя все датчики откалиброваны и механические проблемы устранены. Причина — неверные параметры ПИД-регуляторов.

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

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

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

Будем рассматривать квадрокоптер в двумерном пространстве, где у него есть только один угол — угол крена, и два мотора: левый и правый.

В полетный контроллер непрерывно поступают команды с земли: «крен 30 градусов», «крен -10 градусов», «крен 0 градусов (держать горизонт)»; его задача — как можно быстрее и точнее их выполнять с помощью моторов с учетом: ветра, неравномерного распределения веса квадрокоптера, неравномерного износа моторов, инерции квадрокоптера и т.п.

Смотрите про коптеры:  Что такое робот? Робот является автоматическим устройством.

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

На Adruino вполне можно одну итерацию цикла обработки и управления уместить в 10 миллисекунд. Это значит, что раз в 10 миллисекунд будут считываться показания углов квадрокоптера, и на их основе будут отправляться управляющие сигналы к моторам. Эти 10 миллисекунд называют периодом регулирования
. Понятно, что чем он меньше, тем чаще и точнее происходит регулирование.

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

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

Представим ситуацию: поступает команда «держать горизонт» ( = 0), а квадрокоптер имеет крен влево:

— разность (ошибка) между и , которую контроллер стремится минимизировать.

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

Здесь P — коэффициент пропорциональности. Чем он больше, тем сильнее будет реакция, тем резче квадрокоптер будет реагировать на отклонение от требуемого угла крена. Эта интуитивно понятная и простая формула описывает работу пропорционального регулятора
.

За несколько десятков миллисекунд (несколько итераций цикла обработки) под воздействием пропорционального регулятора квадрокоптер вернется в требуемое (в данном случае горизонтальное) положение. Все это время ошибка и усилие будут иметь один и тот же знак, хоть и становиться все меньше по модулю.

Набрав какую-то скорость поворота (угловую скорость) квадрокоптер просто перевалится на другой бок, ведь никто его не остановит в требуемом положении. Все равно что пружина, которая всегда стремится вернуться в начальное положение, но если ее оттянуть и отпустить — будет колебаться, пока трение не возьмет верх. Конечно, на квадрокоптер тоже будет действовать трение, но практика показывает, что его не достаточно.

По этой причине в пропорциональный регулятор нужно добавить еще одно слагаемое, которое будет тормозить вращение квадрокоптера и препятствовать перерегулированию (переваливанию в противоположную сторону) — своего рода имитация трения в вязкой среде: чем быстрее поворачивается квадрокоптер, тем сильнее надо пытаться его остановить, конечно, в разумных пределах. Скорость вращения (скорость изменения ошибки) обозначим как , тогда:

где D — настраиваемый коэффициент: чем он больше, тем сильнее останавливающее усилие. Из школьного курса физики всплывают смутные воспоминания, что скорость изменения любой величины — производная этой величины по времени:

И вот пропорциональный регулятор превращается в пропорционально-дифференциальный (пропорциональное слагаемое и дифференциальное):

Ошибку вычислить легко, ведь на каждой итерации мы знаем и ; P и D — настраиваемые перед запуском параметры. Для вычисления производной (скорости изменения ) необходимо хранить предыдущее значение, знать текущее значение и знать время, которое прошло между измерениями (период регулирования). И вот она — физика шестого класса школы (скорость = расстояние / время):

— период регулирования; — значение ошибки с предыдущей итерации цикла регуляции. Кстати, эта формула — простейший способ численного дифференцирования, и он нам здесь вполне подойдет.

Теперь у нас есть пропорционально-дифференциальный регулятор в плоском «бикоптере», но осталась еще одна проблема. Пусть левый край будет весить чуть больше правого, или, что то же самое, левый мотор работает чуть хуже правого. Квадрокоптер чуть наклонен влево и не поворачивается обратно: дифференциальное слагаемое равно нулю, а пропорциональное слагаемое хоть и принимает положительное значение, но его не хватает, чтобы вернуть квадрокоптер в горизонтальное положение, ведь левый край весит чуть больше правого. Как следствие — квадрокоптер будет все время тянуть влево.

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

Как же это поможет? Если пропорционального слагаемого не достаточно, чтобы исправить маленькую ошибку, но она все равно есть — постепенно, со временем, набирает силы интегральное слагаемое, увеличивая реакцию и квадрокоптер принимает требуемый угол крена.

Тут есть нюанс. Предположим равна 1 градусу, цикл регулирования — 0.1с. Тогда за одну секунду сумма ошибок примет значение 10 градусов. А если цикл обработки — 0.01с, то сумма наберет аж 100 градусов. Чтобы за одно и тоже время интегральное слагаемое набирало одно и тоже значение при разных периодах регулирования, полученную сумму будем умножать на сам период регулирования.

Эта формула — не что иное, как численный интеграл по времени функции в интервале от нуля до текущего момента. Именно поэтому слагаемое называется интегральным:

где T — текущий момент времени.
Пришло время записать окончательную формулу пропорционально-интергрально-дифференциального регулятора:

где — один из настраиваемых параметров, которых теперь трое: . Эта формула удобна в применении из программного кода, а вот формула, которая приводится в учебниках:

Существует несколько ее вариаций, например, можно ограничить модуль интегрального слагаемого, чтобы он не превысил определенный допустимый порог (мы так и будем делать).

Эволюция систем управления беспилотных летательных аппаратов: от появления до наших дней

Аннотация: в данной статье приведена ТРИЗ-эволюция систем управления беспилотными летательными аппаратами, начиная с первых и заканчивая современными, с их описанием, техническими противоречиями и возможным дальнейшим развитием.

Ключевые слова: система управления, беспилотный летательный аппарат, БПЛА. 

Annotation: In this article we present TRIZ-evolution of control systems of unmanned aerial vehicles, that is starting with the original and ending with the modern, with their description, technical contradictions and possible further development. 

Keywords: control system, unmanned aerial vehicle, UAV. 

В настоящее время беспилотные летательные аппараты (БПЛА) достаточно сильно развиты и имеют широкий круг применений. За век своего существования БПЛА как увеличились в своих размера до десятков метров, так и уменьшились до нескольких миллиметров; их диапазон скорости, грузоподъёмности тоже  существенно расширился.

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

Как всегда бывает, первыми БПЛА разрабатывали военные, и только в XXI веке началось активное развитие БПЛА гражданского назначения. 

1.      Исторически первый БПЛА. 

Исторически первым БПЛА считается «Жук» Кеттеринга (см. рис. 1). Это один из первых успешных проектов беспилотного летательного средства. По заказу армии США в 1917 году изобретатель Чарльз Кеттеринг разработал свою экспериментальную беспилотную «воздушную торпеду», которая стала предшественником крылатых ракет. Целью было создать дешёвый и простой беспилотный самолёт-снаряд для армейского авиационного корпуса.

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 1 – Жук Кеттеринга. 

Аппарат получился достаточно компактный, в отличие от «крылатой бомбы» Сперри, разрабатываемой и испытываемой в тоже время. «Жук» имел цилиндрический корпус из дерева, к которому крепилась бипланная V-образная коробка. 

Беспилотное средство было оснащено дешёвым четырёхцилиндровым двигателем и инерциальной автоматической системой управления. После старта, питающийся электричеством от двигателя, гироскоп обеспечивал стабилизацию «Жука» по направлению [1]. Гироскоп был соединён с вакуум-пневматическим автопилотом (рис. 2), который осуществлял управление рулём направления. Блок-схема системы управления «Жука» представлена на рисунке 3.

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 2 – Вакуум-пневматический автопилот (пример)

Управление рулём высоты осуществлялось аналогичным образом, но датчиком в этом случае уже являлся барометрический альтиметр.  

Перед стартом на беспилотном аппарате задавали значение высоты и максимальное количество оборотов пропеллера, что соответствовало пройденному расстоянию; раскручивали гироскоп. Запуск происходил с рельсовой катапульты, «Жук» выходил на заданную высоту и летел по прямой в сторону цели. Специальное устройство отсчитывало обороты пропеллера и по достижении нужного расстояния (количества оборотов пропеллера сравнялось с заданным), высвобождался пружинный механизм, который отключал двигатель и выбивал болты, держащие крылья. Корпус аппарата падал вниз и достигал цели. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 3 – Блок-схема системы управления  

«Жук» Кеттеринга предназначался для обстрела городов, крупных промышленных центров и мест сосредоточения войск противника на дистанции до 120 км. Он успешно прошёл испытания, в отличие от «воздушной торпеды» Сперри, и был прият на вооружение. Система показала себя лучше, успешней и дешевле предыдущих, но Первая мировая война закончилась, и заказ так и не был выполнен [1]. Всего было изготовлено 45 машин.  

У «Жука» Кеттеринга были реализованы простейшие функции автопилота: управление рулём высоты и рулём направления, отсчитывание пройдённого расстояния, отключение двигателя и сброс крыльев. Неудачи в испытаниях были связаны с проблемами удержания аппарата на курсе. Аппарат мог отклониться от курса как при запуске с рельсовой катапульты, так и во время полёта. Кроме того, «воздушная торпеда» под действием ветра могла завалиться на крыло и упасть. Примитивный автопилот хоть и пытался придерживаться курса, но с сильными порывами ветра или ошибкой при запуске справиться не мог.  

Представим алгоритм управления «Жука» Кеттеринга:

1) Перед стартом задавались максимальная высота и число оборов пропеллера.

2) Происходил запуск с рельсовой катапульты.

3) Аппарат выходил на заданную высоту (контроль высоты осуществлялся с помощью барометрического альтиметра).

4) Автопилот поддерживал неизменный курс благодаря воздействию гироскопа (полёт представлял собой движение по прямой).

5) При достижении заданного числа оборотов (нужного расстояния), происходило отключение двигателя и сброс крыльев. Корпус аппарата падал вертикально вниз в цель.  

Аппарат имел малую дальность и мог двигаться только по прямой из пункта «А» в пункт «Б». Маршрут с большим количеством точек был невыполнимой задачей, как и  возвращение аппарата на место старта.

Выявим технические противоречия (ТП), имеющиеся в описываемой системе, для единообразия в формулировках противоречий все рассматриваемы системы будем называть БПЛА:

ТП1. При повышении степени стабилизации БПЛА по крену, путём введения стабилизирующих элементов на крыльях, недопустимо повышается вес аппарата.

ТП2. При повышении степени стабилизации БПЛА по крену, путём введения стабилизирующих элементов на крыльях, недопустимо повышается сложность конструкции.

ТП3. При повышении степени стабилизации по курсу недопустимо уменьшается расстояние до цели.

ТП4. При повышении сложности маршрута недопустимо повышается сложность конструкции.

Противоречие ТП4 было разрешено использованием приёмов вынесения, непрерывности полезного действия, «посредника», путём замены инерциального автопилота на систему радиоуправления. Этап ТРИЗ-эволюции представлен на рисунке 4.

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 4 – Первый этап эволюции. 

2.       Новая веха: появление радиоуправляемых летательных аппаратов. 

В 1930-х годах армия США получила предложения поставлять радиоуправляемые беспилотные самолёты для различных нужд. Среди компаний, сделавших предложение, была Radioplane Company. Основана она Дени Реджинальдом, бывшим пилотом британской королевской авиации, который эмигрировал в США и стал актёром, а позже основал магазин и компанию по производству радио моделей самолётов [2].  

Radioplane Company предложила армии США линейку радиоуправляемых моделей самолётов, среди которых присутствовала модель Radioplane OQ-2 (рис. 5). Это первый дистанционно-пилотируемый летательный аппарат (ДПЛА), поступивший в массовое производство. В общем было произведено 15000 моделей. Эксплуатация проводилась вплоть до 1948 года [2].  

Radioplane OQ-2 представлял собой самолёт-мишень для обучения зенитных расчётов. Длина – 2,65 м. Размах – 3,73 м. Взлётный вес – 47 кг. Максимальная скорость – 137 км/ч. Максимальное время полёта – 1 час.

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 5 – Внешний вид Radioplane OQ-2 

Запуск происходил с катапульты, а управлялась беспилотная радио модель оператором с земли, который мог имитировать различный ситуации (например, заход истребителя для атаки). Если аппарат оставался цел после полёта, посадка происходила с помощью выбрасываемого парашюта и неубираемого шасси (было не у всех моделей), которое смягчало удар о землю. Блок-схема системы управления представления на рисунке 6.

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 6 – Блок-схема радиоуправления  

Радиоуправление позволило беспилотникам следовать по сложным маршрутам и выполнять сложные манёвры в воздухе, превосходя в этом «Жука» Кеттеринга и «Крылатую торпеду» Сперри. Аппараты получили возможность возвращаться на стартовую позицию, что увеличило количество их использования. Малогабаритная конструкция Radioplane OQ-2 и простота позволили развивать ему большие скорости и покрывать большее расстояние. Однако появилась проблема с малым потолком использования в 2438 м.

Аппаратура того времени позволяла эффективно использовать Radioplane OQ-2 только в поле видимости оператора. Именно так оператор с земли мог производить управление беспилотником. Если аппарат вылетал из радиуса видимости, то его можно было контролировать только радаром, что не обеспечивало эффективного наблюдения и снижало точность позиционирования.

При рассмотрении Radioplane OQ-2 можно выявить следующие противоречия:

ТП5. При увеличении дальности, путём увеличения пунктов управления по маршруту движения радиоуправляемого аппарата, недопустимо увеличивается объём наземной аппаратуры управления.

ТП6. При увеличении дальности, путём увеличения пунктов управления по маршруту движения радиоуправляемого аппарата, недопустимо увеличивается количество персонала.

ТП7. При увеличении дальности, путём увеличения объёма топливного бака, недопустимо увеличивается вес.

Второй этап эволюции показан на рисунке 7.

Противоречие ТП7 было разрешено использованием приёмов вынесения, непрерывности полезного действия, «посредника».

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 7 – Второй этап эволюции  

3. Разработки второй мировой войны.

Фау-1 – самолёт-снаряд, прообраз современных крылатый ракет, состоял на вооружении армии Германии в середине Второй мировой войны (рис. 8). Эта ракета создана в рамках проекта «Оружие возмездия». Проект беспилотного аппарата разработан немецкими конструкторами Робертом Луссером и Фритцем Госслау. Разработка производилась в период 1942-1944 гг [3].

Фау-1 была построена по самолётной схеме, в задней части корпуса над рулём курса крепился реактивный двигатель. В процессе разработки проекта появилась необходимость ввести стабилизаторы и гироскоп для стабилизации аппарата во время полёта.

На земле перед запуском беспилотному аппарату задавали значения высоты и курса, а так же дальность полёта. Наведение выполнялось по магнитному компасу. После пуска аппарата (производился с катапульты, либо с самолёта-носителя – модифицированного бомбардировщика Heinkel He 111 H-22) он летел с помощью автопилота по заданному курсу и на заранее определённой высоте. Стабилизация по курсу и тангажу осуществлялась на базе показаний 3-степенного гироскопа: по тангажу суммировались с показаниями барометрического датчика высоты; по курсу – со значениями угловых скоростей от двух 2-степенных гироскопов, используемых для уменьшения колебаний снаряда. Управление по крену отсутствовало, так как Фау-1 была достаточно устойчива вокруг продольной оси [3]. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 8 – Внешний вид Фау-1  

Автопилот был пневматическим устройством, работающим на сжатом воздухе. Золотники пневматических машинок рулей курса и высоты приводились в действие воздушным давлением, в зависимости от показаний гироскопов. Сами гироскопы раскручивались также сжатым воздухом. Расстояние полёта задавалось на специальный механический счётчик, а прикреплённый на нос снаряда анемометр постепенно сводил значение к нулю. По достижении нулевого значения происходило разблокирование ударных взрывателей и отключение двигателя. Примерна блок-схема показана на рисунке 9.

Длина – 7.75 м. Размах крыльев – 5,3 (5,7) м. Максимальная скорость – 656 км/ч (по мере расходования топлива скорость доходила до 800 км/ч). Дальность доходила до 280 км.

Фау-1 могла летать только по прямой (как «Жук» Кеттеринга), однако покрывала большее расстояние и развивала гораздо большую скорость. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 9 – Блок-схема системы управления. 

После рассмотрения Фау-1 были выделены следующие технические противоречия:

ТП8. При упрощении процесса старта, путём отказа от катапульты, недопустимо увеличивается сложность конструкции.

ТП9. При увеличении сложности маршрута недопустимо увеличивается сложность оборудования.

ТП10. При увеличении сложности маршрута недопустимо увеличивается вес аппарата.

На основе вышеописанных противоречий выделен второй этап ТРИЗ-эволюции беспилотных летательных аппаратов (рис. 10).

Противоречия ТП8 и ТП9 были разрешены с помощью приёмов вынесения, непрерывности полезного действия, «посредника», путём замены самолётной схемы на вертолётную. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 10 – Третий этап эволюции.

4. Противолодочный вертолёт.

Проект американского беспилотного летательного аппарата, а если точнее бдеспилотного вертолёта. Gyrodyne QH-50 DASH – первый в мире беспилотный вертолёт принятый на вооружение (рис. 11). Первый его полёт состоялся в 1959 году, и вплоть до 1969, когда ВМС США отказались от проекта, было произведено 700 аппаратов различных модификация. Изначально проектировались как штатное противолодочное вооружение ракетных крейсеров [4]. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 11 – Внешний вид Gyrodyne QH-50 DASH 

Вертолёт был в длину 3,9 м, в высоту 3 м.. Вес неснаряжённого и снаряжённого соответственно 537 кг. и 991кг. Максимальный взлётный вес 1046 кг. Максимальная скорость 148 км/ч. и дальность 132 км. Практический потолок 4939 м. На борту нёс 33,6 галлонов топлива [4].

В отличие от предыдущих систем, аппарату не требовалась взлётная полоса или оборудование (например, катапульта), а требовалась небольшая ровная поверхность.

Беспилотный вертолёт разрабатывался для старта с палубы корабля. Перед запуском к нему подвешивали торпеды.

Контроль управления вёлся с пульта оператора (блок-схема системы управления представлена на рис. 12). На пульт также приходили данные о состоянии аппарата, сигналы оружейной системы. В дальнейшем было предложено ввести два пульта управления. По требованию, один пульт должен был находиться на палубе, а другой в командном пункте.

Так как торпеды весили много, пришлось отказаться от телеаппаратуры. Поэтому запускали сразу два вертолёта: один с аппаратом обнаружения и целеуказания; второй с вооружением.

Проект Gyrodyne QH-50 DASH был отменён из-за несовершенства системы управления и конструктивных дефектов, почти половина аппаратов разбились. Во время полёта у беспилотного вертолёта могло произойти самопроизвольное отключение аппаратуры управления. Также сказалось начало войны во Вьетнаме. Но использование беспилотного вертолёта вплоть до 2006 года как учебное пособие, объект экспериментов и т.д. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 12 – Блок-схема системы управления. 

Выделим противоречия беспилотного вертолёта Gyrodyne QH-50 DASH:

ТП11. При уменьшении габаритов беспилотного аппарата недопустимо уменьшается показатель полезной нагрузки.

ТП12. При уменьшении габаритов беспилотного аппарата недопустимо уменьшается дальность полёта.

Противоречия ТП10 и ТП11 были разрешены с помощью приёмов вынесения, объединения, универсальности, замены механической схемы, путём создания доступных контроллеров полёта для авиамоделистов.

По этим противоречиям составим этап ТРИЗ-эволюции (рис. 13).

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 13 – Четвёртый этап эволюции. 

5. «Беспилотники» в массы. Полётные контроллеры для моделирования.

В наше время беспилотные летательные аппараты перестали быть военными «игрушками». В начале XXI века всё больше и больше различных БПЛА находят применение в гражданских сферах: аэросъёмка, доставка грузов, отдых и досуг, образование и др. Появилось множество схем конструкций (мультикоптеры, самолётного типа и др.). Теперь их можно спокойно купить в магазинах или даже сделать самому при покупке определённых комплектующих. О них и пойдёт речь далее.

Полётный контроллер – это основная плата управления, обеспечивающая функционирование беспилотного летательного аппарата.

Одним из первых популярных полётных контроллеров XXI века был MultiWii (рис. 14). Это открытый проект полётного контроллера на основе Arduino (аппаратной вычислительной платформе, основными компонентами которой являются простая плата ввода/вывода и среда разработки на языке Processing/Wirin (Си подобный)). Используется как элемент системы управления самодельных беспилотных аппаратов (в частности для мультикоптеров). Название MultiWii исторически сложилось потому, что в первых версиях были задействованы гироскопы из контроллера к игровой консоли Nintendo Wii. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу  

Рисунок 14 – Внешний вид платы MultiWii

В данный момент платформа поддерживает большое количество сенсоров. Изначально нужно было докупать гироскопы из контроллера Wii Motion Plus и акселерометр из контроллера Wii Nunchuk, однако сейчас этого делать не нужно.

Так как основой проекта служит Arduino, то подключаемые модули (GPS, радио передатчик и т.д.) совместимо с проектом полётного контроллера ArduPilot (подробнее о нём поговорим ниже). По своей сути это плата с контактами, а не готовая система управления, к которой радиолюбитель может присоединять различные модули (в соответствии с нужными целями). Есть возможность настроить управление по радио пульту (с помощью приемника/передатчика радиосвязи) либо простые функции автопилота, такие как движение по точкам (необходим модуль GPS) и удержание курса (магнитометр). Естественно всё это возможно только при правильной настройке контроллера.

Изначально на плате был 8-битный микроконтроллер ATMega328 (тактовая частота до 20MHz, FLASH-память 32кб, SRAM-память 2кб), либо ATMega2560 (тактовая частота 16MHz, FLASH-память 256кб, SRAM-память 8кб). Но, т. к. проект является открытым, появились любительские версии с 32-битным STM32. Так же присутствуют встроенные датчики MPU6050 (3-осевой гироскоп и 3-осевой акселерометр), BMP085 (барометр) и HMC5883L (электронный магнитный компас). Информация представлена в общем виде и может отличаться для различных версий плат.

На рисунке 15 показана блок-схема системы управления.

Предполагаемый алгоритм управления:

1) Необходимо подключить все необходимые для задачи пользователя модули, предварительно записав программу в микроконтроллер (официальную или самодельную).

2) Далее следует подключить полётный контроллер к питанию и включить.

3) В зависимости от конструкции беспилотного аппарата, следует произвести запуск.

Полётные контроллеры в основном предназначались для радиоуправления. Хоть они и поддерживали некоторые функции автопилота, оператору приходилось контролировать полёт. Например, двигаясь по точкам маршрута, летающий аппарата может врезаться в возникшее препятствие, если не будет принято своевременных мер. Это относится и к остальным моделям полётных контроллеров, описанных ниже. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 15 – Блок-схема системы управления. 

В системе выявлены следующие противоречия:

ТП13. При повышении гибкости настройки управления контроллера недопустимо повышается сложность кода.

ТП14. При повышении гибкости настройки управления контроллера недопустимо повышается количество часов, требуемых на это.

Противоречия ТП13 и ТП14 были разрешены с помощью приёмов вынесения, объединения, универсальности, замены механической схемы.

Этап эволюции показан на рисунке 16. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 16 – Пятый этап эволюции.

6. Новые аналоги.

Контроллер CopterControl3D (CC3D) создан в рамках открытого проекта Open Pilot,начатого в 2009 году (рис. 17). Как и MultiWii является небольшой и относительно дешевой программируемой платой, но в отличие от неё разрабатывался специально для квадрокоптеров. Так же получил своё программное обеспечение OpenPilot GCS для настройки. Примерно 90% квадрокоптеров используемых для управления First Person Viev (FPV, вид от первого лица – управление осуществляется не только по радио каналу, но и по дополнительному каналу принимается на экран видео в реальном времени) собираются любителями именно на этом контроллере. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 17 – Внешний вид платы CC3D

На плате присутствует 32-битный микроконтроллер STM32F103 72MHz с FLASH-памятью 128кб и чип MPU6000 (совмещает 3-осевой гироскоп и 3-осевой акселерометр).

Информация представлена в общем виде и может отличаться для различных версий плат.

Блок-схема системы управления показана на рисунке 18 (отличия только в интерфейсах подключения устройств).

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 18 – Блок-схема системы управления 

В системе выявлены следующие противоречия:

ТП15. При повышении гибкости управления контроллера, путём добавления функций автопилота, недопустимо повышается сложность кода.

ТП16. При повышении универсальности использования контроллера недопустимо повышается сложность кода.

Противоречия ТП15 и ТП16 были разрешены с помощью приёмов вынесения, универсальности, самообслуживания, «посредника».

Этап эволюции представлен на рисунке 19. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 19 – Шестой этап эволюции 

7. Решение от Arduino.

Полётный контроллер ArduPilot Mega (рис. 20), разработанный компанией Arduino. Главным отличием от предыдущих является поддержка не только летающих беспилотных аппаратов, но наземных и лодочных систем. Так же помимо радиоуправляемого дистанционного пилотирования – автоматическое управление по заранее созданному маршруту, т.е. полет по точкам, а так же обладает возможностью двухсторонней передачей телеметрических данных с борта на наземную станцию (телефон, планшет, ноутбук и т.д.) и ведение журнала во встроенную память. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 20 – Внешний вид платы 

Контроллер поддерживает программирование, как и прочие продукты Arduino, язык программирования Arduino (является стандартным C с некоторыми особенностями). При грамотной настройке позволяет превратить любой аппарат в автономное средство и эффективно использовать его не только в развлекательных целях, но и для выполнения профессиональных проектов. По сравнению с вышеописанными платами более стабильно ведёт себя во время полёта, может неплохо выполнять некоторые фигуры полёта.

Контроллер поддерживает авиасимулятор через ПО Mission Planner, который позволят настроить управление, проложить маршрут и т.д.

На плате установлен микроконтроллеры ATMega2560 и ATMega32U2 (8-битный, тактовая частота 16 MHz, FLASH-память 32кб, SRAM-память 1 кб), датчики MPU6000 и MS5611 (барометр).

Блок-схема системы управления показана на рисунке 21.

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 21 – Блок-схема системы управления. 

В рассмотренной системе были выявлены следующее противоречие:

ТП17. При повышении гибкости управления контроллера недопустимо уменьшается универсальность использования контроллера.

ТП18. При повышении качества платы недопустимо повышается цена.

ТП19. При повышении гибкости управления контроллера недопустимо повышается сложность схемы подключения периферии.  

Противоречия ТП17 и ТП18 были разрешены с помощью приёмов объединения, дешёвой замены, универсальности, путём создания универсального полётного контроллера.

На рисунке 22 показан этап эволюции. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 22 – Седьмой этап эволюции. 

8. Новое поколение.

Pixhawk – полетный контроллер нового поколения (рис. 23), дальнейшая разработка проекта PX4 и программного кода Ardupilot от 3DRobotics. В контроллере присутствует операционная система реального времени NuttX.

Контроллер поддерживает большое количество систем:

наземные, воздушные, наводные. Поддерживает различные модули и стандарты для их связи. Из-за своей универсальности и стал популярным. Поддерживает использование ПО Mission Planner как ArduPilot.  

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 23 – Внешний вид контроллера Pixhawk 

На плате установлен 32-битный микропроцессор STM32F427 Cortex M4 (168MHz, FLASH-память 2 Мб, RAM- память 256кб) и 32-битный сопроцессор STM32F103. Так же присутствуют датчики: ST Micro L3GD 20 – 3-осевой гироскоп, ST Micro LSM303D – 3-осевой акселерометр/магнитометр, MPU6000 – 3-осевой акселерометр/гироскоп, MEAS MS5611 – барометр.

Блок-схема системы управления показана на рисунке 24. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 24 – Блок-схема системы управления.  

Выявим противоречия описанной системы:

ТП20. При повышении гибкости управления аппарата недопустимо повышается сложность аппаратуры управления.

Противоречия ТП20 были разрешены с помощью приёмов объединения, универсальности, путём создания многофункционального БПЛА с открытым кодом для любительских разработок.

Этап эволюции представлен на рисунке 25. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу  

Рисунок 25 – Восьмой этап эволюции.

9. Готовое решение.

В 2020 году французская фирма Parrot выпустила на рынок свой беспилотный летательный аппарат AR.Drone. Через пару лет была выпущена обновлённая версия Parrot AR.Drone 2.0 (рис. 29). Проект квадрокоптера был полностью открыт для идей пользователей, что помогло ему стать хитом.

У Parrot AR.Drone 2.0 имеются четыре мотора мощностью 14,5 Вт. Максимальная скорость – 18 км/ч. Масса дополнительной полезной нагрузки – 150 г. Процессор ARM Cortex A8 с частотой 1 ГГц. с 800 Гц. DSP TMS320DMC64x для обработки видео сигналов. RAM DDR2 1Гбит. Две камеры: основная для съёмки и режима FPV с разрешением 720p; дополнительная камера с разрешением 240p для измерения горизонтальной скорости, расположена снизу.Wi-Fi точка для подключения устройства управления (смартфон или планшет с ОС Android или iOS) [9]. 

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу  

Рисунок 29 – Внешний вид Parrot AR.Drone 2.0

Открытость проекта позволяет к готовому аппарату подключать дополнительные компоненты. Это была одна из привлекательных черт описываемого квадрокоптера. Также пользователи могли программировать его полётный контроллер, либо создавать различные приложения для управления на языках C, Java и Objectiv-C.

Примерная блок-схема управления представлена на рисунке 30.

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

Полетный контроллер на Ардуино? На STM32F104! Руководство по сборке. | Пикабу

Рисунок 30 – Блок-схема системы управления. 

Выявленные противоречия:

ТП21. При добавлении дополнительной аппаратуры, повышающей функционал автопилота, недопустимо повышается вес аппарата.

10. Дальнейшее развитие.

Дальнейшее развитие беспилотных систем, в том числе БПЛА, заключается во внедрении в систему управления искусственного интеллекта. Интеллектуальная система управления позволит ещё больше развить функции автопилота, автоматизировать беспилотные аппараты. При этом действия оператора сводятся только к подготовке аппарату к началу полёта и непосредственно к самому запуску.

Но возникает техническое противоречие ТП21. Это противоречие разрешается принципами объединения, универсальности, непрерывности полезного действия, «посредника».  

Интеллектуальную систему управления можно реализовать на микропроцессорном компьютере (например, Raspberry Pi) с несколькими датчиками (2 видео камеры и лидар). Такая система при движении по заданному маршруту сможет определить появившееся препятствие, которым может быть человек, другой БПЛА или дерево, стена, которые не заметил оператор при составлении маршрута. Данная система будет распознавать объекты методом компьютерного зрения и определять вектор движения этих объектов. После определения вектора движения, система сравнит его с вектором БПЛА и построит маршрут уклонения с минимальным уходом с маршрута. Такая схема несильно повлияет свои весом на характеристики беспилотного летательного аппарата, но значительно повысит степень его «выживаемости».  

Литература и примечания 

[1] Куда полетит беспилотник без пилота – День за днем [электронный ресурс] // LIVEJOURNAL.COM : Живой журнал. – Электрон. данные. URL:
http://novser.livejournal.com/9293

99.html (дата обращения 14.11.2020 г.). – Заглавие с экрана. [2] OQ-2 [электронный ресурс] // AVIA.PRO : Новости авиации. – Электрон. данные. URL:
http://avia.pro/blog/oq-2

(дата обращения 14.11.2020 г.). – Заглавие с экрана.

[3] Фау-1 [электронный ресурс] // ANAGA.RU : Информационный портал «Столичный комитет». 2008 г. – Электрон. данные. URL:
http://anaga.ru/v-1.htm (дата обращения

17.12.2020 г.). – Заглавие с экрана. [4] Gyrodyne Helicopter Co. Mfg of QH-50 series of VTOL

UAVs. [электронный ресурс] // GYRODYNEHELICOPT ERS.COM : Информационный сайт. – Электрон. данные. URL:
http://www.gyrodynehelicopters.com/dash_weapon_system.htm

(дата обращения 14.11.2020 г.). – Заглавие с экрана.

[5] AR.Drone 2.0: обзор возможностей и дополнений [электронный ресурс] // XAKER.RU : Электронный журнал. – Электрон. данные. URL:
https://xakep.ru/2020/11/11/ar-drone-2-0/

(дата обращения 24.12.2020 г.). – Заглавие с экрана.

Оцените статью
Радиокоптер.ру
Добавить комментарий