Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр

Notice: Undefined index: HTTP_ACCEPT in /home/n/newavtjc/radiocopter.ru/public_html/wp-content/plugins/realbig-media/textEditing.php on line 823
Содержание
  1. Основные виды аппаратов
  2. Начало настройки
  3. Что делать, если для вашего дрона нет специального приложения
  4. Введение
  5. Как образовательный коптер помогает научиться программировать на python, и что не так с lua
  6. Google Планета Земля
  7. . Litchi для дронов DJI (специальное рассмотрение)
  8. Авиакарта
  9. B4UFly FAA
  10. Прогноз БПЛА
  11. Киттихаук
  12. Проверить
  13. Автономный маршрут доступа
  14. Актуальность и востребованность направления
  15. Архитектура
  16. Бонус: wing aviation opensky от google
  17. Выбор готового дрона
  18. Достоинства и недостатки такого способа подключения
  19. Запуск технологии распознавания лиц
  20. Как все реализуется на практике
  21. Как повернуть дрон?
  22. Как работает parrot ardrone
  23. Коммерческие дроны (commercial)
  24. Кому подойдет такой способ управления
  25. Курс: программирование дронов от skillbox
  26. Лучшие приложения для дронов:
  27. Подключение дрона к телефону или планшету: пошаговое руководство
  28. Преимущества
  29. Программа обучения
  30. Программирование дрона
  31. Разбираемся с коптером
  32. Резюмируя
  33. Съемка потокового видео с дрона
  34. Управление квадрокоптером с телефона
  35. Управление полетом с веб-страницы
  36. Управление полетом командной строкой
  37. Установка и запуск jmavsim на windows
  38. Установка системы распознавания речевых команд
  39. Чему научитесь
  40. Выводы

Основные виды аппаратов

По особенностям конструкции можно выделить 3 основных разновидности:

  1. Коптеры – мультироторные устройства.
  2. Самолетные дроны fixed wing
  3. Гибридные модели, которые взлетают вертикально, а во время полета используют крылья.

Кроме того, все существующие дроны разделяются на 2 большие категории по типу их использования – коммерческие и потребительские.

Устройство обычно имеет такие детали:

  • Раму для крепления агрегатов и защитного кожуха или другой формат защиты от механических повреждений.
  • Роторы.
  • Аккумулятор.
  • Набор датчиков. В зависимости от сложности дрона и его задач набор используемых датчиков может отличаться. На нем могут быть установлены трехосевые акселерометры, трехосевые датчики угловой скорости, магнитометр, барометр, гироскоп, компас, приемник системы глобального позиционирования.
  • Модули связи.
  • Полезная нагрузка. Дополнительная камера на подвесе, дальномер, сонар, т.д.
  • Полетный контроллер.
Смотрите про коптеры:  DJI Mavic Pro Fly More Combo (CP.PT.00000059.01) – купить квадрокоптер, сравнение цен интернет-магазинов: фото, характеристики, описание | E-Katalog

Начало настройки

По умолчанию Parrot AR 2.0 раздает собственную клиентскую беспроводную сеть.  Это невероятно усложняет взлом устройства. Каждый раз, когда вы что-то предпринимаете, вам необходимо отсоединиться от своей сети и подключиться к сети дрона. К счастью, существует очень полезный проект ardrone-wpa2, который поможет настроить дрон на подключение к вашей Wi-Fi сети.

Очень весело использовать протокол Telnet и экспериментировать, Parrot начинает напоминать урезанную версию Linux. Когда вы в последний раз подключались к чему то через Telnet? Вот пример, как можно открыть терминал и войти непосредственно в систему дрона.

% script/connect “The Optics Lab” -p “particleorwave” -a 192.168.0.1 -d 192.168.7.43

% telnet 192.168.7.43

Что делать, если для вашего дрона нет специального приложения

В этом случае вы можете воспользоваться универсальными утилитами из следующего списка:

  • FreeFlight Pro – разработана для BEBOP и SCYCONTROLLER;
  • DroneDeploy – утилита для DJI, включающая в себя режим автопилот;
  • Litchi – приложение для дронов DJI Mavic / Phantom / Inspire / Spark;
  • UgCS – еще одно ПО для DJI;
  • Pix4D – универсальный скрипт, который позволяет заранее прописать траектории полета над местностью;
  • Raptor Maps – универсальное ПО, которое будет работать со многими дронами.

Научиться подключать квадрокоптер к телефону по WiFi и управлять беспилотником мы научим вас в нашей Школе Пилотов.

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

Рычаги управления почти всегда находятся в режиме «mode 2» — предположим, что в вашем случае так и есть. Если устройство находится в режиме «mode 1», значит ускорение задается правой рукой, а не левой. Обычно лучше переключиться в режим 2.

Flight Ipad Dji Signal Drone Remote Control

