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



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

    И теперь умеем делать такие же шоу в России.

    Когда речь идёт о рое из 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 часа после приобретения лицензии и рекомендаций по внедрению софта (правда, у них уже был флот). Если компетенции нет, но хочется делать такие шоу, то наши инженеры могут реализовать такой проект, всему обучить ваших специалистов и в дальнейшем поддерживать. Если надо просто отлетать разовое шоу — тоже пишите, обсудим.

    Ссылки


    КРОК
    115,00
    №1 по ИТ-услугам в России
    Поделиться публикацией

    Комментарии 19

      0
      НУ по моему мнению, опыт у ребят из droneswarm.ru по более вашего.
      У них уже была куча выступлений.
      Плюс у них софтовая часть своя…
        0
        Конечно же, есть и другие решения на рынке. И в лоб их сравнивать сложно. Основной акцент в технологии на базе UgCS сделан на точности хореографии, как по позиционированию, так и по времени. Вот один из примеров шоу. Кроме этого технологию можно купить, а не только получать шоу как сервис.
          +1
          Основной акцент в технологии на базе UgCS сделан на точности хореографии, как по позиционированию

          А кто вам сказал, что у ребят из droneswarm.ru, решение менее точное, как по позиционированию так и по по времени?
          Я точно знаю что они так же используют RTK GPS.
          PS. А вы тогда каким боком к данной технологии если её можно купить.
          Чисто российский посредник?
            0
            Мы не работали с ребятами из droneswarm, поэтому не могу дать никаких оценок их решения. Лишь описываю возможности представленной в посте технологии. Проекты шоу могут быть очень разные и помимо покупки базовой технологии может возникать изрядное количество задач. Где-то требуется обучение работе с системой, где-то дополнительная автоматизация при создании анимации или интеграция с другими элементами шоу (ведь, наряду с дронами может быть свет, звук и т.д.), где-то интеграция дронов со специфической полезной нагрузкой (например, как тут). Все это мы делаем, вплоть до глубокой кастомизации базового решения под конкретные задачи.
              0
              Т.е. вы не владеете собсно технологией, и явлетесь лишь посредниками и кастомизаторами.
                0
                /del
        0
        И важный момент — мы сразу стали ориентироваться на технологию GPS RTK.
        — не дешёвая игрушка и для достижения действительно высокой точности станция должна быть «достаточно» близко.
          0
          Википедия говорит про дальность 30км
          0
          Фееричное зрелище! Красиво! Пытаешься, бывает, настроить более-менее точный облет по координатам одного квадрокоптера, а тут их — целый рой!
            0

            представлял увидеть про "рой" — когда дроны взаимодействуют друг с другом и на основании этого взаимодействия строится траектория полета. Тут же "просто" (хоть и не просто технически) — полет независимых дронов рядом с соседними.

              0
              мне почему-то фраза о взаимодействии из которого получается траектория наводит на мысль о столкновении. Не надо наверное таких взаимодействий…
                0
                Тоже ожидал рассказа про взаимодействие в полёте: равноранговый рой или ведущий-ведомые.
                0
                А почему не рассматривали вариант ставить на дроны дополнительно инфракрасные маяки и наблюдать за их положениями с двух ракурсов через инфракрасные камеры? Софтом можно отслеживать положение точек сохраняя «понимание» которая из них какому дрону соответствует. При возникновении неоднозначностей посылать команду на кратковременное (доля секунды) гашение всех, кроме одного и так с каждым, из группы попавших в неопределенное положение.
                Две недорогие камеры с 60fps и инфракрасными светофильтрами обойдутся дешевле, чем N штук GPS RTK + базовая станция для мест, где нет штатной. Всю детальную координацию можно делать именно по оптической позиции, восстаналивая 3 локальные координаты по двум проекциям. Если одну из камер поставить со стороны зрителей, то и точность позиционирования для ракурса демонстрации будет чуть выше чем для других, менее значимых ракурсов. Это как бонус. Ну а плюс одна камера и у нас сильно меньше неоднозначностей и чуть больше точность.

                Была идея сделать такое шоу на плоскости воды, запустив рой мелких максимально дешевых корабликов:
                — RGB светодиод или два,
                — два самых дешевых моторчика с драйверами и винтами на удлиненной оси (левый и правый),
                — аккумулятор,
                — инфракрасный приёмник (для приёма сигналов управления),
                — инфракрасный светодиод (опционально) для отслеживания позиции кораблика, если не хотим иногда моргать вне очереди видимым светом для локации;
                — простенький контроллер,
                — всё собрано на куске пенопласта.
                Плюс к этому флоту еще две камеры на шаттивах, инфракрасный светодиодный прожектор для адресного управления и ноутбук. Можно ноутбук и RaspberyPi.
                На воде можно таким роем рисовать фигуры, моргать RGB-светодиодами, светить можно в воду и/или в рассеиватель разными цветами, получатся разные эффекты.
                Обратная связь по положению огонька.
                Есть кое-какие ограничения по хореографии и характеру движения корабликов, но на этомтоже можно строить интересные сюжеты. Зато сами кораблики получаются копеечными по сравнению с коптерами, их может быть реально много.
                Для пущего художественного эффекта можно утопить в зоне представления парочку мощных светодиодных RGB прожекторов, если вода относительно прозрачная.

                Я б за такое взялся=)
                  0
                  Довольно сложно порой оборудовать открытую площадку дополнительными «следящими» устройствами, так чтобы получилось точное позиционирование, т.к. объем, в котором будут летать дроны зачастую большой (60x60x60 метров, обычные габариты) и сенсоры надо ставить на высоте. Еще нужно понимать, что частота отправки РТК-поправок невелика и они могут периодически теряться, не приводя к значительным потерям точности позиционирования. А в случае с внешними камерами зависимость дронов от наземного оборудования и радиоканалов увеличивается на порядок. Ну и точность позиционирования по двум камерам будет намного ниже, чем в случае с РТК.
                  В качестве альтернативы для небольших площадок мы смотрим также в сторону UWB, но это скорей на перспективу, т.к. тоже много вопросов открытых.
                  +3
                  Я тут свому Pixhawk-у на 330-й раме не могу магнетометр откалибровать уже который год. А тут целый рой. Хорошая статья. Интересно поприсутствовать в реалии на шоу. Еще интересно — можно ли через mission-planer «залить» траекторию движения дрона в независимости от координат. Допустим — пришёл в рандомное место, поднял дрон на высоту и пусть он там по квадрату летает. Так возможно?
                    0
                    поприсутствовать в реалии на шоу

                    Вот наши реалии:

                    А в вашем случае надо «в реале», ну да, появилось такое слово в этих наших интернетах.
                      0
                      Почта России — «Да, это Жёстко ®». Не успеть или не смочь перевести леталку в ручной режим это конечно мегафэйспалм. Также есть подозрения, то что там тупо движки «заглохли», на тюбе полно видосов, когда дрон глох на высоте внезапно (явно не по питанию), и ни какой fail-safe не помогал, не важно Pixhawk (с колхозной прошивкой) или phantom (где работают «профессионалы»). Реалии/реале — какая разница, я уже давно не занимаюсь орфодрочерством — смысл донес и ладно, а то так ни на что времени не хватит, ни на хабр, ни на чаёк с печеньками.
                        0
                        Да я ж тоже не в образовательных целях=)
                        Так… вспомнилось про реалии и про дронов.
                    0
                    Еще есть от Геоскана такое решение.

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

                    Самое читаемое