Программа для управления дроном с компьютера: Управление дроном с ноутбука: пошаговое руководство – DIY автономный дрон с управлением через интернет / Habr

Содержание

DIY автономный дрон с управлением через интернет / Habr

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

Итак, задача: создание автономного БПЛА для мониторинга состояния линий электропередач (ЛЭП).

Так как:

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

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

Список дефектов для обнаружения на ЛЭП.

Требования к БПЛА

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

А также два противоречащих друг другу требования:

  • Надежная электроника (если где-то упадет, считай потерял)
  • Относительно низкая стоимость эксперимента (если где-то упадет, считай потерял)

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

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

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

Выбор полетного контроллера

Так как мне нужно транслировать видео и телеметрию через интернет, то сразу приходит на ум поставить на дрон микрокомпьютер с 4G модемом и камерой, и сделать из этого комплекта web-трансляцию. Нашлись вот такие решения: раз, два, три. Это обычные одноплатники с внешним USB 4G модемом и камерой. Для кодирования и трансляции видео используется gstreamer. Но эти штуки сами по себе дроном управлять не умеют, их нужно использовать совместно с полетным контроллером.

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

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

С Ardupilot я игрался еще на 8-битных атмегах, в которых не было USB-bootloader’а, а прошивались они на программаторе. С тех пор с ним не сталкивался и был приятно удивлен, когда узнал, что сейчас он может работать на 64-битных компьютерах с Linux, у него огромное сообщество пользователей как хобби, так и профи, длинный список поддерживаемых “из коробки” датчиков и расписанные планы на 2018-2019 годы. За это время он успел перерасти в проект DroneCode, а потом и отсоединиться от него.

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

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

Из всего того многообразия контроллеров мне понравилось несколько вариантов:













Полетный контроллер Erle PXFMini Emlid Edge Navio 2 Erle Brain 3 PixHawk 2 Cube
Доп компьютер Raspberry Pi Zero W нет Raspberry Pi 3 нет Raspberry Pi 3


Вес комплекта, г 84 97 98 145 150
Процессоры, общее кол-во 1 2 2 1 3
ОС, одновременно работающих 1 1 1 1 2
IMU датчики, комплектов 1 2 2 1 3
Датчик воздушного давления 1 2 1 1 1
Резервирование питания нет нет
GPS, Глонасс внешний модуль

с доп магнитометром
внешний модуль

с доп магнитометром
встроенный приемник, внешняя антенна внешний модуль

с доп магнитометром
внешний модуль
Видеовход CSI на Raspberry HDMI CSI на Raspberry CSI CSI на Raspberry
WiFi есть есть

Long Range 2км

+52 г
есть есть есть


Стоимость комплекта, $ 212 700 215 341 331

Самый легкий комплект (84 г) получается из микрокомпьютера Raspberry Pi Zero W (9 г), контроллера Erle PXFMini (15 г), родного внешнего GNSS модуля (46 г) и дополнительного USB-концентратора (14 г).

Рабочий процессор в этом комплекте один — на Raspberry Pi. На нем висит управление ШИМ регуляторов моторов, считывание показаний датчиков, ОС Linux со всеми потрохами и декодирование видео с камеры. Так как в Pi Zero не предусмотрены USB порты, то в этом варианте приходится использовать внешний концентратор. IMU датчики и вход питания без резервирования.

Следующий комплект (97 г) от гонконгской компании с русскими фамилиями в команде разработчиков — контроллер Emlid Edge (59 г) с GNSS модулем (38 г). GNSS модуль работает по протоколу UAVCAN и дополнительно оснащен магнитометром и датчиком воздушного давления. За ШИМ здесь отвечает отдельный процессор ARM Cortex-M3, ОС Linux крутится на основном ARM Cortex-A53 quad-core.

В контроллере имеется HDMI видеовход, что позволяет подключить к нему напрямую любую камеру с таким выходом, например GoPro 4 или 5. Относительно высокая стоимость объясняется дальнобойными wifi-приемопередатчиками в комплекте (до 2 км с трансляцией HD-видео). Вес бортового модуля (52 г) в общей таблице не включен, так как мне нужна связь по 4G, однако такой вариант можно иметь в виду: из дальнобойного wifi можно сделать запасной канал связи через стационарный роутер с проводным интернетом.

Следующий вариант (98 г) состоит из знаменитого микрокомпьютера Raspberry Pi 3 (45 г) с контроллером-шилдом Navio 2 (23 г) от той же Emlid и внешней GNSS-антенны (30 г). На контроллере стоит отдельный процессор Cortex-M3 для управления ШИМ на 14 каналах и расшифровки входящих SBUS и PPM сигналов от приемника. Он, в свою очередь, управляется через драйвер в ядре ОС Linux, которая крутится на Raspberry.

Контроллер оснащен парой раздельных IMU датчиков (акселерометр, гироскоп, магнитометр) MPU9250 и LSM9DS1, одним датчиком воздушного давления и GNSS-модулем U-blox NEO-M8N, который видит GPS, Глонасс и BeiDou с внешней антенной через разъем MCX.

Запитывать этот “пирог” от 5 вольт можно одновременно с трех сторон, которые работают как дублирующие друг друга независимые источники: основной разъем питания на шилде, PWM серво выходы, micro-USB на Raspberry.

Контроллер Erle Brain 3 (100 г) с внешним GPS модулем (45 г) по своим весу, цене и набору датчиков смотрится в таблице так, что даже фото сюда вставлять не буду.

Далее у нас самый надежный и самый тяжелый комплект (150 г), который состоит из популярного полетного контроллера PixHawk 2 Cube (80 г) с открытой архитектурой и компьютера Raspberry Pi 3. Вместо Raspberry в этом случае можно использовать любой легкий одноплатник, например, Odroid XU4, NVIDIA Jetson или любой другой с нужными интерфейсами и подходящим весом.