Метод запуска винтов зависит от модели — ознакомьтесь с руководством пользователя. Например, в распространенных моделях DJI нужно потянуть оба рычага вниз и навстречу друг другу. У некоторых беспилотных летательных аппаратов на пульте управления или в приложении для телефона/планшета есть кнопка автоматического взлета.

Пока вы не набрали достаточно опыта, встаньте за беспилотником, а не рядом и не впереди него — так проще. Предварительно уточните, где у дрона зад и перед 🙂

Передвигая рычаги, помните: достаточно самых маленьких движений. Метод «педаль в пол» почти всегда плохая идея, это может привести к крушению аппарата. Левый рычаг контролирует высоту: если сдвинуть его вверх, то винты начнут вращаться быстрее, и дрон поднимется выше; вниз — вращение винтов замедлится, беспилотник пойдет на снижение.

Если вы новичок, то, запуская дрон, станьте позади него

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

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

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

Если передвинуть правый рычаг вперед, дрон двинется вперед. Оттяните рычаг назад — он полетит назад, к вам, если вы стояли сзади, как при дистанционном управлении игрушечной машинкой.

Некоторые модели снабжены приложениями для управления со смартфона

Чтобы квадрокоптер двигался в сторону, просто переведите правый рычаг влево или вправо. Если стоите перед беспилотником, то, соответственно, переведите рычаг в сторону, противоположную желаемому направлению, как и в случае с радиоуправляемым автомобилем.

Введение

Дроны восхитительны. Мне очень нравится играть со своим коптером, записывая фото и видео или просто развлекаясь. Но беспилотные аппараты (БПЛА) используются не только для развлечения. Они работают в кинематографе, изучают ледники, применяются военными и представителями сельскохозяйственной сферы.

В этом туториале мы разберем создание программы, которая позволит управлять дроном. используя голосовые команды. Да, коптер будет делать то, что вы ему говорите. В конце статьи — готовая программа и видео управления БПЛА.

Как образовательный коптер помогает научиться программировать на python, и что не так с lua

Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр

Почти 4 года прошло с выпуска первой статьи об учебном квадрокоптере Геоскан Пионер. За это время формат конструктора для сборки учебного квадрокоптера успел набрать популярность – он хорошо подходит как для организации учебного процесса со школьниками или студентами, так и для использования на различных хакатонах, соревнованиях, или при выполнении на его базе исследовательских проектов.

Ключевые элементы обучения на сегодняшний день – это развитие навыков программирования для решения задач автономного полета коптера, понимание основ алгоритмов управления и работа с различными функциональными модулями. Для юных пользователей порог входа был снижен за счёт возможности использования визуального блочного программирования в плагине для TRIK-Studio, а вот создание более сложных программ требовало знакомства с языком Lua.

В 2020 году линейка Пионеров дополнилась новыми моделями – появились младший  и старший «братья»  Мини и Макс. И если по размеру и массе братья стоят по ранжиру  – Мини самый маленький и легкий, а Макс самый большой и тяжелый, то по функционалу младший уже готов дать фору своему предшественнику (назовём его Классическим Пионером).

Во-первых, уже в базовой комплектации Пионер Мини имеет видеокамеру с возможностью передачи видео по Wi-Fi. Во-вторых, он оснащен датчиками, которые могут обеспечивать автономный полёт в помещениях с использованием сразу нескольких систем навигации – УЗ и ИК (подробнее про них расскажу в отдельном материале). Если вкратце – это внешние системы позиционирования в помещении, которые позволяют коптеру ориентироваться в локальной, зафиксированной системе координат, связанной с точкой взлета. В случае отсутствия системы навигации коптер не потеряется, т.к. имеет датчик оптического потока и TOF дальномер.

Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр
Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр
Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр

Все эти функции доступны и Классическому Пионеру, но требуют использования отдельных модулей расширения. Концепция с дополнительными модулями позволяла адаптировать базовый набор под различные учебные или соревновательные кейсы. Например, модуль захвата груза в паре с модулем GPS позволяет реализовать простейший кейс поисковой операции. Однако для тех, кто только начинает свое знакомство с коптерами такое разнообразие может оказаться лишним и даже пугающим, поэтому для таких пользователей и был создан Мини: недорогой, ударопрочный коптер, который “из коробки” оснащён самым необходимым для автономных полетов в помещении. Ну и в-третьих, благодаря наличию Wi-Fi удалось добавить для Мини  возможность программировать на Python.

Какая связь? Сейчас поясню.

