Шоу дронов: как мы координировали рой танцующих коптеров

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

Какое-то время продолжим трудится на общее благо по адресу https://n-n-n.ru.
На новой платформе мы уделили особое внимание удобству поиска материалов.
Особенно рекомендуем познакомиться с работой рубрикатора.

Спасибо, ждём вас на N-N-N.ru

Отелям и паркам развлечений нужны шоу дронов. Артисты и фейерверки — это хорошо, но мало. Нужно придумывать что-то яркое для гостей. Шоу дронов — как раз такой вариант. Мы поучаствовали в проекте организации регулярных шоу дронов для одного иностранного парка развлечений. И теперь умеем делать такие же шоу в России.

Когда речь идёт о рое из 300 или 1 000 машин во флоте — точность позиционирования (то есть расположения каждого отдельного дрона относительно земли и друг друга) особой роли не играет. Это несущаяся масса, где частицы находятся на расстоянии нескольких метров друг от друга. Очень дорогая масса. Плюс-минус метр тут неважно: они берут тем, что до зрителя далеко, и тем, что дронов реально много. Даже если пара штук упадёт — ничего страшного. Но вот отелям и паркам, организаторам не особо масштабных мероприятий, например, нужны дроны в количестве 20–90 штук, и тут позиционирование критично. В этом случае можно взять только точностью и синхронностью. Такую задачу мы и решали.

Зачем и как всё это было

В составе КРОК есть подразделение робототехники. Возникло оно в 2012 году и занимается разными интересными вещами, но основное его направление — управление БПЛА. Мы пилим собственные софтинки для управления дронами и решения нестандартных задач. Участникам конкурса-2013 может быть известен вот этот код на гитхабе, который мы разработали и использовали для управления дроном на конкурсе летающих дронов. На тот момент мы решали новую для рынка задачу — заставить дрон зависать в нужном месте, аккуратно обходить углы и препятствия. Сегодня это кажется уже смешным.

Помимо этого, мы делаем проекты по управлению беспилотниками на базе вендорского софта, в том числе на базе софта компании SPH Engineering. У них есть как софтварная наземная станция UgCS, так и полноценный командный центр для больших дронофлотов. UgCS умеет управлять большой группой беспилотных аппаратов, что отличает её от обычных наземных станций управления. Под управлением мы понимаем планирование маршрута полёта, например, для спасательных работ или облёта периметра безопасности, отправку удалённых команд и контроль состояния аппаратов. По сути, для шоу дронов необходимы примерно те же функции, что и в командном центре. И сейчас на базе платформы UgCS появился узкоспециализированный софт Drone Dance Controller, но так было не сразу.

А как было

Софт. Первая версия, которую мы с партнёром опробовали в короткие сроки, использовала стандартную функциональность большинства гражданских дронов, а именно — полёт по заданному маршруту. Маршрут — это набор координат, между которыми беспилотник перемещается по прямой с заданной скоростью, по дороге делая что-нибудь полезное. Для большинства задач, решаемых дронами, такого планирования полёта более чем достаточно. Но в нем как минимум отсутствует синхронизация по времени, т. е. тяжело заставить дрон быть в заданной точке в нужное время, что для группового полёта критично. Однако первая версия — на то и первая версия, чтобы быстро её соорудить и начать летать. Рисуем маршруты стандартным способом (в UgCS, разумеется), грузим в дроны — и вперёд.

Синхронизацию полётов сделали, как и положено, в лоб. В маршрутах дронов были выделены точки, где дрон останавливался и ждал команды с земли, чтобы продолжить полёт. Мы назвали их точками синхронизации. Оператор на земле должен был убедиться, что все дроны добрались до точек синхронизации, и отправить им команду «Continue» для продолжения полёта.

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

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

И важный момент — мы сразу стали ориентироваться на технологию GPS RTK. Она позволяет достичь сантиметровой точности позиционирования относительно наземной базовой станции (у обычного GPS точность 3+ метра).

Да, GPS RTK всё усложняет, поскольку требует наличия приёмников с поддержкой GPS RTK на борту каждого аппарата, на которые нужно постоянно слать данные с наземной станции. Но ничего не поделать: мы понимали, что до больших флотов мы и наши клиенты дорастём не сразу. Сотнями и тысячами дронов в воздухе можно нарисовать прекрасные масштабные объёмные фигуры, в которых положение каждого дрона для глаза не очень критично. А что можно нарисовать несколькими десятками дронов? Скорее всего, это будут некие небольшие несложные геометрические фигуры и их трансформации, для которых абсолютно критична точность полёта. Грубо говоря, дроны должны уметь выстроиться в прямую линию, приятную для глаза и без изъянов.

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

Вот пример одного из первых полётов на первой версии железа и софта (и как раз с пиротехникой). Хорошо видны и нормальные линии (ну ок, ок. Там ещё было над чем работать.), и ручная синхронизация. То есть примерно 40–50 раз за шоу оператор нажимал «Поехали дальше», и затем на дроны рассылалась следующая команда каждому.

Но получилось уже что-то летающее.

Таким образом заказчик отлетал сезон ежедневных шоу.

Как это работает сейчас

На практике первая версия ожидаемо оказалась не самым удачным решением. Во-первых, наличие постоянной ручной синхронизации — зло. Команда «Continue» может не дойти до дрона по причине, например, плохой радиосвязи. В этом случае все улетят дальше, а он, бедный, останется. Во-вторых, невозможно создавать сложные маршруты, что препятствует созданию анимированных картин, возможны только статичные сцены.

Сейчас всё стало проще: примерно полгода назад вендор выпустил специальную версию софтины — Drone Dance Controller, например. Здесь он немного поколдовал над автопилотом и научил его автономно летать по произвольным траекториям с чёткой привязкой к GPS-времени. Траектории можно готовить в 3D-редакторе или с помощью скриптов. От оператора теперь требуется нажать на кнопку «Старт» и уйти курить. На выходе может получиться что-то вроде вот этого:

Или этого:

Но, прежде чем портить лёгкие, команде надо выполнить ответственный этап подготовки к шоу. Итак, надо, во-первых, подготовить флот: убедиться, что все дроны — в летабельном состоянии, правильно сконфигурированы, и от них ничего не отвалилось за время транспортировки.

Параллельно с этим надо готовить само шоу. Начинаем с анимации, которую можно сделать в 3D-редакторе, например, в Blender:

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

На видео — пример визуализации с разных точек обзора.

Точка обзора: зритель

Точка обзора: площадка запуска

Точка обзора 1

Точка обзора 2

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

А потом — и само шоу.

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

Разумеется, есть ряд ограничений.

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

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

Безопасность: зрители должны быть отодвинуты на определённое расстояние от места шоу, потому что дроны, вообще говоря, могут упасть.

Всё это надо учитывать при планировании.

Итого

Можно собрать рой дронов, купить софт UgCS, получить от нас рекомендации и начать летать. Если у вас уже есть определённая компетенция в дроноводстве, то всё окажется даже не очень сложно. Знаю ребят, которые подняли тестовый танец для 20 дронов через 24 часа после приобретения лицензии и рекомендаций по внедрению софта (правда, у них уже был флот). Если компетенции нет, но хочется делать такие шоу, то наши инженеры могут реализовать такой проект, всему обучить ваших специалистов и в дальнейшем поддерживать. Если надо просто отлетать разовое шоу — тоже пишите, обсудим.

Автор: Александр Левандовский

Пожалуйста, оцените статью:
Пока нет голосов
Источник(и):

Хабр