UAVCAN это открытый лёгкий протокол для бортовой сети подвижных объектов. Недавно его разработчик и мейнтейнер Павел Кириенко Spym рассказал о протоколе на PX4 Developer Summit, крупной конференции сообщества разработчиков дронов с использованием open-source экосистемы вокруг автопилота PX4, частью которой является UAVCAN. А ещё Павел подготовил подробную статью для русскоязычного сообщества на Хабре по следам своего доклада.
В этом материале я расскажу о практической стороне использования протокола с позиции разработчиков систем автоматического управления для БПЛА: как мы выбрали UAVCAN, что делаем с помощью него и какие возможности видим в будущем.
Гибридные БПЛА
Самолёт вертикального взлёта и посадки (VTOL) это гибрид коптера и самолёта, который может работать дольше коптера за счёт аэродинамической подъёмной силы крыла и при этом не требует взлётно-посадочной полосы либо пускового устройства и парашюта, как обычные самолётные беспилотники. Сейчас разработка таких устройств популярное и многообещающее направление. Такой аппарат можно использовать для доставки, картографии, мониторинга и других целей. По тому же принципу конструкции устроены большинство проектов летающего такси, например:
- полностью электрическое воздушное такси Lilium Jet немецкой
компании Lilium;
- малошумный электросамолёт Heaviside
компании Kitty Hawk Себастьяна Труна (которого многие знают по
беспилотным автомобилям);
- проект
Vahana от Airbus.
Самолёт вертикального взлёта и посадки Университета Иннополис
Мы разработали три модели небольших беспилотных аппаратов с разным размахом крыла, грузоподъёмностью и источниками питания полностью электрические и с двигателями внутреннего сгорания. По конструкциям летательных аппаратов сотрудничаем с Казанским авиационным институтом и авиационными предприятиями Казани, а фокус наших работ электроника, алгоритмы и автоматическое управление.
При чём здесь UAVCAN?
Те, кто занимаются коптерами, знают, что обычная структура системы управления выглядит примерно так:
Типовая схема БПЛА на базе автопилота PX4. Источник
Моторы управляются регуляторами оборотов (ESC), на которые посредством PWM (ШИМ) сигналов подаются уставки от автопилота. Датчики подключаются по куче разных интерфейсов UART, I2C, SPI. Плюс телеметрия, пульт, питание и получается такой паук из проводов. Но основная проблема не в этом.
Чем длиннее провода, то есть больше аппарат, тем эта схема сильнее подвержена наводкам. Нам об этом пришлось задумываться с самого начала, потому что у наших аппаратов размах крыльев 2 и 4 метра, и это не предел.
Раньше для проекта 40-метрового дирижабля мы работали с CAN (только протокол был на базе CANOpen). И решение использовать UAVCAN для нас было само собой разумеющимся: в PX4 уже есть его поддержка, даже никаких споров в команде по этому поводу не возникало. Изначально мы хотели заменить длинные линии PWM на цифровой интерфейс, чтобы масштабировать наши решения на аппараты с разным размахом крыла.
Заменив PWM-связи на UAVCAN-связи, мы перестали беспокоиться о проблемах длинных проводов и наводок, а также значительно уменьшили количество подключений к автопилоту.
Было два варианта, как это сделать. Первый использовать регуляторы моторов и сервоприводы с UAVCAN интерфейсом. Такие есть, например, у Zubax. Второй сделать адаптеры UAVCAN, которые устанавливаются непосредственно возле ESC. Мы пошли по второму варианту, потому что выбор ESC с UAVCAN интерфейсом невелик. Сначала мы использовали адаптеры проекта UAVCAN for Hobbyists (UC4H), затем решили делать свои устройства со встроенным DC-DC преобразователем, своей схемотехникой, прошивкой и нескучными диодиками.
Наши устройства с интерфейсом UAVCAN
Вошли во вкус
Дальше мы поняли, что можем вместо десятка проводов использовать шину UAVCAN для взаимодействия не только с исполнительными механизмами, но и с большинством внешних устройств. Это ещё и хорошо сказывается на виброизоляции контроллера, установленного на специальной платформе. В итоге мы разработали ряд девайсов для собственного применения, но сейчас видим, что они интересны другим:
- Преобразователь CAN-PWM до 4 каналов: устройство подключается к
шине CAN, принимает и обрабатывает сигналы управления, выдаёт ШИМ.
Питать плату можно напрямую с АКБ до 60 В, в её составе включается
DC-DC преобразователь, обеспечивающий напряжением 5 В (3 А) плату и
потребителя (например, сервомашинку);
- GPS/Magnetometer/Barometer;
- Силовая плата, Power Management Unit (PMU): обеспечивает
подсоединение нескольких АКБ (параллельно или последовательно при
необходимости). Устройство подключается последовательно со всей
силовой нагрузкой и обеспечивает её коммутацию. В конструкции
датчики напряжения и тока на АКБ, DC-DC преобразователь для
обеспечения питания автопилота. Такая плата рассчитана на большие
токи до 1000 А. В разработке устройство CAN в составе платы
выдающее информацию о напряжении и токе;
- Лазерный высотомер;
- Датчик воздушной скорости;
- Датчик уровня топлива;
Технически эти устройства реализованы на базе микроконтроллера STM32. Проектируем сами, а изготовление заказываем на pcbway.ru. Прошивка реализуется с использованием libcanard.
По нашим ощущениям для работы с UAVCAN довольно низкий порог входа. Новому сотруднику понадобилось меньше недели, чтобы разобраться и запрограммировать датчик расстояния как со стороны STM32, так и со стороны автопилота PX4.
Новые устройства тестируем на небольшом dark дроне
А затем уже используем на самолёте:
Короткое видео тестового полета нашего VTOL-самолета во всех режимах
Здесь даже реально получить разрешения полетать над Казанским кремлём.
В итоге схема у нас выглядит так:
Схема нашего VTOL-самолёта с использованием UAVCAN датчиков и исполнительных механизмов
Какие преимущества UAVCAN даст нам в будущем
Резервирование
Важнейшая задача при реализации продукта на базе БПЛА обеспечить надёжность. Мы уже начали работать над этим. Например, несколько наших GPS и датчиков воздушной скорости подключить и использовать параллельно уже получается. Но ещё многое предстоит. Скорее всего, дублирования датчиков и контроллеров с использованием CAN шины будут сделаны проще. К Pixhawk можно подключить две шины, а на шине оставить несколько одинаковых датчиков для резервирования.
Масштабирование
В будущем мы хотим делать большие аппараты взлётной массой больше 30 кг, хотя это и сложно сертифицировать. Масштабируемость архитектуры на базе UAVCAN позволяет строить амбициозные планы.
True HIL-симуляция
Сейчас активно развивается тема работы БПЛА в городской среде Urban Air Mobility (UAM). Для реализации задач UAM нужно больше опираться на такие сенсоры, как камеры и лидары. Тут возникает необходимость разработки и отладки систем интеллектуального управления, а также повышение их надёжности. Для этих целей другая команда Университета Иннополис разрабатывает симулятор Innopolis Simulator для автономных подвижных объектов на основе Unity 3D для тестирования, отладки и обучения.
Innopolis Simulator
Для нашего VTOL-самолета используем Innopolis Simulator в связке с Gazebo для фотореалистичной симуляции, тестирования управления и обработки сенсорных данных лидаров и камер.
Сейчас работаем над своим модулем симуляции динамики вместо Gazebo с более точной аэродинамикой, а также над другой фишкой true HIL симуляцией (от hardware in the loop, или программно-аппаратное моделирование, ПАМ).
В нашем решении все данные поступают от датчиков, а управления на моторы и сервы отправляются по шине UAVCAN. Почему бы не сделать модуль симуляции этих датчиков на уровне той же шины? Просто вместо устройств к контроллеру мы подключаем компьютер с симулятором.
Сейчас HIL-симуляция в PX4 делается посредством специальных HIL_* сообщений MAVLINK (протокол телеметрии, работает по последовательному порту либо UDP/TCP), которые имитируют датчики и исполнительные механизмы.
Диаграмма работы PX4 в режиме HITL. Источник
Симуляция, как она реализована сейчас в PX4, это отдельный режим работы полётного контроллера, отличающийся от боевой полётной конфигурации. Мы имитируем непосредственно UAVCAN сообщения, в идеале автопилот может даже не знать, что работает в симулируемом окружении. Но нужно сказать, что пока концептуально не решена проблема симуляции IMU, которые находятся внутри автопилота и подключены не по CAN.
Предлагаемая схема работы PX4 в режиме HITL с использованием UAVCAN
Такое решение повышает достоверность результатов отладки на симуляторе, поэтому можно смелее переходить к лётным тестам.
Авиационный HIL симулятор. Источник
Подобный подход, когда устройства имитируются на уровне интерфейсов, используется и в большой авиации, но с UAVCAN мы делаем это доступнее и проще.
Вывод
Очень здорово, что над вопросами лёгкости, надёжности и риалтаймовости протокола UAVCAN уже подумали за нас, как и то, что есть PX4, ROS и Linux, в конце концов. Нам было бы очень сложно делать наши коптеры, самолёты, системы управления и планировщики, если бы всего этого не было.
Стандартизация протоколов и программных средств даёт возможность разработчикам говорить на одном языке. Вместе с тем, важна не только стандартизация, но и доступность, что в высокой степени обеспечивает open-source подход. Это позволяет, стоя на плечах гигантов, быстрее переходить к своим задачам, а не строить сначала долго инфраструктуру для работы, что, надеюсь, мы показали на нашем примере в данной статье.
Пьём колд брю после успешных полётов