Пионер Мини рассчитан на полёт в помещении, и применение на нём Wi-fi в качестве канала связи было не только оправдано, но и открыло новые возможности по сравнению с Классическим Пионером, где обеспечивалась только узкополосная, но дальнобойная связь в канале 868МГц. Простота подключения (без использования доп. модулей), высокая скорость передачи данных и поддержка протокола MAVLink в совокупности позволяют осуществлять программирование квадрокоптера удаленно, используя, к примеру, ноутбук, на котором запущена программа. В данном случае коптер как бы визуализирует код, написанный пользователем на компьютере. При этом все, что происходит с коптером можно отслеживать на экране ноутбука в реальном времени, в том числе по изображению с видеокамеры.

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

Почему Lua не лучший вариант для обучения программированию:

Несмотря на большие возможности Классического Пионера за счет разнообразных модулей расширения, часто “узким горлышком” учебного задания или проекта становился именно подход к реализации скрипта на квадрокоптере.

Постараюсь объяснить это на примере.

Есть типичная для школьных олимпиад по робототехнике задача – получить картинку с камеры и на основании какой-то информации с нее полететь в нужную сторону. Если вы работаете с техническим зрением, то в голове сразу выстраивается картина: берем OpenCV, обрабатываем видеопоток, выдаем команду. Но с Пионером не все так просто…

Контроллер автопилота решает только задачи управления и связи, при этом пользовательские скрипты на Lua запускаются внутри интерпретатора, который сам является частью прошивки. Поэтому вычислительные мощности автопилота как и набор доступных интерфейсов оказывается ограниченным и логичным решение является использование внешнего вычислителя. Например, мы можем подключить к автопилоту модуль с камерой OpenMV H7, которая имеет достаточно мощный контроллер для обработки изображений и способна выдавать результаты обработки в виде команд в декартовых координатах. Дальше нас ждут сюрпризы. Среда программирования Pioneer Station, поддерживает только работу с автопилотом, позволяя написать код на Lua  и загружать его в коптер. Для работы с камерой нужно отдельно установить среду OpenMV IDE, и оказывается, что камера программируется уже на MicroPython… К слову, IDE для камеры довольно хорошая и поддерживает отладку, правда отследить работу программы можно только по светодиодам – отладчик для работы Lua скриптов внутри автопилота не предусмотрен. Камера с автопилотом может быть соединена по интерфейсу UART, а для её подключения к автопилоту, для крепления на раме коптера используется плата адаптер.

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

Здесь и пришла идея об удаленном программировании, когда основной код выполняется на ноутбуке, а коптер лишь является источником данных и исполнителем команд. При реализации нового режима долгих споров о выборе языка программирования не было. Конечно, Python.

Python в последние годы де-факто стал образовательным стандартом, когда речь заходит об обучении программированию. Во многом благодаря низкому порогу вхождения и таким свойствам языка, как динамическая типизация, упрощенное ООП и удобство использования библиотек. В интернете сейчас есть много образовательных курсов, направленных именно на первое знакомство с программированием через Python. В контексте применимости к робототехническим кейсам язык себя хорошо зарекомендовал, в первую очередь из-за своих скриптовых корней, однако если в лоб начать сравнивать его с Lua, то станет понятно, что у Python есть свои ограничения в быстродействии. Но опять же, когда мы говорим об образовании, на первые роли выходит удобство и понятность, а быстродействие обычно описывается фразой „лишь бы работало…“

Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр

Lua является очень быстрым и легким скриптовым языком во многом потому, что из коробки в нем практически ничего нет. И тут Python с пакетным менеджером просто не оставляет ему шансов. Вернусь к вышеописанной задаче по обработке изображения. Вполне логичной кажется ситуация, когда скрипт должен работать в асинхронном режиме. Я имею ввиду, что обработка изображения не должна „вешать” часть кода, связанную с отправкой команд управления дрону. На Python уже „из коробки” стоят пакеты threading и multiprocessing, к которым в придачу идет отличная документация и примеры, когда как на Lua скорее всего я найду чей-нибудь проект на github-е, и если в нем окажется хороший readme, это уже будет огромной удачей. Также важным фактором является и то что, Python используется как нативный язык для ROS, что позволяет сильно облегчить процесс понимания разработки своих роботов.

Другим преимуществом Python в образовательной робототехнике является организация „экосистемы“ обучения. Касательно квадрокоптеров многие задачи строятся вокруг создания алгоритмов полета на основе обработки информации с сенсоров, поэтому очень удобно проводить расчеты и визуализировать процессы в одной среде.

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

Чем сейчас удобна работа с библиотекой:

Библиотека для программирования Пионер Мини на Python выложена как open-source проект на github, а так же может быть установлена используя pip с хранилища PyPi. Это, по сравнению с применением Lua скриптов, позволило реализовать полноценную версионность и дало нам уверенность в том, что пользователь сам может узнать об актуальной версии библиотеки.

