Разработка программы, обеспечивающей дистанционное управление уменьшенной моделью мультикоптера на воздушной подушке
Анализ предметной области. Разработка программного обеспечения для контроллера Pixhawk, обеспечивающее дистанционное управление моделью мультикоптера на воздушной подушке. Алгоритм управления моделью. Настройка коэффициентов через ПО наземной станции.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 06.11.2015 |
Размер файла | 552,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Введение
Судно на воздушной подушке было изобретено в 1950-х гг. сэром Кристофером Кокереллом. Он начал проводить эксперименты по построению такого судна в 1955г. и к 1959г. разработал полностью функционирующее судно SR-N1 (рис. 1), способное пересечь пролив Ла-Манш. Основной особенностью такого судна является воздушная подушка, находящаяся между судном и поверхностью и поддерживающая судно во время полета на небольшой высоте. Как правило, воздушная подушка формируется внутри «юбки» - гибкой конструкции, прикрепленной к нижней части корпуса судна.
До экспериментов Кокерелла был ряд других попыток использовать эффект воздушной подушки или другие подобные эффекты воздушных потоков. Например, в начале XVIII в. была попытка сконструировать парящую в воздухе платформу на ручной тяге, а в 1927 К.Э. Циолковским была предложена идея создать поезд на воздушной подушке. Однако первым успешным и получившим поддержку судном стало именно судно, сконструированное Кокереллом, и именно благодаря ему концепция получила широкое распространение [1].
Судна на воздушной подушке обладают следующими преимуществами по сравнению с другими видами транспорта:
универсальность
Судно на воздушной подушке - один из наиболее универсальных видов транспорта. Оно может передвигаться как над водой, так и над сушей, включая такие виды поверхности, по которым не могут перемещаться колесные транспортные средства. Кроме этого, на воде судна на воздушной подушке также высокоэффективны, т.к. они не погружены в воду и не испытывают сопротивление воды и, следовательно, расходуют меньше топлива. Также судна на воздушной подушке могут передвигаться по водоемам, покрытым льдом, что является их преимуществом над обычными водными суднами и колесным транспортом.
стоимость
По сравнению с вертолетами, судна на воздушной подушке имеют меньшую стоимость и требуют меньших затрат при эксплуатации. Эти два вида транспорта часто используются для одних и тех же задач (например, в спасательных операциях), и во многих ситуациях использование суден на воздушной подушке экономически более выгодно.
безопасность для окружающей среды
Судна на воздушной подушке наносят меньше ущерба окружающей среде, чем любые другие наземные транспортные средства. Это связано с тем, что они оказывают значительно меньшее давление на поверхность - в среднем в 10 раз меньше, чем давление, оказываемое человеком при ходьбе. Благодаря этому судна на воздушной подушке можно использовать в заповедных зонах. Например, исследование влияния различных транспортных средств на окружающую среду в условиях арктической тундры, представленное в [2], показало, что судна на воздушной подушке наносят незначительный ущерб растительности, в отличие от колесных или гусеничных машин.
Кроме этого, при перемещении над водой судна на воздушной подушке практически не наносят ущерба флоре и фауне водоемов, т.к. у них нет движущихся частей в воде, в отличие от водных транспортных средств.
Универсальность суден на воздушной подушке позволяет использовать их для множества целей. Во-первых, они широко используются в общественном транспорте, особенно на островных территориях. Так, паром на воздушной подушке через пролив Ла-Манш функционировал с 1966г. по 2000г., хотя после открытия Евротоннеля в 1994г. им постепенно перестали пользоваться [3].
Другое применение для суден на воздушной подушке - доступ в регионы, в которые по тем или иным причинам невозможно или сложно попасть по суше и воде. Это могут быть зоны стихийных бедствий (потопов или землетрясений) или территории с неразвитой инфраструктурой. К примеру, в Перу существовал сервис «hover doctor» -- медицинская помощь на суднах на воздушной подушке, передвигавшихся по реке [4], а в Канаде судна на воздушной подушке использовались для патрулирования арктических регионов [5].
Небольшие судна на воздушной подушке могут быть предназначены для личного использования, в том числе в развлекательных целях: для рыбной ловли на воде и на льду, для гонок или просто для полетов, т.к. судна на воздушной подушке - сравнительно безопасный способ полета, который к тому же в большинстве стран не требует получения водительских прав.
У суден на воздушной подушке есть и ряд недостатков. Наиболее существенный из них - очень высокая стоимость обслуживания. Это связано с тем, что юбка судна очень быстро изнашивается, так как практически постоянно находится в контакте с поверхностью. К примеру, на суднах модели SR-N4, которые использовались в качестве паромов через Ла-Манш, замена сегментов юбки требовалась примерно через каждые 1,75 часа эксплуатации.
Еще один недостаток суден на воздушной подушке состоит в том, что они становятся неустойчивыми при попытке подняться выше рекомендуемой высоты. Поэтому на таких суднах сложно преодолевать высокие препятствия. Это актуально в первую очередь для небольших суден - большие могут преодолевать препятствия высотой до 1,5 метров благодаря высоте юбки.
Чтобы преодолеть описанные выше недостатки, можно предложить другую конструкцию судна на воздушной подушке. Одну из таких конструкций предложила компания Aerofex в своем проекте Aero-X [8] - конструкция этого судна основывается на двух туннельных винтах. В данной работе будет рассмотрен следующий вариант конструкции, основанный на идеях Aero-X. Мультикоптер на воздушной подушке включает в себя следующие основные части:
два туннельных винта, расположенных в передней и задней частях мультикоптера,
элероны - по одному или больше под каждым пропеллером, для управления курсом и креном
рама, на которой закреплены пропеллеры и установлена кабина пилота.
Следует заметить, что судна такой конструкции могут летать на произвольной высоте. Однако максимальный вес такие судна смогут переносить при полете на небольшой высоте с использованием эффекта воздушной подушки. При этом возможность подняться на большую высоту позволяет такому судну преодолевать высокие препятствия, что невозможно сделать на традиционном судне на воздушной подушке.
Еще одной отличительной чертой мультикоптера на воздушной подушке является долговечность конструкции. Можно видеть, что у такого судна отсутствуют какие-либо гибкие части, находящиеся в контакте с поверхностью или подверженные износу иным образом.
Прежде, чем конструировать полноразмерный прототип мультикоптера, можно предварительно провести испытания на масштабных моделях. Это существенно снижает время и затраты, необходимые для проведения испытаний. Кроме этого, небольшие модели позволяют проводить испытания в помещении, а не только под открытым небом.
Целью данной работы является разработка программы, обеспечивающей дистанционное управление уменьшенной моделью мультикоптера на воздушной подушке. Программа должна обеспечивать возможности выполнения следующих действий:
зависание над горизонтальной поверхностью и стабилизация;
полет над горизонтальной поверхностью.
Для достижения поставленной цели необходимо решить следующие задачи:
разработать алгоритм управления моделью мультикоптера данной конструкции;
изучить устройство программного обеспечения для полетного контроллера Pixhawk и способы разработки ПО для него;
изучить программные библиотеки, разработанные для Pixhawk, и предоставляемые ими программные интерфейсы;
реализовать разработанный алгоритм управления для Pixhawk.
1. Анализ предметной области
контроллер алгоритм мультикоптер дистанционный
1.1 Обзор существующих решений
На данный момент разрабатываются два проекта по конструированию аналогичных транспортных средств: MA Hoverbike, разрабатываемый австралийской командой инженеров во главе с Крисом Мэллоем, и Aero-X от американской компании Aerofex Corp.
1.1.1 Hoverbike by Chris Malloy
Проект MA Hoverbike посвящен разработке пилотируемого мультикоптера. Несмотря на приставку «hover» в названии, Hoverbike предназначен для полетов на произвольной высоте, а не на воздушной подушке. Разрабатываемый мультикоптер позиционируется как «первый в мире летающий мотоцикл».
Проект начался как хобби, но быстро привлек к себе внимание со стороны бизнеса и военных. Первоначальная конструкция Hoverbike (рис. 2) включала в себя два винта, но от нее вскоре отказались в пользу конструкции с четырьмя винтами, по два спереди и сзади.
Основной источник финансирования Hoverbike - пожертвования. Крис Мэллой провел успешную кампанию на Kickstarter, однако для начала массового производства необходимо собрать еще более 1 миллиона долларов. Команда проекта планирует запустить продажу радиоуправляемых моделей Hoverbike Drone3 размера 1:3 как один из источников дохода.
Информации о том, как устроена система управления Hoverbike, нет в открытом доступе. Известно лишь, что модель Hoverbike Drone3 поставляется с контроллером Pixhawk.
1.1.2 Aerofex Aero-X
Компания Aerofex Corp. планирует запустить производство и продажу мультикоптера на воздушной подушке Aero-X. Согласно спецификации, Aero-X будет вмещать двоих людей (пилота и пассажира) и будет способен передвигаться на высоте до 3 метров и скорости до 72 км/ч. Топливо, используемое Aero-X - автомобильный бензин (в отличие от Hoverbike, использующего электрические батареи).
Первый пилотируемый прототип Aero-X уже построен (рис. 4), видео его полета появились на YouTube в 2012г. Ожидается, что продажи Aero-X начнутся в 2017г. по цене 85 000 долларов. На сайте Aerofex уже принимаются заявки на предварительный заказ мультикоптера под залог 5000 долларов. Проект также получил множество положительных отзывов в СМИ: статьи о нем есть на сайтах таких изданий, как BBC, Washington Post, CNN и The Telegraph.
Информация о системе и алгоритмах управления Aero-X отсутствует в открытом доступе.
1.2 Описание модели мультикоптера
Схема подключения компонент прототипа мультикоптера, рассматриваемого в данной работе, представлена на рис. 1. На схеме тонкими линиями изображены провода для передачи сигнала, жирными - провода питания, пунктиром - радиосигнал.
Рисунок 1. Схема компонент мультикоптера
Модель состоит из следующих компонент:
1. Батарея (Battery), обеспечивающая питание модели
2. Контроллер (Controller)
3. Радиоприемник (RX), выходные разъемы которого подключены к входным разъемам контролера
4. Пульт дистанционного управления (TX)
5. Сервоприводы, управляющие передним и задним рулями направления (Front rudder, Back rudder) и подключенные к выходным разъемам контроллера
6. Регуляторы скорости переднего и заднего мотора (Front ESC, Back ESC), подключенные к выходным разъемам контроллера и к батарее
7. Передний и задний моторы (Front motor, Back motor), подключенные к соответствующим регуляторам скорости.
1.3 Контроллеры для управления
Существуют несколько контроллеров для задач авиамоделирования, находящихся в серийном производстве. Далее представлено описание и сравнение наиболее популярных и распространенных контроллеров и обоснован выбор Pixhawk для управления моделью мультикоптера.
1.3.1 ArduPilot и APM
Первая версия контроллера ArduPilot была выпущена компанией 3DRobotics в 2009г. и основана на плате Arduino. Контроллер был несколько раз переработан, последняя на текущий момент версия ArduPilot Mega (APM) 2.6 выпущена в 2012г. APM 2.6 содержит 8-битный процессор с тактовой частотой 16 МГц, 8 кБ оперативной памяти, трехосевой гироскоп, акселерометр и барометр. По состоянию на апрель 2015г. актуальные версии ПО для контроллеров радиоуправляемых и автономных моделей более не поддерживают APM из-за его недостаточной производительности.
1.3.2 PX4 и Pixhawk
PX4 - более мощный и функциональный контроллер, чем APM. Этот контроллер был разработан двумя энтузиастами в Высшей технической школе Цюриха и выпущен в продажу 3DRobotics в 2012г. Первая версия PX4 состояла из двух плат: вычислительный модуль PX4FMU (Flight Management Unit) и модуль ввода-вывода PX4IO.
Pixhawk - усовершенствованная версия PX4, выпущенная в 2013г. В Pixhawk две платы объединены в одну и заключены в удобный корпус.
Оба контроллера включают в себя 32-битный ARM-процессор с тактовой частотой 168 МГц, 256 кБ оперативной памяти, гироскоп, акселерометр, барометр и компас. Основные различия между этими двумя контроллерами - более современные сенсоры в Pixhawk и большее удобство установки и настройки.
1.3.3 Другие контроллеры
Кроме APM и PX4/Pixhawk, используется и ряд других контроллеров, среди которых самые популярные - VRBrain и FlyMaple. VRBrain был разработан VirtualRobotix и появился в 2012 году (текущая версия VRBrain 5 была выпущена в 2014г.) [16]. FlyMaple - разработка сообщества OpenDrone, выпущенная в 2013г.
1.3.4 Программное обеспечение контроллеров
В качестве программного обеспечения для всех рассмотренных контроллеров используются прошивки на основе APM [18], которые стали фактически стандартом для авиамоделей. Таким образом, с точки зрения программного обеспечения между контроллерами различий практически нет, за исключением производительности и наличия/отсутствия у контроллера тех или иных датчиков и аппаратных интерфейсов.
Подробное описание APM представлено в главе 3.
Сравнение контроллеров представлено в таблице 1. Из таблицы видно, что Pixhawk выигрывает в производительности у остальных контроллеров. Кроме этого, Pixhawk в настоящее время вытесняет устаревший APM и набирает популярность среди моделистов, и для него существует значительно больше различных интернет-ресурсов, чем для FlyMaple/VRBrain. Таким образом, использование Pixhawk оптимально для решения поставленных задач.
Таблица 1. Сравнение различных контроллеров
APM 2.6 |
Pixhawk |
FlyMaple |
VRBrain |
||
Размер (мм) |
70,5 x 45 x 13,5 |
81,5 x 50 x 15,5 |
50 x 50 x 12 |
60 x 40 x ? |
|
Процессор |
8 бит, 16 МГц |
32 бит, 168МГц |
32 бит, 72 МГц |
32 бит, 168 МГц |
|
ОЗУ |
8 кБ |
256 кБ |
? |
192 кБ |
|
Сенсоры |
Акселерометр, гироскоп, барометр |
Акселерометр, гироскоп, барометр, компас |
Акселерометр, гироскоп, барометр, компас |
Акселерометр, гироскоп, барометр, сонар |
|
Возможность подключения |
Компас, GPS, FPV, радио для телеметрии, сонар |
GPS, FPV, радио для телеметрии, сонар |
GPS, FPV, радио для телеметрии, сонар |
Компас, GPS, FPV, радио для телеметрии |
|
Цена |
$159.99 |
$199.99 |
$68.95 |
€175.00 |
|
ПО |
APM |
APM |
APM |
APM |
2. Алгоритм управления моделью
2.1 Общее описание алгоритма
В разработанной программе реализован алгоритм управления, устроенный следующим образом.
Входными данными алгоритма являются данные, получаемые с радиоприемника и установленных внутри контроллера датчиков. Выходными данными являются значения на выходных каналах контроллера: каналы 1 и 2 управляют соответственно передним и задним рулями направления, каналы 3 и 4 - соответственно передним и задним моторами. Для каждого канала выполняются следующие действия:
Рассматривается ряд показателей, связанных с полетом модели (например, углы наклона и угловые скорости). Показатели могут различаться для разных каналов.
Для каждого из показателей в каждый момент вычисляется его текущее значение, а также некоторое целевое значение или значение по умолчанию, к которому модель должна стремиться.
Рассматривается разность между текущим и целевым значением показателя. Если эта разность незначительна и ее можно считать погрешностью (меньше по модулю некоторого заданного минимального значения), она принимается равной нулю. Если она больше по модулю некоторого заданного максимального значения, она принимается равной этому значению с соответствующим знаком.
Вычисляется сумма этих разностей, полученных на предыдущем шаге, с заранее заданными коэффициентами. Коэффициенты подбираются эмпирически для конкретной модели.
Данная сумма прибавляется к нулевому значению для данного канала. Если результат меньше минимального значения, допустимого для канала, или больше максимального значения, он принимается равным соответственно минимальному или максимальному значению.
Математически алгоритм может быть описан следующими формулами:
Где: - выходные каналы контроллера
- количество показателей для i-го канала
-- текущее значение j-го показателя для i-го канала
-- целевое значение j-го показателя для i-го канала
-- минимальное и максимальное значение j-го показателя для i-го канала
-- настраиваемые коэффициенты
- нулевое значение i-го канала
- результат без учета проверки на допустимость значения для данного канала
- минимальное и максимальное допустимое значение i-го канала
- окончательный результат вычислений (значение на выходе i-го канала контроллера)
График функции имеет вид, изображенный на рис. 2.
Рисунок 2. Общий вид графика функции
Схема описанного алгоритма представлена на рис. 3.
Рисунок 3. Схема алгоритма управления моделью
2.2 Используемые показатели
Показатели, используемые алгоритмом, представлены в таблице 2.
Таблица 2
Показатели, используемые алгоритмом управления моделью
Показатель |
Описание |
|
Показатели для рулей направления |
||
Угол крена |
Используется для управления креном и обеспечивает стабилизацию и обратную связь при крене. Целевое значение - канал 1 приемника (горизонтальное отклонение правой ручки пульта). |
|
Угловая скорость крена |
Используется для того, чтобы сделать реакцию модели при резком изменении угла крена более плавной. Целевое значение - 0. |
|
Угловая скорость курса |
Используется для управления курсом модели. Целевое значение - канал 4 приемника (горизонтальное отклонение левой ручки пульта) |
|
Показатели для моторов |
||
Уровень газа с приемника |
Используется для общего управления моторами. Целевое значение принимается равным 0, но имеет лишь формальный смысл, т.к. модель не может на него повлиять. Текущее значение - канал 3 приемника (вертикальное отклонение левой ручки пульта). |
|
Угол тангажа |
Используется для управления тангажом модели и обеспечивает стабилизацию и обратную связь при тангаже. Целевое значение - канал 2 приемника (вертикальное отклонение правой ручки пульта). |
|
Угловая скорость тангажа |
Используется для того, чтобы сделать реакцию модели при резком изменении угла тангажа более плавной. Целевое значение - 0. |
|
Ускорение по вертикали |
Используется для того, чтобы сделать подъем и спуск модели более плавным. Целевое значение - 0. |
2.3 Коэффициенты в алгоритме
Поскольку физические и аэродинамические параметры мультикоптера рассматриваемой конструкции очень сложны и не поддаются расчету, коэффициенты для алгоритма не вычисляются, а подбираются экспериментальным способом для конкретной модели.
Первым выставляется коэффициент при уровне газа - его удобно выставить равным 1, т.к. значение уровня газа с приемника находится в диапазоне 0-1000, а диапазон значений для моторов - 1000-2000.
Далее выставляются коэффициенты при угле и угловой скорости тангажа. Для этого модель фиксируется таким образом, чтобы она могла вращаться только вокруг поперечной оси. Коэффициенты подбираются такими, при которых модель стабилизируется в горизонтальном положении и наклоняется вперед или назад при управлении тангажом с пульта.
Затем аналогичным образом выставляются коэффициенты при угле и угловой скорости крена. Для этого фиксируется продольная ось модели.
Следующим определяется коэффициент управления курсом. Это можно делать при свободном полете модели.
Коэффициент при вертикальном ускорении, который является наименее важным и значимым, выставляется последним при необходимости.
2.4 Преимущества и недостатки алгоритма
Основным преимуществом данного алгоритма является его высокая производительность. Действительно, использование только линейных зависимостей одновременно позволяет производить вычисления быстрее, чем при использовании более сложных методов вычисления.
Еще одним преимуществом является легкость добавления новых показателей. Например, возможно установить датчик расстояния (сонар) на модель и контролировать высоту полета модели без необходимости существенного изменения алгоритма.
К недостаткам данного алгоритма можно отнести его недостаточную гибкость. К примеру, возможно достичь большей точности в управлении, если использовать нелинейные зависимости или учитывать скорость вращения моторов при вычислении отклонения рулей направления. Однако при внесении изменений такого рода в алгоритм значительно повышается сложность нахождения коэффициентов и отладки программы.
3. Реализация программы
3.1 Общее описание проекта APM
Разработка программного обеспечения для Pixhawk и аналогичных контроллеров осуществляется на основе набора библиотек APM. Разработка первой версии APM началась в 2009 году вместе с выходом первого контролера Ardupilot, ее авторами были создатели самого контроллера. Первая версия APM была предназначена только для контроллера Ardupilot, но впоследствии авторы добавили поддержку различных других контроллеров, включая PX4/Pixhawk. Язык программирования, на котором разработан APM - С/С++. APM имеет открытый исходный код, размещена на GitHub и свободно распространяется по лицензии GNU GPL.
APM состоит из двух основных частей. Первая часть - библиотеки, каждая из которых предоставляет ряд функций для тех или иных задач (например, библиотека для работы с GPS-модулем, с компасом и т.д.).
Среди библиотек есть как низкоуровневые библиотеки, так и высокоуровневые, которые используют низкоуровневые внутри себя. Например, библиотека AP_AHRS (сокращение от Attitude and Heading Reference System - система определения положения и курса) предоставляет данные об углах наклона и курса судна и его угловых скоростях, при этом она использует библиотеки более низкого уровня: AP_InertialSensor, AP_Compass и др.
Вторая часть APM - основной исполняемый код самой программы. В комплекте поставки APM предоставляются четыре варианта такого кода: APM:Copter для моделей вертолетов и мультикоптеров, APM:Plane для моделей самолетов, APM:Rover для наземных моделей и AntennaTracker для управления радиоантенной, используемой для взаимодействия с моделью.
Каждая такая программа для APM внутри себя устроена следующим образом. Программа состоит из двух ключевых функций: setup() и loop().
Функция setup() вызывается один раз при включении питания контроллера, после чего в бесконечном цикле вызывается loop(). В виде традиционной C++-программы это можно представить так:
int main(void) {
setup();
while (true) { loop(); }
}
Рисунок 4. Библиотеки в составе APM
Соответственно, в функции setup() следует выполнить все необходимые процедуры инициализации, а в loop() - все действия, относящиеся уже непосредственно к работе программы.
Структура файлов программы должна быть следующей. Программа состоит из одного или нескольких файлов на языке C или C++, имеющих расширение .pde. Эти файлы должны располагаться в одной папке, при этом обязательно должен быть файл, имя которого совпадает с названием папки. Например, в папке MyFlightProgram должен находиться файл MyFlightProgram.pde и любое количество других .pde-файлов. При этом в любом из файлов можно использовать функции, объявленные в любом другом файле без необходимости создавать заголовочные файлы и объявлять прототипы функций, т.к. в процессе сборки все .pde-файлы объединяются в один .cpp-файл, в начало которого помещаются прототипы всех функций.
3.2 Разработка на основе APM
В начале разработки рассматривались три пути, по которым можно было бы осуществлять разработку. Первый путь - вести разработку полностью с нуля, полностью самостоятельно реализуя функции setup() и loop(). Данный путь не был использован ввиду неоптимальности, т.к. в APM:Copter реализовано большое количество полезного вспомогательного функционала и значительно удобнее его переиспользовать, чем реализовывать повторно. В частности, в APM:Copter правильным образом инициализируются и настраиваются все библиотеки, настраивается планировщик задач, а также реализовано взаимодействие с ПО наземной станции. Второй путь - расширить код APM:Copter таким образом, чтобы добавить полную поддержку мультикоптера на воздушной подушке с сохранением всего функционала APM:Copter. Такой подход возможен благодаря особенностям структуры кода управления моделью APM:Copter. Схема этой структуры приведена на рис.5.
Рисунок 5. Схема структуры кода APM:Copter
Код устроен следующим образом:
В коде присутствует несколько режимов полета (разработчик может добавить свой), и в каждый момент времени модель находится в одном из режимов. Каждый режим полета предоставляет две функции - функцию инициализации <имя_режима>_init() и функцию <имя_режима>_run(), вызываемую в цикле.
Функция update_flight_mode() вызывается внутри loop() и вызывает функцию <имя_режима>_run() активного режима полета.
Функция <имя_режима>_run() считывает данные с радиоприемника и датчиков и преобразует эти данные в требуемый угол крена, угол тангажа, угловую скорость курса и уровень газа.
Эти данные передаются в библиотеку AP_AttitudeControl, которая в свою очередь вызывает функции более низкого уровня в AP_Motors.
AP_Motors вычисляет значения сигналов, которые нужно передать сервоприводам и моторам модели. На всех предыдущих этапах о конфигурации модели ничего не известно, все специфические для нее вычисления происходят только в классе AP_Motors.
Вычисленные значения передаются библиотеке AP_HAL (Hardware Abstraction Layer), которая отвечает в том числе за вывод значений с учетом специфики конкретного контроллера.
Таким образом, для разработки по этому пути необходимо:
добавить в библиотеку AP_Motors класс для работы с моделью рассматриваемой конфигурации;
добавить дополнительный режим полета или модифицировать один из имеющихся.
Однако при данном подходе к разработке возник ряд трудностей, связанных со сложностью кода APM:Copter и недостатком документации по библиотеке AP_Motors и возможностям ее расширения.
Третий путь является компромиссом между первыми двумя. Он состоит в том, чтобы убрать из кода APM:Copter все части, относящиеся непосредственно к управлению полетом, оставив только вспомогательный функционал, и реализовать алгоритмы управления полетом самостоятельно. В работе было решено использовать именно такой подход.
3.3 Использованные библиотеки APM
В программе использована часть библиотек, входящих в стандартную поставку APM. Библиотеки и функции, которые были использованы, перечислены в таблице 3.
Таблица 3. Используемые библиотеки APM
Библиотека |
Описание |
|
AP_AHRS |
AHRS - сокращение от Attitude and Heading Reference System (система определения положения и курса). Данная библиотека предоставляет набор полей и методов, предназначенных для получения информации о положении модели в пространстве. В программе исползуются следующие поля и методы AP_AHRS: roll_sensor - угол крена модели pitch_sensor - угол тангажа модели; get_gyro() - возвращает вектор угловых скоростей модели по трем осям; get_accel_ef() - возвращает вектор ускорений модели по трем осям. |
|
AP_HAL |
HAL - сокращение от Hardware Abstraction Layer (слой абстракции от аппаратного обеспечения). Данная библиотека представляет собой прослойку, позволяющую разрабатывать программное обеспечение для всех поддерживаемых контроллеров единым образом. В программе используются следующие поля AP_HAL: rcout - объект, предоставляющий функционал для вывода значений на выходные каналы контроллера и для настройки выходных каналов; console - объект, предоставляющий возможность вывода текста на консоль ПО наземной станции (например, для отладочного вывода). |
|
AP_RCChannel |
Данная библиотека предназначена для работы с данными, получаемыми с радиоприемника. Для каждого входного канала библиотека предоставляет объект с рядом полей и методов, среди которых наиболее важны следующие: radio_in - «сырое» значение, полученное с приемника; control_in - значение, обработанное в соответствии с настройками данного канала (например, преобразованное в величину угла); set_type() - метод для настройки того, как вычисляется значение control_in данного канала. |
|
AP_Param |
Библиотека обеспечивает возможность настройки программы с помощью ПО наземной станции. Библиотека поддерживает 255 слотов для параметров, каждый из которых - либо одна числовая переменная, либо набор переменных. Во втором случае необходимо объединить эти переменные в класс и поместить этот класс в библиотеку. |
3.4 Структура программы
3.4.1 Функции управления моделью
Основные функции, добавленные в APM:Copter, находятся в файле hoverbike.pde. Описание функций в этом файле представлено в таблице 4.
Таблица 4. Функции в файле hoverbike.pde
Название функции |
Описание |
|
init_hoverbike() |
Данная функция выполняет необходимые процедуры инициализации, специфичные для конкретной модели: включает выходные каналы 1, 2, 3, 4 контроллера; устанавливает частоту отправки значения на эти каналы 50Гц; считывает коэффициенты из долговременной памяти контроллера. Функция вызывается в конце функции setup() после стандартной инициализации APM:Copter |
|
run_hoverbike() |
Данная функция осуществляет непосредственно управление полетом модели. Она вызывается внутри основного цикла loop() вместо update_flight_mode() (функции, осуществляющей управление полетом в стандартной прошивке APM:Copter, см. описание структуры APM:Copter выше). Функция последовательно вызывает: read_hoverbike_targets(); read_hoverbike_curr(); calc_value() для каждого из 4 выходных значений и осуществляет вывод вычисленных значений на выходные каналы контроллера. |
|
read_hoverbike_targets() |
Данная функция считывает целевые значения для алгоритма управления с датчиков и радиоприемника. Считываются следующие значения: целевой угол тангажа (канал приемника №2) целевой угол крена (канал приемника №1) целевая угловая скорость курса (канал приемника №4) |
|
read_hoverbike_curr() |
Данная функция считывает текущие значения для алгоритма управления с датчиков контроллера. Считываются следующие значения: угол крена угловая скорость крена угол тангажа угловая скорость тангажа курс угловая скорость курса уровень газа на пульте (канал приемника №3) вертикальное ускорение |
|
calc_value() |
Данная функция вычисляет значение одного выходного канала в соответствии с формулой, описанной в главе 2. Параметрами функции являются: массив коэффициентов при значениях в формуле управления; массивы текущих и целевых значений для формулы управления; массивы минимальных и максимальных отклонений; количество показателей в формуле; минимальное, максимальное и нулевое значение выходного канала. |
|
update_hoverbike_coeff() |
Данная функция считывает коэффициенты для алгоритма управления из долговременной памяти контроллера. Функция вызывается при инициализации (в init_hoverbike()) и затем каждую секунду (т.к. коэффициенты могли быть изменены с помощью ПО наземной станции). |
В этом же файле определены переменные и константы, используемые алгоритмом управления. Определено четыре набора переменных - для переднего и заднего руля направления и для переднего и заднего мотора, соответственно с префиксом rudderF, rudderB, thrustF, thrustB. Описание этих переменных и констант представлено в таблице 5.
Таблица 5. Переменные и константы в файле hoverbike.pde
Имя |
Тип |
Описание |
|
<PREFIX>_target |
float[] |
Массив целевых значений для алгоритма управления моделью. Инициализируется нулевыми значениями, затем на каждой итерации заполняется функцией read_hoverbike_targets(). |
|
<PREFIX>_curr |
float[] |
Массив текущих значений для алгоритма управления моделью. Инициализируется нулевыми значениями, затем на каждой итерации заполняется функцией read_hoverbike_curr(). |
|
<PREFIX>_coeff |
float[] |
Массив коэффициентов для алгоритма управления моделью. Заполняется значениями, хранящимися в долговременной памяти, при каждом вызове функции update_hoverbike_coeff() (вызывается при инициализации и затем раз в секунду). |
|
<PREFIX>_minmod |
const float[] |
Массив минимальных отклонений значений для алгоритма управления моделью. |
|
<PREFIX>_maxmod |
const float[] |
Массив максимальных отклонений значений для алгоритма управления моделью. |
|
<PREFIX>_num |
const uint8_t |
Количество значений в формуле для данного выходного канала. Равен 8 для всех четырех каналов. |
|
<PREFIX>_min |
const float |
Минимальное значение выходного канала. Равно 1000 для всех каналов. |
|
<PREFIX>_max |
const float |
Максимальное значение выходного канала. Равно 2000 для всех каналов. |
|
<PREFIX>_zero |
const float |
Нулевое значение выходного канала. Равно 1500 (середина диапазона) для рулей направления и 1000 (нижняя граница) для моторов. |
3.4.2 Настройка коэффициентов через ПО наземной станции
Для обеспечения настройки коэффициентов через ПО наземной станции была добавлена библиотека HoverbikeParams. Библиотека HoverbikeParams представляет собой класс, элементы которого представлены в таблице 6.
Таблица 6. Описание элементов класса HoverbikeParams
Название и тип |
Описание |
|
float _<PREFIX>_k<i> (i = 1..8) |
Защищенные поля, которые содержат коэффициенты для формулы управления. При старте контроллера эти поля автоматически инициализируются значениями, хранящимися в долговременной памяти. |
|
void populate_<PREFIX>() |
Методы, принимающие указатели на массив коэффициентов и заполняющие этот массив значениями коэффициентов, хранящимися в долговременной памяти. Эти методы вызываются функцией update_hoverbike_coeff() из файла hoverbike.pde. |
|
AP_Param::GroupInfo var_info[] |
Служебное статическое поле, необходимое для передачи параметров из ПО наземной станции. |
В файле ArduCopter.pde было добавлено объявление объекта этого класса, и в файлах Parameters.h и Parameters.pde был добавлен код для связывания имен параметров, отображаемых в ПО наземной станции, с этим объектом. Скриншот окна настройки добавленных параметров в ПО наземной станции Mission Planner изображен на рис.
Рисунок 6. Настройка коэффициентов алгоритма управления в Mission Planner
Заключение
В рамках данной работы было разработано программное обеспечение для контроллера Pixhawk, обеспечивающее дистанционное управление моделью мультикоптера на воздушной подушке. Разработанное ПО позволяет обеспечивает выполнение моделью следующих действий:
зависание над горизонтальной поверхностью и стабилизация;
полет над горизонтальной поверхностью.
В процессе разработки данного ПО было изучено устройство набора библиотек и управляющих программ APM, используемых при разработке для Pixhawk, а также разработан и реализован алгоритм управления моделью мультикоптера рассматриваемой конфигурации.
Экспериментальная проверка разработанного программного обеспечения показала, что разработанный алгоритм обеспечивает приемлемый уровень управления моделью, но можно модифицировать его для более высокой точности управления.
Дальнейшие направления разработки могут включать в себя:
добавление дополнительного функционала, например, возможность автоматического плавного взлета и посадки;
добавление дополнительных показателей в алгоритм, например, высоты полета модели над поверхностью;
модификацию формул, используемых в алгоритме, для добавления большей гибкости в управлении (например, добавить зависимость отклонения рулей направления от скорости вращения моторов).
Список использованных источников
1. Amyot JR, редактор. Hovercraft Technology, Economics and Applications. Elsevier, 1989.
2. Rickard W.E., Brown J. Effects of Vehicles on Arctic Tundra // Environmental Conservation, Т. 1, № 1, Март 1974. С. 55-62.
3. Arrow L., Gould W.M., Langley D.C. South East Peru II: Delivery of Primary Medical Care by Hovercraft Along the Apurimac River // British Medical Journal, Т. 288, Февраль 1984. С. 376-378.
4. Dickins D.F., Cox M., Thorleifson J. Ice Tech 2008 // Arctic Patrol Hovercraft: An Initial Feasibility Study. 2008.
5. Tolley R.S. New Technology and Transport Geography: The Case of the Hovercraft // Geography, Т. 58, № 3, Июль 1973. С. 227-236.
Размещено на Allbest.ur
Подобные документы
Пульт дистанционного управления на ИК лучах. Протокол RC-5 и принцип его работы. Разработка ИК пульта и приемника дистанционного управления. Алгоритм программы обработки прерывания ИК приемника. Разработка схемы электрической принципиальной ИК пульта.
курсовая работа [5,7 M], добавлен 01.02.2013Виды релейных регуляторов и режимов их работы. Система с эталонной моделью. Простейшая релейная система. Вибрационный и автоколебательный режимы движения систем. Скользящие режимы в системах с переменной структурой. Система с регулятором переключений.
лабораторная работа [3,7 M], добавлен 25.11.2015Классификация адаптивных систем. Достоинства и недостатки типов и классов адаптивных, самонастраивающихся систем. Разработка оригинальной схемы адаптивной системы. Системы со стабилизацией основного контура, идентификатором или уточняемой моделью объекта.
статья [327,2 K], добавлен 24.07.2013Характеристика, применение и назначение микроконтроллерных систем управления. Разработка контроллера инверторного сварочного аппарата, обеспечивающего работу манипулятора. Общий алгоритм работы, составление программного обеспечения для данного блока.
курсовая работа [1,6 M], добавлен 26.12.2012Разработка микропроцессорной системы на основе микроконтроллера. Пульт дистанционного управления на инфракрасных лучах. Разработка инфракрасного пульта и приемника дистанционного управления. Технико-экономическое обоснование объекта разработки.
дипломная работа [5,3 M], добавлен 14.07.2010Синтезирование методом функций Ляпунова безынерционных адаптивных алгоритмов сигнального и параметрического типа для управления техническими объектами с ограниченной неопределенностью по схеме с настраиваемой моделью. Закон настройки элементов матрицы.
статья [302,1 K], добавлен 11.06.2015Алгоритм функционирования контроллера имитатора навигационного сигнала, его упрощенная структурная схемы. Спецификация входных и выходных сигналов. Разработка аппаратной части заданного блока контроллера и программного обеспечения. Исходный код программы.
курсовая работа [1,1 M], добавлен 13.10.2017Разработка структурной, функциональной, принципиальной схемы тестера для проверки пультов дистанционного управления RC-5. Описание элементной базы: микроконтроллер AT90S2313, приемник ILMS5360, индикатор CA56-12SRD. Временные диаграммы работы устройства.
курсовая работа [350,4 K], добавлен 21.04.2011Функциональная схема контроллера, управляющего роботизированной платформой перемещения предметов. Модули управления двигателями, структуры микросхем драйверов. Алгоритм функционирования программы, обеспечивающей управление по заданному алгоритму.
курсовая работа [1,7 M], добавлен 28.12.2012Ознакомление с моделью взаимодействия открытых систем (OSI), программным пакетом Packet Tracer. Изучение работы устройств 1-го и 2-го уровней. Построение локальной сети посредством коммутатора Коммутатор0. Эталонная модель взаимодействия открытых систем.
лабораторная работа [2,0 M], добавлен 14.12.2014