- PVSM.RU - https://www.pvsm.ru -
Для программирования дрона сегодня не надо разбираться в физике полета и прочих тонкостях, поскольку эти вопросы за вас уже решили разработчики контроллеров и SDK. Тем не менее, тема остается не такой простой. И в этом посте мы хотим рассказать, с какой стороны к ней подступиться.
Фото с омского «Хакатона по применению малых БПЛА»
Под катом — из чего состоит дрон, какие бывают комплекты и как начать с ними работу.
Если рассуждать о глубине погружения в тему программирования беспилотных летательных аппаратов, можно выделить два «уровня»:
На Хабре любят DIY и тут довольно много рассказов о деталях второго уровня (например вот этот пост [1]), в то время как первый до сих пор охвачен слабо. В основном обсуждают детали программирования в определенном SDK или сравнивают аппараты, что понятно лишь тем, кто в теме. Так что далее будем говорить именно про первый уровень.
Программирование под готовые платформы выводит летательные аппараты далеко за рамки класса «игрушек». Это полноценная разработка, которая просто использует библиотеки и функции автопилота для серийно выпускаемого дрона (или для open source полетного контроллера), так что создатель программы может сосредоточиться на решении своей задачи, будь то аэрофотосъемка или воздушные световые шоу.
Самое важное: программирование позволяет снять с оператора часть задач по управлению в режиме реального времени, что на самом деле упрощает применение БПЛА. Не у каждого любителя фотосъемки найдется время и желание учиться пилотировать дрон в сложных условиях.
Исторически сложилось так, что беспилотники классифицируют по исполнению — самолетному и мультироторному. Мультироторные можно разделить по количеству винтов: монокоптеры, квадрокоптеры, гексакоптеры и т.д. Такие БПЛА получили широкое распространение, поскольку им не нужны дополнительные устройства для взлета и посадки. Недавно появился третий класс БПЛА — конвертопланы. Но такая конструкция чаще встречается в специализированных разработках.
Конструкция определяет возможное применение. Сфер, где успели «засветиться» беспилотные летательные аппараты уже довольно много. Даже если говорить только о «гражданских» машинах (не ориентированных на военных или спасателей), это:
Применение беспилотника во многом определяется тем, какую полезную нагрузку он способен нести: может ли поднять посылку с грузом или вынужден ограничиться экшн-камерой.
Доступность обучающих комплектов уже потянула за собой массовое появление как кружков по работе с дронами, так и всевозможных мероприятий — семинаров, мастер-классов, олимпиад.
Обучающий набор DJI EDU
Например, в конце января в Точке кипения Омского технического университета (ОГТУ) проходил хакатон [2], посвященный программированию дронов.
Один из организаторов хакатона — Александр Голунов [3] — помогал нам в подготовке этого поста
Любопытно, что до мероприятия ребята, принимавшие в нем участие, не были знакомых с беспилотниками. Некоторые из них увидели дрон вживую первый раз в жизни. Но после знакомства — блочной сборки, настройки, калибровки БПЛА, а также построения виртуального полетного плана — они смогли предложить новые способы применения дронов в быту. Как бы это о том, что ничего сложного тут, в целом, нет.
С точки зрения железа дрон состоит из:
Пример состава оборудования программируемого дрона с полетным контроллером pixhawk
Насколько легко или сложно управлять конкретным дроном, в том числе и программировать его, определяет полетный контроллер и его программное обеспечение. Именно на него ложится задача управления физикой полета. Благодаря контроллеру оператору достаточно знать только базовые понятия и определения, и нет необходимости защищать докторскую по аэродинамике, чтобы совершить первый полет.
Контроллер решает классические задачи по:
Полетный контроллер Arducopter
Полетный контроллер DJI A3 [4]
Полетные контроллеры присутствуют на рынке как самостоятельно, так и в составе готовых дронов.
Среди готовых решений широко известны китайские DJI. Вслед за полетным контроллером, шесть лет назад, китайцы предложили SDK, с которым можно создавать вполне профессиональные решения. Вот лишь небольшой список уже решенных задач:
В 2018 году полиция Нью-Йорка обзавелась 14 дронами (фото: CNN)
Понятно, DJI — не единственный пример. SDK есть у Parrot, 3DR, Skydio, Yuneec (правда 3DR, Yuneec и Parrot работают с open-source-платформами, о них мы поговорим далее).
По сути сейчас мы наблюдаем процесс формирования целого рынка программного обеспечения для таких программируемых дронов.
Некоторое ПО, в т.ч. на DJI (несмотря на то, что он не open-source) можно найти на GitHub.
Кстати, образовательные решения тут тоже есть. Например, тот же DJI выпускает специальный комплект из нескольких дронов, рассчитанный на обучение целой группы студентов программированию на Scratch, Python и Swift.
Помимо проприетарных, есть множество DIY-решений, основанных на популярных универсальных полетных контроллерах. Откровенно говоря, DIY-сообщество в свое время и стало родоначальником всего рынка управляемых дронов. Компании с рынка радиоуправляемых моделей взялись за разработку БПЛА лишь тогда, когда идея стала популярна в народе и можно было построить какие-то бизнес-прогнозы.
DIY-решения обычно опираются на какую-то из доступных систем управления (автопилотов), например Ardupilot или Pixhawk. А контроллер подбирается из списка поддерживаемых для выбранного автопилота. Впоследствии его можно даже доукомплектовать оборудованием (если прошивка позволяет это сделать). Под такие решения есть свои универсальные платформы разработки, например MAVSDK (его поддерживают 3DR, Yuneec и Parrot).
По аналогии с 3D-принтерами некоторые производители выпускают кит-комплекты для DIY дронов. К примеру, в упомянутом выше хакатоне ребята работали с дронами «Иволга» отечественного производства. Есть и другие примеры, например, Ardupilot, как производитель, предлагает на рынке собственные наборы, цена на которые варьируется в зависимости от комплектации.
Пример [5] комплекта с Aliexpress
На базе open source контроллеров встречаются и промышленные решения.
Начиная с самосборных решений под управлением готового автопилота, некоторые энтузиасты переходят к разработкам собственного автопилота. Так мир open source в этой части постоянно расширяется. Однако это задача не для новичка. Поскольку суть заключается не столько в самом программировании, сколько в решении инженерных задач.
В двух словах программирование дрона сводится к контролю координат промежуточных точек и высоты над землей с одновременным управлением полезной нагрузкой в зависимости от поставленной задачи.
Используемый для программирования язык, как и среда разработки, определяется системой управления, а в случае с проприетарными решениями — производителем контроллера.
Но пока на рынке царит настоящий зоопарк подходов и языков.
Часть производителей вообще предлагает собственные среды — как упомянутый выше DJI.
Сообщества, разрабатывающие опенсорсные полетные контроллеры, от них не отстают. Исторически сложилось, что большинство DIY решений основано на среде Arduino. Тот же Ardupilot в свое время разрабатывался для управления дроном с контроллером ATMega 2560, а в качестве среды разработки использовал оболочку Arduino. Но сегодня этого уже недостаточно. Задачи, возложенные на беспилотники, усложняются, а вслед за этим растут требования к железу и ПО. Так что аппаратная составляющая меняется. Даже опенсорсные решения уже базируются не на контроллерах, а на полноценных процессорах с ARM-архитектурой (по аналогии со смартфонами). Среды разработки, соответственно, также дорабатываются и усложняются. Они становятся кроссплатформенными, но пока все еще ориентированы на конкретный автопилот. И хотя на данный момент существуют общепринятые частные стандарты (например, передачи данных или взаимодействия беспилотников с наземными станциями), до выявления лидера среди языков разработки и SDK пока далеко.
С точки зрения гарантированного выбора направления развития этот этап становления рынка абсолютно непредсказуем. Однако именно сейчас время самых интересных проектов, ведь столько задач еще не решено!
Учитывая разнообразие решений на рынке, мы не имеем возможности рассказать о всех вариациях в программировании дронов, но покажем, как это происходит на паре примеров.
Для программирования проприетарного дрона DJI необходимо зарегистрировать [6] девелоперский аккаунт.
Далее необходимо скачать SDK с сайта производителя. У DJI предусмотрены разные SDK в зависимости от того, что планируется программировать — наземную станцию, управление полезной нагрузкой или самим полетом. Важно выбрать правильный и убедиться, что имеющееся оборудование (будь то дополнительные датчики дрона или мобильное устройство) поддерживается. Дальнейший процесс рассмотрим на примере мобильного SDK (по прочим SDK на сайте производителя есть подробная документация).
SDK включает:
В своем приложении разработчик может контролировать полет, использовать данные с камеры или датчиков на борту дрона, следить за состоянием систем на борту. При этом SDK берет на себя заботу о низкоуровневом функционале — стабилизации полета, управлении питанием.
Логическая схема подключения к дрону представлена на картинке:
Прежде чем приступать к разработке, необходимо сгенерировать для приложения уникальный App Key, который активирует SDK.
Сам процесс разработки зависит от рассматриваемой платформы (iOS или Android). Подробно и для Android, и для iOS он описан в документации, а на GitHUB есть примеры простейших приложений для каждой из этих платформ. Есть замечательное видео [7], описывающее весь процесс создания простейшего приложения.
Для запуска скомпилированное приложение необходимо перенести на мобильное устройство. Непосредственно перед запуском устройство также надо подключить к дрону по Wi-Fi или через USB-кабель (тип подключения зависит от конкретного устройства).
Pixracer — одно из поколений полетного контроллера Pixhawk, который широко используется в DIY-проектах.
Для программирования этого полетного контроллера используется библиотека ROS (Robot Operating System), которая позволяет управлять дронами с помощью MAVLink (пакет называется MAVROS). Писать можно на Python, используя клиент для этой библиотеки под названием rospy.
Для запуска приложения необходимо подключиться по SSH к полетному контроллеру.
С DIY-проектами процедуру программирования в общем виде описать гораздо сложнее, нежели с проприетарными решениями, поскольку слишком многое зависит от деталей прошивки. Для kit-комплектов, которые зачастую построены именно на открытых разработках, обычно есть подробная инструкция по программированию.
Автор: Elizaveta
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/diy/349238
Ссылки в тексте:
[1] вот этот пост: https://habr.com/ru/post/227425/
[2] хакатон: https://leader-id.ru/event/40958/
[3] Александр Голунов: https://leader-id.ru/308109/
[4] DJI A3: https://www.dji.com/ru/a3
[5] Пример: https://aliexpress.ru/i/32713412392.html
[6] зарегистрировать: https://account.dji.com/register
[7] видео: http://www.djivideos.com/video_play/7fefabf9-b8c6-483c-be3d-de1858c48fe8
[8] Источник: https://habr.com/ru/post/491770/?utm_source=habrahabr&utm_medium=rss&utm_campaign=491770
Нажмите здесь для печати.