В самом PixHawk установлено 2 процессора: первый 32-битный STM32F427 Cortex M4 — основной, на котором работает ОС реального времени (RTOS) NuttX и второй резервный (failsafe) 32-битный STM32F103. Контроллер сделан в виде модулей: в кубе установлены процессоры и датчики IMU (на антивибрационном креплении, да еще и с подогревом), а на основу выведены питание и разъемы на всю периферию. Предполагается, что основы могут быть разными и все желающие могут разработать свою собственную под специфические требования, на которую можно потом поставить готовый куб. Есть, кстати, готовый вариант с разъемом под установку микрокомпьютера Intel Edison. Но, так как, Intel больше эти компьютеры не выпускает, то и в этом комплекте в качестве бортового компьютера будет Raspberry.

Raspberry используется как дополнительный компьютер для связи с интернетом и на нем можно запускать любые ресурсоемкие задачи (например, распознавание образов в OpenCV), не боясь, что сбои в таком процессе “повесят” критичные функции, такие как управление моторами.

Итак, учитывая вес, характеристики и цену на первое место для меня выходит комплект Navio 2 + Raspberry, а на второе Pixhawk 2 Cube + Raspberry (+52 г). Вот, если бы под Pixhawk была основа в разъемом для маленького Raspberry Zero, да еще и выводом USB, то было бы интересней. Но такую еще купить нельзя, а изготавливать ее пока не интересно.

Запишу в заметки, что повышенная надежность стоит дополнительные 52 грамма и $110. По общему итогу расчетов эти цифры могут оказаться незначительными.

Автономная зарядка

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

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

Посадка “в точку”

Для точной посадки можно использовать стандартную камеру бортового компьютера, визуальные маркеры и OpenCV для их распознавания. Вот один из вариантов решения, который можно нагуглить. Еще один свежий появился, когда я писал эту статью. Но распознавание образов достаточно трудоемкий процесс для Raspberry, и без особой необходимости загружать его не хочется. Также качество распознавания будет сильно зависеть от материала из чего сделан маркер и условий освещенности. Желательно, чтобы это был отдельный датчик и отдавал готовые координаты нужной визуальной точки, независимо от наличия и угла падения света. И такой есть в списке поддерживаемого оборудования Ardupilot, называется IR-Lock.

Airobotics из списка выше также использует это решение. Он сделан на основе модуля камеры с открытым кодом Pixy CMUcam5. Этот модуль снабжен камерой и процессором, и его можно “научить” распознавать определенные образы объектов, а, затем, на выходе получать готовые координаты этих объектов на изображении.

Зная координаты распознанного образа на изображении и расстояние до него, полетный контроллер вычисляет на какое расстояние и в какую сторону нужно переместить дрон.
Модификация IR-Lock состоит в том, что в качестве маркера, который нужно распознать используется ИК фонарь из светодиодов, а на камере обычные линзы заменены на те, что пропускают только ИК свет. В итоге, при любом освещении, камера видит свечение фонаря белым цветом на черном фоне (и больше ничего), что сильно повышает точность распознавания.

Для нормальной работы этого датчика необходим еще и дальномер, который будет измерять высоту над землей. Разработчики рекомендуют использовать лазерный дальномер, например LightWare LW20 (20 грамм и $299, меряет до 100 м), или дешевый и короткий VL53L0X (менее 1 грамма и $10, меряет до 2 м), который стал поддерживаться в последних версиях Ardupilot. Почему-то ультразвуковой датчик для целей посадки не заслуживает доверия разработчиков IR-Lock.

Кстати, дроны DJI автоматически садятся, используя ультразвук и стереокамеры.

Висеть, как вкопанный

Чтобы дрон умел висеть на одном месте и не “плавать”, одного только GPS не достаточно. К сожалению, из-за состояния атмосферы координаты с приемников GPS могут плавать в пределах десятков метров и для сантиметровой точности нужно использовать корректирующие системы GPS RTK. Эта система использует наземную неподвижную станцию, как эталон отклонений координат, и радиосвязь с бортом, чтобы отправить туда значения этих отклонений. Такая штука обязательно нужна для съемки фотопланов с последующей склейкой в большие карты, а для целей висения на месте я пока ограничусь оптическим датчиком PX4Flow.

Работает он по такому же принципу, как и оптическая мышь. В отличие от IR-Lock, он не распознает конкретный образ и в Ardupilot они работают в разных полетных режимах. Изображение с камеры анализируется на смещение 400 раз в секунду, а вычисленные значения смещения могут быть прочитаны контроллером по протоколу I2C. Датчик (open-hardware) весит 15 грамм и имеет все необходимое у себя на плате: процессор 168 MHz Cortex M4F CPU (128 + 64 KB RAM), оптический сенсор 752×480 MT9V034 и 3-х осевой гироскоп L3GD20. Для его нормальной работы также рекомендуется использовать лазерный дальномер, вместо ультразвукового. Хотя на самом модуле предусмотрен разъем как раз для УЗ датчика.

Минимальный комплект электроники

Вот, что собралось:

Общий вес получается 199 г. Все компоненты работают от 5 Вольт и потребляют в режиме трансляции видео почти 2 Ампера (10 Ватт).

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

Полезная нагрузка

Так как родная камера от Raspberry делает средние по качеству фото, а также не умеет захватывать фото одновременно с видео, то она будет использоваться только для web-трансляции, а в качестве основной камеры нужна подходящая для выявления дефектов на ЛЭП. Для большей части позиций из списка выявляемых дефектов подойдут GoPro Hero 5 Session, мультиспектральная Parrot Sequoia, двойная Sentera Double 4K и инфракрасная FLIR Vue Pro. Каждая из них весит около 100 г.

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

Простые 3-х осевые подвесы весят около 160 г и питаются от 12 Вольт, имеют рабочий ток при таком напряжении около 50 мА и максимальный ток 700 мА при заклинивании моторов.

Питание