Реализация библиотеки представляет собой класс квадрокоптера, в котором присутствуют методы по получению изображения с камеры квадрокоптера, полета, управлению светодиодами и получению “сырых” данных с датчиков. Освоив работу с ними с помощью преподавателя, ничего не мешает ученику внедрить свои идеи в скрипт квадрокоптера: будь то распознавание объектов или ARUCO маркеров, использование нейросетей, построение различных регуляторов и т.д. В дополнение к этому был реализован метод запуска предварительно залитого на коптер Lua скрипта по воздуху (в дальнейшем хочется также реализовать загрузку скрипта, чтобы уже написанные образовательные методики могли использоваться удобнее).

Также, опираясь на опыт разработки полетных заданий на Lua, часто случались ситуации когда ученик совершал „фатальную“  ошибку в коде, которая могла привести к полному крашу коптера. Используя Python, удобно применять механизм прерываний по нажатию клавиш на клавиатуре, который позволяет спасти квадрокоптер в таких ситуациях либо же корректно завершить скрипт. Что не менее важно, так это на примере объяснять ученикам важность механизмов защиты и предусматривать их с самого начала работы.

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

Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр

Как самый свежий пример расскажу вкратце об опыте работы с Python на Пионере Мини в ФМЛ № 239 г. Санкт-Петербурга. Школьники Центра робототехники в январе этого года работали с установкой всего необходимого ПО (PyCharm Community и Pioneer Station 1.11.0.), перепрошивали ESP-32 до версии 0.2.7., учились подключать компьютер к дрону. В итоге за одно занятие они смогли разобраться и запустить скрипт калибровки камеры на Python.

Сейчас у них есть возможность опробовать другие примеры скриптов и создать свои уникальные кейсы, например, реализовывать полёт Пионер Мини по линии (с помощью библиотек OpenCV и pioneer_sdk).

Все ученики говорят, что для них плюсы в работе с Пионером Мини – это широта возможностей коптера, способность полноценной реализации функций компьютерного зрения с помощью библиотеки OpenCV и компактность дрона. У всех есть большой интерес и к появлению дополнительных модулей (для изучения Python и видеозрения).

Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр
Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр
Программируем голосовое управление коптером с использованием Node.js и ARDrone / Хабр

Google Планета Земля

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

Безопасные места для полетов — это одно, но прежде чем вы доберетесь до него, почему бы не просмотреть Google Планета Земля, чтобы найти исключительные места для полетов. Google Планета Земля бесплатна для смартфона Android, а также доступна в Интернете.

Связанный пост:Лучшие дроны, какой купить?

. Litchi для дронов DJI (специальное рассмотрение)

Мы все знаем, что вам нужны официальные приложения DJI GO, DJI GO 4 и DJI Fly, чтобы управлять любимыми дронами DJI, верно? Неправильно! Есть несколько альтернативных приложений, которые могут взять под контроль ваш DJI Mavic Pro, DJI Spark, дрон серии DJI Phantom и другие, лучшие из этих приложений, которые мы пробовали на сегодняшний день Litchi.

Полное название приложения длинное, но поясняет большую часть того, что оно делает. Litchi для DJI Mavic/Phantom/Inspire/Spark — это надежное приложение, которое поддерживает то же ощущение, что и приложения DJI, но работает немного по-другому. В принципе, если вы ищете лучшее из приложения DJI, а также несколько новых удовольствий, Litchi стоит вашего внимания. Полеты по путевым точкам и встроенные функции VR/FPV являются ключевыми факторами, которые привлекли меня в Litchi.

Авиакарта

Airmap — это один из тех инструментов, который делает гораздо больше, чем просто наносит на карту потенциальное место полета или помогает вести журнал полета. При поддержке таких компаний, как Microsoft и Qualcomm, не говоря уже о таких игроках, как Yuneec, Airmap быстро становится де-факто инструментом для коммерческих полетов дронов.

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

B4UFly FAA

Давайте будем предельно простыми: FAA — это организация, которая обеспечивает соблюдение законов о дронах в России, и это их приложение, которое сообщает, где и когда вы можете летать. Я мог бы остановиться на этом, но я чувствую, что вы должны знать, что B4UFly иногда немного властен, говоря, что вы не можете летать в некоторых местах, где можете.

Тем не менее, приложение предоставляет один из самых подробных списков аэропортов с указанием радиуса действия каждого из них 8 киллометров. Если есть сомнения, то приложение B4UFly сводится к тому, как вы можете обратиться к источнику юридической информации о полетах дронов в России.

Прогноз БПЛА

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

Предоставляется различная информация о пилотировании, включая скорость и направление ветра, охлаждение и температуру ветра, облачный покров, видимость и многое другое. Чтобы не отставать от других приложений, UAV Forecast также обеспечивает отображение видимых бесполетных зон.

Связанный пост: Лучшие карты microSD, какую купить?

Киттихаук