Для питания всей электроники необходимы источники на 5 Вольт (минимум 2,2 Ампера) и 12 Вольт (минимум 1 Ампер). С учетом резервного питания полетного контроллера, нужно два независимых источника на 5 Вольт. Сделать систему питания можно из отдельных модулей подходящего номинала или найти готовый “3 в 1”, например такой (24 г, макс входное напряжение до 28 Вольт, выходы по 3А). К нему будет подключен датчик тока (22 г), чтобы была возможность измерять расход мАч на аккумуляторе.

Комплект электроники + камера + подвес + система питания весят 505 г.

Моторы и пропеллеры

На многих профессиональных дронах я видел моторы и пропеллеры компании T-Motor. Видимо, не спроста. В документации Ardupilot они также рекомендованы как силовая установка для профессиональных дронов. Поэтому, поищем подходящие моторы у них.

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

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

Слишком много неизвестных, поэтому воспользуюсь онлайн калькулятором для квадрокоптеров E-calc.

Поигравшись в калькулятор, я выбрал моторы Antigravity 4004 KV300 (53 г) с винтами 15х5 (27 г). В оптимальном режиме при напряжении питания 24 Вольта такой комплект тянет 474 грамма при токе 1,4 А. Эффективность получается 14.11 г/Ватт, отношение тяги к собственному весу = 5.9:1. На полном ходу тяга составляет 1311 грамм при токе 7,5 А. Коптер будет с четырьмя моторами, то есть квадро. Оптимальный взлетный вес = (474 г * 4 мотора) = 1896 г, максимальный (с учетом тяговооруженности 2:1) = (1311 г * 4 мотора) / 2 = 2622 г.

Моторы управляются регуляторами оборотов. Напряжение питания моторов = 24 Вольта, максимальный рабочий ток = 7,5 А, поэтому нужен регулятор под такое напряжение и с рабочим током, с учетом запаса, минимум 10А. У T-Motor самый легкий регулятор (7 г без проводов) под такое напряжение — это FPV 35A-32bit 3-6S. Он сделан на основе популярной прошивки BLHeli-32, с закрытым кодом, но с широкими возможностями настроек и большим числом аналогов.

Подитог:

ВМГ (винто-моторная группа), состоящая из моторов, пропеллеров и регуляторов (по 4 шт каждого) весит 346 г.

Вместе с электроникой и полезной нагрузкой (346 + 505) получается 851 г. С учетом крепежа, проводов и разъемов (прикинем +100 г) = 951 г.

При оптимальном весе, на раму и аккумулятор остается (1896 — 951) = 945 г. При максимальном (2622 — 951) = 1671 г.

Рама

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

По картинке можно узнать гипотенузу, которая вычисляется из катета, равного сумме диаметра винта и расстояния между пропеллерами. Соседние лопасти 15-дюймового винта будут крутиться в 1 миллиметре друг от друга при диагонали рамы 540 мм. Добавим немного пространства и размер подходящей рамы будет равен примерно 600-700 мм.

В продаже найти таких можно много, например, раз: 600мм и 750г, два: 650мм и 450г, три: 690 и 675г, четыре: 650мм и 750г. Все они отличаются исполнением и наличием складных элементов (шасси, лучи) для удобства транспортировки.

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

Остается аккумулятор весом 495 г для оптимального веса и 1221 г для максимального.

Аккумулятор

Для выбора аккумулятора нужно знать какой он должен отдавать ток.

На полном ходу двигатели будут “есть” 30А (7,5А * 4 мотора), а электроника примерно 0,45А (10 Ватт). С учетом небольшого запаса округлим минимальный рабочий ток аккумулятора в 35А. Для Li-Po батарей с высокой токоотдачей в 30С минимальная емкость будет равна 1,2 Ач (35/30), а для более легких Li-Po и Li-Ion с токоотдачей в 10С минимальная емкость 3,5 Ач (35/10).

Как вариант, сборка 6S2P из Li-Ion Sony VTC6 с BMS весит примерно 630 г (при емкости 6 Ач). С этим аккумулятором дрон будет весить 2031 г, что больше оптимального на 135 г, но в пределах максимального. Теперь посчитаем на какое время коптер сможет зависнуть при идеальных условиях. При общем весе в 2031 г на каждый мотор приходится 508 г. Взглянем на характеристики мотора и найдем потребляемый ток при такой тяге. Он примерно будет равен 1,6А. 4 мотора и электроника дадут в сумме 6,85A (1,6 * 4 + 0,45). С учетом разрядки аккумулятора до 20% получится (6 Ач * 80% / (6,85 A)) = 0,7 часа или 42 минуты.

Компоновка

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

Немного поэкспериментировав с компоновкой и центром тяжести, получилась вот такая рама:

Она состоит из карбоновых трубок и пластин, деталей из алюминия и крепежа из титана. Расчетный вес рамы получился 350 г при диагонали 700 мм. 3D-модель рамы и список деталей.

Полностью собранная модель (без проводов):

Общий вес коптера с электроникой, аккумулятором Li-Ion 6S2P и проводами должен получится 1931 г.

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

3D-модель рамы. Список деталей рамы.
3D-модель в сборе. Список компонентов.

Вес пустой рамы с корпусом 384 г, общий вес 2020 г, расчетное время висения на одной зарядке (разряд аккумулятора до 20%): 44 минуты.

Бокс для зарядки

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

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

Продолжение следует…

Часть 2 про ПО.

DIY автономный дрон с управлением через интернет. Часть 2 про ПО / Habr

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

А вот схема у продвинутых дронов:


Так работают игрушечные дроны, которые управляются со смартфона:

Управлять дроном через интернет можно так (при наличии сим-карты со статическим IP-адресом):

Или так, если IP-адрес динамический:

Для надежности и резервирования каналов связи последний вариант можно развить до такого состояния:

Далее я буду описывать процесс настройки полетного контроллера Emlid Navio 2 и микрокомпьютера Raspberry Pi 3.


Но, с небольшими модификациями, эти настройки подойдут для любого полетного контроллера, с которым можно общаться по протоколу MAVLink в связке с любым компьютером на ОС семейства Linux.

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

ПО для управления дроном на ПК и планшетах