Давайте посмотрим, мы рассмотрели приложения, которые проверяют погоду, приложения, которые имеют карты со списками бесполетных зон, карты с активной информацией о воздушном движении, приложения, которые ведут журналы полетов и помогают отслеживать дроны, теперь одно приложение, которое делает все из вышеперечисленных. Kittyhawk:

Drone Operations — это надежное приложение и платформа, включающая в себя все, от проверок перед полетом до анализа после полета. Kittyhawk — это амбициозное приложение и платформа, готовые поднять вас в воздух и максимально использовать ваше время в небе.

Проверить

Страхование. Любите вы это или ненавидите, страхование важная часть современной жизни. В отличие от страховки автомобиля или дома, по которой вы ежемесячно платите страховой взнос, Verifly предлагает нечто иное: страхование по требованию. Идея проста: ваши полеты, особенно коммерческие, либо слишком редки, либо слишком рассредоточены и непредсказуемы, чтобы брать на себя обязательство по страхованию на полный рабочий день.

Verifly позволяет вам регистрировать время начала и окончания, а затем просто платить за то, что вы используете. Начинается от 10 долларов в час. Нажмите кнопку загрузки ниже, чтобы увидеть более подробную информацию о фактическом покрытии. Политика гарантируется Global Aerospace, Inc.

Автономный маршрут доступа

Я использовал библиотеку ardrone-autonomy для планирования автономного маршрута доступа для моего дрона. После многочисленных столкновений с мебелью и домашними цветами в гостиной моя жена деликатно предложила мне перенести тестирование моего проекта в гараж, где меньше того, что можно сломать, но меньше пространства для маневров.

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

var autonomy = require(‘ardrone-autonomy’);

var mission = autonomy.createMission({ip: ‘10.0.1.3’, frameRate: 1, imageSize: ‘640:320’});

console.log(“Here we go!”)