Для управления БПЛА используются специальные программы GCS (Ground Control Station). Далее по тексту я буду использовать эту аббревиатуру. Мне по душе пришлась QGroundControl, мультиплатформенная (Windows, Linux, MacOS, iOS, Android) GCS с открытым исходным кодом, которая стала частью проекта DroneCode. Но есть и альтернативы, бесплатные и коммерческие: APM Planner, MissionPlanner, UgCS, LibrePilot, OpenPilot, Tower (DroidPlanner) для Android, MAVPilot (iOS), SidePilot (iOS). А также консольная MAVProxy.

Установка образа ОС на SD-карту

Для нормальной работы автопилота крайне рекомендуется использовать “быстрые” SD-карты (класс 10). Медленные карты памяти не успевают сохранять логи автопилота даже на небольшой частоте, в результате чего они получаются кривыми или вообще не пишутся. Свидетельством этого может быть ошибка “No IO heartbeat”, которую можно наблюдать в консоли MAVLink (как смотреть консоль MAVLink описано ниже). При покупке смотрите на возможность писать 4К видео: скорее всего это будет быстрая SD. К сожалению, я об этом узнал после падения дрона, когда нужно было проанализировать логи и узнать причину. Логи оказались нечитаемы для нескольких GCS. Причина отключения моторов в полете оказалась банальна: я забыл подправить в настройках значение минимального напряжения на аккумуляторе для срабатывания failsafe.

Итак, скачиваем готовый образ Raspbian Stretch с предустановленными Ardupilot и ROS от Emlid со страницы оригинальной инструкции. И пишем его на карту памяти с помощью Etcher или любой подобной программы.

Чтобы сразу после включения Raspberry соединялся с вашей WiFi сетью, необходимо отредактировать файл wpa_supplicant.conf в корне SD-карты. В нем должны быть такие строки:

network={
    ssid="название_wifi_сети"
    psk="пароль_wifi_сети"
}

Можно настроить и без WiFi, подключив одноплатник к роутеру Ethernet-кабелем. Теперь вынимаем SD-карту из ПК, вставляем ее в Raspberry и включаем питание. Через полминуты он должен появиться в админке роутера на странице подключенных устройств (хостнейм navio).

Обновление дистрибутива и установка необходимых пакетов

Открываем SSH-клиент и соединяемся с Raspberry (локальный IP-адрес navio вместо RASPBERRY_IP_ADDRESS):

ssh [email protected]_IP_ADDRESS

Стандартный пароль: raspberry. В первую очередь необходимо расширить файловую систему ОС на весь объем SD-карты:

sudo raspi-config --expand-rootfs

и перегрузиться:

sudo reboot

После перезагрузки, соединяемся еще раз и обновляем дистрибутив:

sudo apt-get update && sudo apt-get dist-upgrade -y

Устанавливаем дополнительные пакеты:

sudo apt-get install autoconf automake libtool pkg-config libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libraspberrypi-dev gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-bad

и компилируем обертку gst-rpicamsrc для gstreamer и родной камеры Raspicam:

git clone https://github.com/thaytan/gst-rpicamsrc.git rpicamsrc
cd rpicamsrc
chmod +x autogen.sh
./autogen.sh --prefix=/usr --libdir=/usr/lib/arm-linux-gnueabihf/
make
sudo make install

Проверим работает ли камера (создается видеофайл test.h364):

gst-launch-1.0 rpicamsrc bitrate=1000000 ! filesink location=test.h364

Если gstreamer запустился, подождите пару секунд, чтобы записалось видео. Прервать процесс можно клавишами Ctrl+C. Если видео есть, значит камера работает.

Настройка и запуск Ardupilot

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

Разработчики Navio добавили в свою сборку простую и удобную утилиту Emlid tool для проверки датчиков и настройки Ardupilot. Сначала проверим, видит ли Raspberry контроллер Navio:

emlidtool info

Если в ответ на эту команду выдает что-то вроде:

Vendor: Emlid Limited
Product: Navio 2
Issue: Emlid 2018-06-05 831f3b08594f2da17dccae980a2e3659115ef71f
Kernel: 4.14.34-emlid-v7+
RCIO firmware: 0xcaec2284

значит видит. Проверим состояние датчиков (покажет список и состояние):

emlidtool test

и драйвера ШИМ-контроллера в ядре Linux:

cat /sys/kernel/rcio/status/alive

0 = не работает, 1 = работает.

Прошивка ШИМ-контроллера обновляется так:

sudo emlidtool rcio update

Теперь настроим Ardupilot:

sudo emlidtool ardupilot

В терминале откроется текстовый GUI с пошаговыми менюшками. Выбираем copter последней версии, тип arducopter, автозапуск при включении (On boot: enable), старт после настройки (Ardupilot: start).

Выходим через пункт меню Quit.

Проверим запустился ли Ardupilot:

sudo systemctl status arducopter

Обратите внимание, файл запуска в systemd называется arducopter, так как настроен был вариант copter.

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

sudo nano /etc/default/arducopter 

В нем должны быть такие строки:

TELEM1="-A udp:127.0.0.1:14550"
ARDUPILOT_OPTS="$TELEM1"

Сохраняем файл (Ctrl+X, затем Y) и перезапускаем Ardupilot:

sudo systemctl daemon-reload
sudo systemctl restart arducopter

Проверить состояние процесса Ardupilot можно такой командой:

sudo systemctl status arducopter

С такими настройками Ardupilot будет транслировать телеметрию (пакеты MAVLink) в локальный UDP-порт 14550. Далее, скрипт MAVProxy (описание ниже) будет забирать оттуда телеметрию и передавать в GCS или скрипт, а также отправлять в обратном направлении пакеты с командами.

Вместо локального адреса и порта можно записать IP-адрес ПК или планшета в локальной сети и пакеты будут транслироваться сразу туда.

Однако, такой подход оправдан, если данные телеметрии больше нигде не используются и у устройства с GCS статический IP адрес. Иначе каждый раз в настройках Ardupilot придется прописывать новый. Чтобы общаться с автопилотом по TCP могли одновременно несколько GCS с динамическими адресами и еще какие-нибудь скрипты на самом бортовом компьютере, удобнее использовать MAVProxy.

Этот скрипт (написан на Python) может получать пакеты MAVLink на локальный UDP-адрес и ретранслировать их на несколько локальных или удаленных IP-адресов как по UDP, так и по TCP. Пакеты передаются в обоих направлениях Ardupilot ⇔ GCS. Кроме того, MAVProxy представляет из себя полноценную GCS, но с текстовым интерфейсом.

MAVProxy

MAVProxy уже установлен в образе Navio. Его также можно установить и на ПК (Windows, Linux, MacOS) для дальнейшего общения с автопилотом в консольном режиме.

Убедившись, что Ardupilot работает, запустим на Raspberry скрипт MAVProxy такой командой:

mavproxy.py --master=udp:127.0.0.1:14550

Параметр —master=udp:127.0.0.1:14550 задает для скрипта источник данных. Это локальный UDP-порт, который был прописан в файле конфигурации Ardupilot. После запуска команды, MAVProxy соединиться с этим портом и выведет на экран сообщения автопилота, примерно как у меня:

[email protected]:~ $ mavproxy.py --master=udp:127.0.0.1:14550
Connect udp:127.0.0.1:14550 source_system=255
Failed to load module: No module named adsb. Use 'set moddebug 3' in the MAVProxy console to enable traceback
Log Directory: 
Telemetry log: mav.tlog
Waiting for heartbeat from 127.0.0.1:14550
 MAV> online system 1
STABILIZE> Mode STABILIZE
fence breach
GPS lock at 0 meters
APM: APM:Copter V3.5.5 (88a1ecdd)
APM: Frame: UNKNOWN
APM: PreArm: RC Roll not configured
APM: PreArm: Compass not calibrated
APM: PreArm: 3D Accel calibration needed
APM: PreArm: check firmware or FRAME_CLASS
APM: PreArm: Throttle below Failsafe

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

arm throttle
takeoff 20

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

Установка связи с дроном в локальной сети

Остановим скрипт (Ctrl+C) и снова запустим его в таком виде:

mavproxy.py --master=udp:127.0.0.1:14550 --out=tcpin:0.0.0.0:5762

С дополнительным параметром —out=tcpin:0.0.0.0:5762 MAVProxy будет слушать порт 5762 на входящие TCP соединения от GCS. Как только GCS соединиться, пакеты с данными начнут перемещаться между дроном и GCS. Попробуем подключиться с ПК:

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

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

Калибровку автопилота можно сделать почти в любой GCS. В документации Ardupilot она описана во всех подробностях. Прежде всего устанавливаем тип рамы. У меня стандартная 4-х моторная компоновка, поэтому это Quad X.

Первый полет лучше все же сделать в ручном режиме. Подключаем и калибруем радиоуправление (приемник и передатчик).

Осталось откалибровать акселерометр и компас.

Для того, чтобы Ardupilot видел и учитывал данные с внешних датчиков, установим необходимые параметры:

Для PX4Flow (калибровка самого датчика и обновление прошивки)

FLOW_ENABLE = 1 (Enabled)

FLOW_ADDR = 0 (0 = вариант для стандартного адреса 0х42)

Для лазерного высотомера VL53L0X (инструкция)

RNGFND_TYPE = 16 (VL53L0X)

RNGFND_ORIENT = 25 (ориентация дальномера вниз)

RNGFND_ADDR = 41 (I2C-адрес в десятичном виде). Адрес датчика по-умолчанию 0x29, что в десятичном виде = 41.

RNGFND_SCALING = 1

RNGFND_MIN_CM = 5

RNGFND_MAX_CM = 120

RNGFND_GNDCLEAR = 15 (расстояние от датчика до поверхности, когда дрон стоит на земле)

Для IRLock (подробная инструкция, wiki IR-Lock)

PLND_ENABLED = 1

PLND_TYPE = 2

PLND_BUS = 1

Для сонара переднего обзора (инструкция)

RNGFND2_TYPE = 2 (MaxbotixI2C sonar)

RNGFND2_ORIENT = 0 (ориентация дальномера вперед)

RNGFND2_MAX_CM = 700 (макс дальность в сантиметрах)

Полный список параметров Ardupilot.

Теперь перезапускаем Ardupilot из меню GCS, снова соединяемся с бортом и открываем окошко MAVLink Inspector, чтобы увидеть данные с датчиков.

К сожалению, показания IR-Lock тут не видны, для анализа его работы придется взглянуть на бортовые логи. Как это сделать описано здесь.

Осталось настроить параметры безопасности и можно запускать дрон:

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

Видеотрансляция

Проверим как работает видеотрансляция в сети WiFi. Такой командой можно запустить видео в TCP-порт на Raspberry с использованием родной утилиты raspivid для камеры Raspicam:

raspivid -t 0 -hf -fps 25 -w 640 -h 480 -o - | gst-launch-1.0 fdsrc ! h364parse ! rtph364pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=0.0.0.0 port=5001

А вот такой командой делается тоже самое, только с использованием ранее скомпилированной обертки rpi-camsrc для gstreamer:

gst-launch-1.0 rpicamsrc sensor-mode=4 ! h364parse ! rtph364pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=0.0.0.0 port=5001

В обоих случаях, трансляция в формате h364 доступна по IP-адресу Raspberry на порту 5001.

Посмотреть ее можно запустив на своем ПК такую команду (должен быть установлен gstreamer), вместо RPI_ADDRESS указываем адрес Raspberry в сети:

gst-launch-1.0 -v tcpclientsrc host=RPI_ADDRESS port=5001  ! gdpdepay !  rtph364depay ! avdec_h364 ! videoconvert ! autovideosink sync=false

В результате должно открыться окошко с видео.

Практически в любую GCS встроен видеоплеер, который может показывать RTSP-видеопоток. Чтобы сделать из Raspberry RTSP-сервер можно использовать консольный плеер VLC. Установка:

sudo apt-get install vlc

Видеотрансляция запускается так:

raspivid -o - -t 0 -n -w 320 -h 240 -fps 25 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/live}' :demux=h364

Видео доступно по адресу (вместо RPI_ADDRESS, адрес Raspberry):

rtsp://RPI_ADDRESS:8554/live

Настройка GCS:

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

Телеметрия через интернет

Чтобы GCS могла подключиться через интернет к дрону с динамическим IP-адресом, необходим промежуточный сервер со статическим IP, на котором будет запущен скрипт MAVProxy. Для этих целей я воспользовался арендой облачного сервера у одного из известных провайдеров. Для MAVProxy подойдет самая минимальная конфигурация, но так как у меня этот же сервер будет заниматься ретрансляцией видео, то я выбрал вариант с чуть большей памятью (одно ядро и 1Гб памяти, Ubuntu 18.04). Для минимальной задержки в прохождении данных между бортом и GCS, сервер должен располагаться в максимальной географической близости к дрону и GCS.

Устанавливаем MAVProxy на сервер. Сначала зависимости:

sudo apt-get install python-dev python-opencv python-wxgtk3.0 python-pip python-matplotlib python-pygame python-lxml python-yaml

а потом и сам скрипт через PIP:

sudo pip install MAVProxy

пропишем путь:

echo "export PATH=$PATH:$HOME/.local/bin" >> ~/.bashrc

и запустим скрипт с такими параметрами:

mavproxy.py --master=udp:0.0.0.0:15001 --out=tcpin:0.0.0.0:15002 

MAVProxy слушает порт 15001 на входящие пакеты телеметрии от дрона по протоколу UDP, а порт 15002 на входящее TCP-соединение от GCS.

Запустим MAVProxy на Raspberry еще с одним параметром, чтобы телеметрия транслировалась еще и на сервер (вместо SERVER_IP адрес своего сервера):

mavproxy.py --master=udp:127.0.0.1:14550 --out=tcpin:0.0.0.0:5762 --out=udpout:SERVER_IP:15001

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

Подключим GCS на ПК или планшете к серверу. Настройки соединения такие же как и для локальной сети, только вместо IP-адреса Raspberry указываем адрес сервера и порт 15002.

Теперь можно подключить 4G USB-модем к Raspberry и оценить с какой задержкой реагирует авиагоризонт на экране.

Видео через интернет

Для ретрансляции видео установим на сервер VLC плеер:

sudo apt-get install vlc

После установки, запустим его как ретранслятор c UDP порта 5001 в RTSP канал SERVER_IP:8554/live:

cvlc -vvv udp://@:5001 --sout '#rtp{sdp=rtsp://:8554/live}' :demux=h364

На борту запустим видеотрансляцию с камеры на сервер по UDP (вместо SERVER_IP адрес сервера):

gst-launch-1.0 rpicamsrc bitrate=1000000 ! video/x-h364,width=640,height=480,framerate=25/1 ! h364parse  ! udpsink host=SERVER_IP port=5001

Адрес потока теперь можно использовать как источник видео в настройках GCS или открыть в любом плеере, поддерживающим этот протокол.

Теперь можно спланировать маршрут полета и запустить дрон через интернет, предварительно его включив, например, с помощью помощника по телефону.

Очевидно, что из-за относительно большого времени путешествия видео и телеметрии по сети, такой способ вряд ли подойдет для FPV-полетов в ручном режиме между препятствиями.

Темы для последующих публикаций:

  • Варианты автоматической зарядки дрона в своем скворечнике и на каком из них остановился я.
  • Реализация web-based GCS с помощью MAVProxy, NodeJS, socket.io и медиасервера для управления несколькими дронами одновременно.
  • Резервные каналы связи и системы спасения дронов
  • Машинное зрение и лидары для избежания столкновения с препятствиями

Продолжение следует…

Альтернативные приложения DJI GO 4 для управления квадрокоптером DJI | Путешествие по России с квадрокоптером

Друзья, приветствую вас на страницах журнала про аэросъемку с квадрокоптера!

Как известно стандартное приложение, которое рекомендуется производителем квадрокоптеров DJI — это DJI GO и DJI GO 4. Не так давно вышло еще одно приложение для использования в управлении картографическими дронами — DJI Pilot. Но на них всех мы не будем останавливаться. Ссылки для скачивания этих приложений в AppStore и Google Play я оставлю ниже.

‎DJI GO

‎DJI GO 4

‎DJI Pilot

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

Litchi for DJI Mavic / Phantom / Inspire / Spark

Открываем наш список альтернативных программ для управления квадрокоптером Litchi.

Litchi

Функции приложения Litchi для квадрокоптеров DJI почти полностью заменяет DJI GO 4. Список беспилотных летательных аппаратов, которые это приложение может контролировать, значительно превосходит тот, что  указан в описании приложения, включая все варианты Phantom 4, варианты Phantom 3, варианты Inspire 1 и 2 и, конечно же все Mavic’и.

Есть несколько ключевых особенностей, которые выделяют Litchi среди других приложений. В первую очередь, контроль полета Waypoint (полет по заданным точкам) и режим виртуальной реальности. Кроме этого существенно лучше реализованы по сравнению с DJI GO 4 такие функции, как режим панорамных съемок, несколько других интеллектуальных режимов полета на основе камеры, которая отслеживает объект, а так же функция постоянного удержания объекта в фокусе.

Кроме того Litchi может работать в паре с другим приложением на другом устройстве, которое будет в качестве маяка для вашего дрона. Этот маяк (он должен находиться у объекта съемки) передает координаты GPS квадрокоптеру, который будет следить за объектом независимо от того, куда он движется.

Скачать приложение Litchi можно по ссылкам ниже.

‎Litchi for DJI Drones

 

UgCS for DJI

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

UgCS for DJI

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

Скачать для PC/Mac OS: www.ugcs.com/en/page/download

 

Pix4D

Pix4D

Pix4D является приложением для создания 3D-моделей с помощью квадрокоптера.

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