mission.takeoff()

         .zero()         // Sets the current state as the reference

         .altitude(1)

         .taskSync(console.log(“Checkpoint 1”))

         .go({x: 0, y: 0, z: 1, yaw: 90})

         .taskSync(console.log(“Checkpoint 2”))

         .hover(1000)

         .go({x: 0, y: 0, z: 1, yaw: 180})

         .taskSync(console.log(“Checkpoint 3”))

         .hover(1000)

         .go({x: 0, y: 0, z: 1, yaw: 270})

         .taskSync(console.log(“Checkpoint 4”));

         .hover(1000)

         .go({x: 0, y: 0, z: 1, yaw: 0

         .land()

Актуальность и востребованность направления

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

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

Сегодня беспилотники чаще всего используются в таких целях:

Архитектура

Я решил запустить логический алгоритм на ноутбуке, а систему машинного обучения – в облаке. Такая схема позволила снизить время ожидания по сравнению с запуском нейросети непосредственно на компьютере Raspberry PI , и я считаю, что она является целесообразной для любительских дрон-проектов.

Microsoft, Google, IBM, и Amazon предлагают недорогие облачные интерфейсы машинного обучения. Я выбрал Microsoft’s Cognitive Service для этого проекта, так как это единственный интерфейс, поддерживающий настраиваемое распознавание лиц.

Бонус: wing aviation opensky от google

Ребята из Google начинают веселиться. OpenSky — это простое приложение для обнаружения ограничений воздушного пространства и получения разрешения LAANC на полеты в контролируемом воздушном пространстве. Первый запуск этого приложения имеет очень мало функций, так как мы не могли видеть другие полеты в нашей области, дроны или пилотируемые летательные аппараты, а также мы не могли подтвердить, что наши полеты, не зарегистрированные в LAANC, в OpenSky сообщали другим приложениям и картам, чтобы увидеть место полета.

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

Выбор готового дрона

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

Большинство производителей дронов обещают предоставлять программный интерфейс (API), но среди них нет лидера, который мог бы предоставить экосистему для любителей. Большинство дронов с удобным интерфейсом стоят более $1000, что является серьезной преградой.

После некоторых поисков, мне удалось найти Parrot AR Drone 2.0, который, по моему мнению, является удачным выбором, если вам нужен недорогой и легко программируемый дрон для развлечений. Вы можете купить новый за $200, но, учитывая количество людей, которые их покупают и никогда не используют, лучше купить подержанный на eBay менее чем за $130.

Parrot AR не так стабильно летает, как гораздо более дорогой (около $550) новый Parrot Bebop 2, но для Parrot AR существует клиентская библиотека на node.js под название node-ar-drone. Она идеально подходит в качестве основы для программирования дрона.

Еще одно преимущество Parrot AR – его очень трудно сломать. При тестировании кода автономного режима мой дрон не раз врезался в стены, мебель, цветочные горшки и гостей, и все еще прекрасно летает.

Одной из проблем дронов по сравнению с наземными роботами является небольшое время работы их аккумулятора. Подзарядка может занимать несколько часов, а хватит её всего где-то на 10 минут полета. Я рекомендую купить 2 дополнительные батареи и менять их в процессе тестирования.

Достоинства и недостатки такого способа подключения

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

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

Стоит учитывать, что при полетах на большие расстояния этот способ может привести к задержке передачи данных. Как правило, она не превышает 2-3 секунд. Кроме того, обладатели Андроид-устройств версии ниже 4.1 могут столкнуться с невозможностью установки приложений на свой гаджет.

Запуск технологии распознавания лиц

Программный интерфейс Azure Face API очень мощный и простой в использовании. Вы можете загрузить фото своих друзей, и он сможет распознать их. Он также определит возраст и пол, что, по моему опыту, у него получается удивительно хорошо. Время ожидания – около 200 миллисекунд, стоит $1,5 за 1000 определений, что кажется весьма оправданным. Ниже – мой вариант кода для отправки изображения и запуска алгоритма распознавания лиц.

var oxford = require(‘project-oxford’),

oxc = new oxford.Client(CLIENT_KEY);

loadFaces = function() {

Как все реализуется на практике

С общими понятиями и заданиями разобрались. Теперь давайте выясним, как именно достигают своих целей разработчики и какие инструменты выбирают в этой работе, и для этого воспользуемся эмулятором. Итак, главная задача разраба – не просто запрограммировать дрон, но и тестировать алгоритмы в симуляционной среде, убедиться в том, что они и автономная программа работают корректно, но при этом не разбить сам аппарат. Чтобы не рисковать дорогой техникой на этапе тестирования используется компьютерная симуляция.

Как повернуть дрон?

Не все беспилотники способны парить неподвижно. Особенно мало таких среди недорогих моделей. С ними также сложнее летать: приходится постоянно регулировать высоту рычагом. Обычно это называется полетом в «режиме ориентации».

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

Как работает parrot ardrone


Дрон представляет собой точку доступа Wi-Fi. Для того чтобы получать и отправлять команды коптеру, необходимо к этой точке подключиться. Есть много разнообразных приложений, позволяющих управлять коптерами. Выглядит все это примерно так:

Как только дрон подключен, открываем терминал и telnet 192.168.1.1 — это IP коптера. Для Linux можно использовать Linux Busybox.

Коммерческие дроны (commercial)

Используются в разных сферах – бизнес, наука, сельское хозяйство, строительство и т.д., решая конкретные корпоративные задачи. Например, доставку товаров при помощи беспилотников уже активно практикуют в компании Matternet, аналогичный сервис развивает Amazon Prime Air, а также дроны используются в Африке для доставки медикаментов компанией Zipline.

Параллельно ведутся R&D-исследования, чтобы дроны могли выполнять работы не только на свежем воздухе, но и в помещениях: инспектировать стройку внутри здания и промышленное оборудование, заниматься инвентаризацией складов, контролировать безопасность шахт.

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

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

В случае более сложного ландшафта или работ внутри здания (если GPS недоступен), дрон должен быть оснащен дополнительными сенсорами, которые смогут определять расстояние до окружающих объектов и препятствовать столкновениям. Для этого применяют и программируют одномерные сонары, различные лидары, камеры глубины.

Также работа в замкнутом пространстве или окружении большого количества объектов не позволяет эффективно использовать GPS сигнал, поэтому необходимо применять другие инструменты и источники координат дрона. Это могут быть данные с бортовых камеры, камеры глубины, стереокамеры, которые работает по алгоритму SLAM (Simultaneous Localization and Mapping).

Этот алгоритм ищет в потоке кадров специальные точки под названием features – это небольшие уголки или неоднородности. Этим точкам присваиваются дескрипторы, при помощи которых и осуществляется поиск координат в пространстве. Алгоритм достаточно сложен и требователен к вычислительным ресурсам техники, поэтому часто для этой цели используют камеру Intel RealSense T265 со встроенной микросхемой, которая реализует вычисления на аппаратном уровне.

Что получаем в итоге: для реализации автономного управления дроном необходимо разобраться с 3 основными вопросами:

  1. Определение координат БПЛА в пространстве и выбор оптимального способа для этого: GPS приемника, либо системы, способной вычислить их прямо на борту через обработку видеопотока, при помощи алгоритма SLAM. Возможно, есть потребность использовать оба способа, чтобы беспилотник мог использовать и глобальные и локальные координаты.
  2. Построение 3D карты окружения при помощи специальных сенсоров, лидаров, стереокамер.
  3. Разработка софта для планирования маршрута и цели полета.

Кому подойдет такой способ управления

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

Курс: программирование дронов от skillbox

Программирование дронов – это новое направление карьере, которое сейчас находится на стадии формирования. Оно пока практически представлено в традиционных образовательных учреждениях и онлайн-университетах.

Двигателем профильного дистанционного образования в России стал онлайн-университет SkillBox, который уже запустил 2-месячный курс для тех, кто хочет освоить программирования дронов. Он был разработан при поддержке МАИ, а лектором программы выступает тимлид RegisLab МАИ – Михаил Колодочка.

ПЕРЕЙТИ НА САЙТ

Лучшие приложения для дронов:

  1. Google Earth
  2. Airmap
  3. B4UFly
  4. Hover
  5. DroneDeploy
  6. UAV Forecast
  7. Kittyhawk
  8. Sun Surveyor
  9. Verifly
  10. Litchi for DJI drones

Сначала немного теории. Чего вы надеетесь достичь до полета или во время него? Возможно, вы пытаетесь сохранить законность, убедитесь, что вы можете летать в определенном месте, для этого есть приложение. Может быть, вы ищете службу ведения журнала, чтобы помочь отслеживать полеты, для этого тоже есть инструменты, или, может быть, просто нужен отчет о погоде.

Пробегитесь по списку, чтобы понять, какие функции может выполнять стороннее приложение. Мы надеемся помочь вам найти что-то новое и полезное.

Подключение дрона к телефону или планшету: пошаговое руководство

  1. Открываем магазин приложений (Google Play телефона на Android или App Store для устройств Apple) и скачиваем фирменное приложение, предлагаемое брендом вашего дрона. Например, у китайского бренда DJI есть DJI FLY и DJI GO, а у французской марки Parrot – ПО Parrot AR.DRONE. Для быстрого поиска необходимого приложения можно воспользоваться QR-кодом на упаковке вашего летательного аппарата или в руководстве по эксплуатации. Кстати, у DJI есть и более сложная утилита DroneDeploy – которая заменит самый передовой пульт управления.
  2. Далее включаем на телефоне вай-фай.
  3. Включаем квадрокоптер.
  4. Подключаемся к сети вай-фай, которую раздает дрон, обеспечивая устройство высокоскоростным беспроводным соединением. Вводить пароль в этом случае не требуется.
  5. Запускаем приложение, о которой шла речь в пункте 1. На экране смартфона должно появиться изображение с камеры квадрокоптера. Под ним или на фоне него будут находиться виртуальные стики и другие элементы управления, расположенные так же, как и на обычном пульте.
  6. Наслаждаемся полетом и расширенным функционалом вашего дрона.

Преимущества

  • Онлайн формат и гибкий график обучения. Вы можете учиться из любого города и месте, не нужно тратить время на поездки в транспорте и стоять в пробках. Главное иметь компьютер и Интернет.
  • Крутой преподаватель, понятно объясняющий материал, с которым можно пообщаться напрямую – задавай вопросы по наиболее сложным моментам обучения. Преподает Победитель чемпионата Worldskills в номинации «Эксплуатация БЛА», соревнований по дрон-рейсингу, конкурса «Робокросс 2023» и хакатона «Первые командные игры дронов 2023» в МФТИ. Инженер центра БПЛА МАИ.
  • Лояльная оплата. Предусмотрена рассрочка, часто действуют скидки.
  • Можно подтвердить свои знания во время работы над итоговым проектом.
  • Действительно полезный обучающий курс, на котором вы получаете не только теоретические знания, но и на практике понимаете, в чем фишка этой профессии.
  • Университет предоставляет личного наставника, к которому можно обратиться со всеми вопросами.

Оставляй заявку на обучение, скачивай необходимый софт и делай первый шаг в профессию уже сегодня!

Более детальная информация на странице курса 👈

Программа обучения

  1. Вводный модуль. Студенты изучат основы летающей робототехники и историю беспилотных авиационных систем, узнают об основных направлениях разработки, видах навигации, специализированного ПО. Скачиваем, устанавливаем, подключаем программы, которые пригодятся нам в работе.
  2. Основы навигационных и аппаратных комплексов БАС. Детальный разбор устройства аппаратов и принципов их работы. Слушатели получат базовое понимание имитационного моделирования, а также изучат типичные ошибки при разработке беспилотников.
  3. Теория разработки дронов. Механика движения, теория автоматического управления, типовые системы.
  4. Симулятор беспилотника. Знакомство с нелинейными математическими моделями, их прикладным применением, изучение оптимальных траекторий полета, систем управления беспилотниками, инструкция создания симулятора проекта.
  5. Разработка специализированного ПО, знакомство с ROS (самый распространенный фреймворк для программирования дронов), системами имитационного моделирования, статистической обработкой информации, автопилотом PX4.
  6. Техническое зрение для автономных беспилотников. Реперные маркеры и оптический поток.
  7. Системы предотвращения столкновений. Узнаете, как строить карту и работать с системами обнаружения препятствий.
  8. Планирование пути и облёт препятствий.
  9. Настраиваемое ПО для группового полета. Разработаете систему для управления 5-10 БЛА.
  10. Карьерные возможности.
  11. Работа над итоговым проектом – полноценной системой полета дрона.

Программирование дрона

Javascript отлично подходит для управления дронами, потому что он по своей сути событийно-ориентирован. Поверьте, при управлении дрона возникает множество асинхронных случаев. Я не разбирался с Node длительное время, но по результатам этого проекта был очень впечатлен его возможностями.

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

Разбираемся с коптером

Давайте попробуем понять, как работает Parrot ARDrone. У этого коптера есть четыре мотора.

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

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

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

Резюмируя

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

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

Съемка потокового видео с дрона

Я нашел, пожалуй, лучший способ смотреть видео с камеры дрона. Он заключается в открытии соединения и непрерывной отправке изображений PNG с моего веб-сервера на мой веб-сайт. Веб-сервер постоянно получает PNG с помощью библиотеки AR с дрона.

var pngStream = client.getPngStream();

pngStream

 .on(‘error’, console.log)

 .on(‘data’, function(pngBuffer) {

       sendPng(pngBuffer);

function sendPng(buffer) {

 res.write(‘–daboundarynContent-Type: image/pngnContent-length: ‘ buff

er.length ‘nn’);

 res.write(buffer);

});

Управление квадрокоптером с телефона

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

В остальном, джойстик в приложении полностью повторяет классический пульт управления квадрокоптером:

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

Управление полетом с веб-страницы

Создать веб-интерфейс для управления полетом – приятно и легко. Платформа express.js сильно упрощает создание небольшого веб-сервера:

var express = require(‘express’);

app.get(‘/’, function (req, res) {

 res.sendFile(path.join(__dirname ‘/index.html’));

});

app.get(‘/land’, function(req, res) {

 client.land();

});

app.get(‘/takeoff’, function(req, res) {

 client.takeoff();

});

app.listen(3000, function () {

});

Я устанавливаю функцию для создания запросов методом AJAX с помощью кнопок:

function call(name) {

Управление полетом командной строкой

После установки библиотеки node можно сделать цикл типа прочитать-вычислить-записать (REPL) и тем самым начать управлять дроном.

var arDrone = require(‘ar-drone’);

var client = arDrone.createClient({ip: ‘192.168.7.43’});

client.createRepl();

drone> takeoff()

true

drone> client.animate(‘yawDance, 1.0)

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

Установка и запуск jmavsim на windows

Набор инструментов PX4 Cygwin появился в 2023 году. Это наиболее производительный способ для компиляции/разработки PX4 под Windows. Для установки – качаем и запускаем установочный файл с Гитхаба или Амазона.

По умолчанию toolchain устанавливается в папку C:PX4.

На последнем шаге инсталлятора можно отметить галочку «clone the PX4 repository, build and run simulation with jMAVSim» (клонировать репозиторий PX4, скомпилировать и запустить симулятор jMAVSim).

Запуск среды разработки в Cygwin осуществляется с помощью файла run-console.bat в каталоге установки (по умолчанию, C:PX4).

Если забыли отметить галочку запуска jMAVSim в процессе установки – в Cygwin можно клонировать репозиторий и запустить симулятор с помощью команд:

Установка системы распознавания речевых команд

Самой сложной частью установки системы распознавания речи является не само по себе распознавание речи, а трансляция звуковой дорожки с веб-страницы на мой локальный сервер в формате, которого требует Microsoft’s Speech API, а это, в свою очередь, выливается в слишком длинный код.

Сервис RecordRTC имеет отличную библиотеку и прекрасно подходит для начальной клиентской звукозаписи. Со стороны клиента мы может добавить код, который бы сохранял аудиофайл:

app.post(‘/audio’, function(req, res) {

 var form = new formidable.IncomingForm();

Чему научитесь

  1. Сможете запрограммировать автономные полеты БРЛА, а также группы взаимодействующих устройств.
  2. Обрабатывать данные бортовых систем, проводить вычисления на их основе.
  3. Создавать и настраивать оптимальную (виртуальную и реальную) траекторию движения.
  4. Узнаете, как моделируются полеты.
  5. Будете разбираться в составлении карты пространства.
  6. Сможете создать систему обнаружения, распознавания и облёта препятствий.
  7. Программировать систему управления, навигации.

Выводы

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

Облачный программный интерфейс Microsoft Cognitive Service очень прост в использовании и невероятно мало стоит. Сначала я был обеспокоен, что непривычно широкоугольная камера дрона может помешать нормальному распознаванию лиц, а также что громкий звук от лопастей будет препятствовать звукам, но на деле все работает гораздо лучше, чем я ожидал.

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

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