Одна из функций Pix4D пролет «сеткой», чтобы создать наиболее эффективный вид объекта или области съемки.

Pix4D существуют платные и бесплатные версии этого программного комплекса.

‎Pix4Dcapture

 

DroneDeploy

DroneDeploy является ведущей облачной программной платформой для коммерческих беспилотных летательных аппаратов. Бесплатное приложение DroneDeploy обеспечивает легкий автоматический полет и сбор данных и позволяет вам изучать и делиться высококачественными интерактивными картами, ортофотопланами и 3D-моделями прямо с вашего мобильного устройства.

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

Друзья, какие еще вам известны приложения для управления дронами DJI — пишите в комментариях к этой статье.

Обзор лучших приложений для квадрокоптера от специалистов iDrone.ru

25.11.2019

автор

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

Какие приложения стоит скачать владельцу дрона?

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

Также рассмотрите другие предложения:

  • Hover – отличная разработка для Android, дающая информацию о погоде, безопасности полетов;
  • DroneDeploy – специальный комплекс от DJI, который заменит самый передовой пульт управления;
  • Pix4D – инструмент для 3D-позиционирования, который не требует профессионализма для использования;
  • Google Earth – полностью бесплатный сервис, дающий много полезной информации владельцу коптера.

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

Где купить надежный дрон?

Чтобы приобрести квадрокоптер в Москве, воспользуйтесь предложением интернет-магазина iDrone. Используйте телефон, чтобы расширить функционал своего оборудования, покупайте официальные и неофициальные дополнения, апгрейд-комплекты. Выберите коптер, который выполнит нужные задачи, а затем подбирайте подходящее приложение для нового дрона. Чтобы получить консультацию, просто позвоните менеджерам компании.

Сообщения не найдены

Новое сообщение

Приложение Litchi для управления квадрокоптерами

003

Перед нами весьма интересное приложение для управления квадрокоптерами для ОС Андроид. Загрузить его можно в Google Play, при этом на сегодня количество установок находится в пределах 50 000, что свидетельствует о заинтересованности пользователей в этой программе. Приложение занимает всего 32 мегабайта, что смотрится очень выгодно в сравнении с другими подобными программами.

004

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

При первом запуске приложения вы должны быть подключены к Интернету для соединения приложение с серверами DJI. После первого запуска приложение будет автоматически подключаться к доступной сети Wi-Fi. Также нужно быть в зоне досягаемости Интернета для загрузки карт при построении маршрута.

002

Основные функции:

  • Смарт подключение: вам не нужно покидать приложение, чтобы войти в настройки Wi-Fi, потому что приложение автоматически ищет доступную Wi-Fi сеть и автоматически подключается к ней.
  • Быстрое обновление параметров полета (высота, расстояние, скорость и т.п.).
  • Автозапись полета.
  • Выбор между полноэкранным режимом и совмещенном, при котором отображаются видео и карты.
  • Расширенные настройки камеры (в том числе фото 4608×3456 и другие, которых нет в официальной спецификации).
  • Возможность делать фотографии Full HD во время записи видео.
  • Поддержка управления жестами.
  • Кэширование карты.
  • Совместимость с Vision, Vision Plus & Vision Plus с GoPro.

001
В будущем планируется добавление режима «Следуй за мной», больше функций наземной станции, такие как POI, журналы рейсов и другие.

Читайте еще:

Предыдущая статьяPhotoMath: гений математики в Play MarketСледующая статьяОбзор игры Gunslinger day

запуск автономного квадрокоптера в виртуальной среде / Habr

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

Обучая судей/преподавателей Aeronet на нашем проекте, мы столкнулись с потребностью упрощённого «входа в тему» программирования беспилотных аппаратов для преподавателей робототехники/информатики, которые уже обладают набором базовых знаний.

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

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

Изначально в качестве среды разработки авторами PX4 рекомендуется Linux Ubuntu LTS. Также есть поддержка Mac. В этом году появилась среда симуляции и разработки под Windows в Cygwin, что может упростить жизнь Российским учебным заведениям, которые используют Windows в классах информатики.

Далее мы рассмотрим процесс установки, сборки и запуска симулятора под Linux и под Windows.

Установка и запуск jMAVSim на Linux Ubuntu

Разработчики PX4 в качестве стандартной системы рекомендуют Linux Ubuntu 16.04 LTS. Linux позволяет производить сборку пакета PX4 под все поддерживаемые системы (аппаратные платформы на базе NuttX, Qualcomm Snapdragon Flight, Linux, среды симуляции, ROS).

Первым делом добавляем пользователя в группу «dialout»:

sudo usermod -a -G dialout $USER

Перелогинимся в систему, для того чтобы изменения вступили в силу.

Установка среды разработки (development toolchain) для Pixhawk/NuttX, включая jmavsim, осуществляется автоматически с помощью скрипта ubuntu_sim_nuttx.sh. Нужно скачать скрипт в каталог пользователя и запустить его с помощью команды

source ubuntu_sim_nuttx.sh

На все задаваемые скриптом вопросы ответить положительно.

По окончании выполнения скрипта перезагрузить компьютер.

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

Клонируем репозиторий ПО полётного контроллера PX4 с github:

git clone https://github.com/PX4/Firmware.git

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

cd src/Firmware

Осуществляем компиляцию и запуск симулятора:

make px4_sitl jmavsim

Процесс первой компиляции занимает некоторое время. После успешного завершения на экране появится консоль PX4:

Дрон можно отправить в полёт, введя в консоли команду:

pxh> commander takeoff

Посадка дрона – команда commander land, остановка симуляции – CTRL+C или команда shutdown.

Установка и запуск jMAVSim на Windows

Набор инструментов PX4 Cygwin появился в 2018 году. Это наиболее производительный способ для компиляции/разработки 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 можно клонировать репозиторий и запустить симулятор с помощью команд:

git clone --recursive -j8 https://github.com/PX4/Firmware.git
cd Firmware
make px4_sitl jmavsim

После компиляции на экране появится консоль PX4 и окно симулятора:

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

Команды консоли для управления дроном те же: взлёт — commander takeoff, посадка – commander land, остановка симуляции – CTRL+C или команда shutdown.

Полёты с помощью программы наземной станции QGroundControl

Программа QGroundControl позволяет полностью настраивать дроны на платформах PX4 или ArduPilot, а также планировать и выполнять автономные полёты вне помещений по GPS.

Код программы полностью открыт, и она работает на платформах Windows, OS X, Linux, iOS и Android. Установочный файл под нужную платформу можно скачать в разделе Download сайта программы.

Для Windows скачиваем и запускаем вот этот файл.

После установки и запуска, если у нас на компьютере уже запущен jMAVSim – программа подключится к нему автоматически.

Запустить дрон в полёт можно с помощью кнопки Fly-Takeoff, посадить – Land. Также можно выполнить виртуальный полёт по точкам GPS:

Программирование автономного полёта с помощью mavros

Управление виртуальным дроном jMAVSim возможно по протоколу mavlink, который описан в нескольких статьях (например 1, 2). Для осуществления mavlink-коммуникации мы будем использовать пакет mavros системы ROS (robot operating system).

Разработчики PX4 рекомендуют использовать ROS Kinetic.

Пакет mavros обеспечивает связь по протоколу MAVLink между компьютером, на котором работает ROS (например, виртуалка с Linux, или Raspberry PI) и полётным контроллером (реальным или в среде симулятора).

Пакет mavros устанавливается вместе с другими пакетами в ходе полной установки ROS Kinetic.

Запуск пакета mavros с подключением к симулятору осуществляется командой roslaunch, с указанием ip адреса и порта компьютера, на котором запущен симулятор:

roslaunch mavros px4.launch fcu_url:="udp://@192.168.0.22:14557"

Если симулятор запущен не на том хосте, на котором работает jMAVSim – перед подключением mavros нужно разрешить рассылку mavlink сообщений по сети с помощью команды param set MAV_BROADCAST 1 в консоли jMAVSim. При выполнении команды выводится ip-адрес хоста, используемый для протокола mavlink. Порт можно узнать с помощью команды mavlink status в консоли симулятора:

Успешность подключения к полётному контроллеру следует проверить с помощью команды:

rostopic echo /mavros/state

Если подключение успешно – в консоли начнут появляться сообщения т.н. mavlink heartbeat, примерно раз в секунду:

Если сообщения не появляются/не обновляются/поле Connected = False – связь с полётным контроллером не установлена, и следует разобраться, почему.

На момент написания статьи, под Windows после команды param set MAV_BROADCAST 1 в консоли jMAVSim начинали в цикле выводиться сообщения:

WARN [mavlink] getting required buffer size failed. 

Чтобы симулятор заработал корректно под Windows, следует дополнить строку 1029 файла src/modules/mavlink/mavlink_main.cpp:

#if defined(__APPLE__) && defined(__MACH__) || defined(__CYGWIN__)

И перекомпилировать/перезапустить симулятор командой make px4_sitl jmavsim.

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

После успешного подключения, запустить дрон в автономный полёт можно с помощью следующих команд консоли ROS-системы:

После выполнения последней команды виртуальный дрон должен взлететь и зависнуть на высоте 5 метров:

Также запуск дрона можно осуществить с помощью несложного кода на Питоне:

import rospy
from geometry_msgs.msg import PoseStamped
from mavros_msgs.srv import CommandBool, SetMode

rospy.init_node("offbrd",anonymous=True)
rate=rospy.Rate(5)
setpoint_pub=rospy.Publisher("/mavros/setpoint_position/local",PoseStamped,queue_size=10)
arming_s=rospy.ServiceProxy("/mavros/cmd/arming",CommandBool)
set_mode=rospy.ServiceProxy("/mavros/set_mode",SetMode)
setpt=PoseStamped()
setpt.pose.position.z=5
for i in range (0,10):
    setpoint_pub.publish(setpt)
    rate.sleep()
set_mode(0,"OFFBOARD")
arming_s(True)

while (rospy.is_shutdown()==False):
    setpoint_pub.publish(setpt)
    rate.sleep()

Приведённый код использует вызов тех же сервисов ROS, что и пример вызова из командной строки.

Код нужно скопировать в текстовый файл, например, fly_jmavsim.py, и запустить его на выполнение из командной строки командой python fly_jmavsim.py.

В процессе отладки данного примера столкнулся с особенностью симулятора jMAVSim – для нормальной работы ему требуется производительный процессор. На виртуалке Linux он успевал просчитывать только 10 FPS, и падал сразу после взлёта. На ноутбуке, пока я писал статью – он также периодически терял управление/падал. Помогло питание ноутбука от сети – т.к. при питании от батарейки включается режим энергосбережения, что занижает производительность процессора, которая сказывается непосредственно на работе симулятора.

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

Желаем всем успешных полётов!

Ссылки:

Robot Operating System (ROS)
Автопилот PX4

Квадрокоптер управление с ноутбука. Управление квадрокоптером со смартфона или планшета

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

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

На каком квадрокоптере учиться летать?

Маленький квадрокоптер — мой первый коптер.

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

Существует множество миниатюрных коптеров, которые достаточно крепки и выносливы. Обратите внимание на следующие модели: Cheerson CX-10, Estes Proto-X Nano, Walkera QR Infra X, Syma X11. Уверенным в своих силах подрастающим пилотам можно рекомендовать дроны покрупнее (и дороже): Cheerson CX-35, Hubsan X4.

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

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

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

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

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

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

Назначение джойстиков.

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

Функциональные клавиши имеют разное назначение. Они включают фото и видеосъемку (если коптер оснащен камерой), записывают GPS точки (для полета по точкам и возврата на исходную позицию), меняют скорость и режимы полета.

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

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

Режимы полета коптера.

Даже простые модели коптеров запрограммированы на полеты в разных режимах.

Основными и самыми востребованными служат следующие три режима:

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

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

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *