Middle-разработчик бортового ПО БПЛА (ArduPilot, Python)
Разработка бортового ПО для тяжёлых грузовых мультироторов на ArduPilot с бортовым компьютером Raspberry Pi 5 и ускорителем Hailo-8, с навигацией без GPS (VIO). Нужен разработчик, который пишет и доводит до полёта код на стыке компаньона и полётного контроллера.
Стек
Полётный контроллер: ArduPilot Copter (единственная система), MAVLink, Lua-скрипты. Компаньон: Raspberry Pi 5, Linux (Debian/Ubuntu), Python 3, C++17, systemd, Docker. Связь с FC: pymavlink / MAVSDK / MAVProxy, UART и Ethernet. Видео и CV: GStreamer, OpenCV, Hailo-8 (HailoRT, компиляция моделей под Hailo), камеры global shutter. Навигация: VIO / визуальная одометрия, оптический поток, дальномеры, передача позиции в EKF3 (VISION_POSITION_ESTIMATE / ODOMETRY). Наземка: собственный ЦУП «Точка ЦУП» на Go / Python / Rust, обмен с бортом по MAVLink и видео по GStreamer. Инструменты: Git, SITL ArduPilot, разбор логов .bin.
Обязанности
Разработка и сопровождение сервисов на компаньоне: сбор телеметрии, передача команд в Guided, обработка событий миссии, watchdog и восстановление после сбоев. Интеграция VIO/CV-пайплайна с ArduPilot: формирование сообщений внешней навигации, тайминги, ковариации, проверка поведения EKF3 по логам. Сборка GStreamer-пайплайнов для видео с борта на землю: аппаратное кодирование, задержка, устойчивость на плохом канале. Запуск и оптимизация нейросетевых моделей на Hailo-8: конвертация, квантование, инференс в реальном времени, интеграция результатов в логику полёта. Написание Lua-скриптов для ArduPilot под задачи миссии. Тестирование в SITL — обязательный этап перед любым запуском на борту; затем на реальных бортах вместе с инженерами настройки, разбор инцидентов по логам. Ведение changelog и версий образов компаньона и скриптов, воспроизводимые сборки. Документация: архитектура сервисов, инструкции по развёртыванию образа компаньона, схемы обмена данными.
Требования
Опыт коммерческой разработки от 2–3 лет на Python под Linux; уверенно читаете и при необходимости пишете на Go или Rust (или готовы быстро освоить — часть кода ЦУП и сервисов на них). Практика работы с MAVLink: понимаете структуру сообщений, потоки, sysid/compid, писали код обмена с ArduPilot или PX4. Опыт с GStreamer или аналогичной видеообработкой в реальном времени, OpenCV. Работали с одноплатниками (Raspberry Pi, Jetson, Orange Pi): GPIO/UART/CSI, сборка образов, автозапуск, отладка по SSH. Понимание, как устроен ArduPilot Copter на уровне пользователя-инженера: режимы, параметры, EKF, что такое Guided и как в него отдавать цели. Git, код-ревью, умение писать понятные коммиты и README. Активный пользователь Claude / LLM-ассистентов в разработке: генерация и ревью кода, разбор чужого кода, документация — с пониманием, где ассистент ошибается. Чтение документации и исходников на английском. Готовность ездить на площадку на интеграцию и тестовые полёты; на площадке — по правилам безопасности инженеров, без самостоятельных запусков.
Будет плюсом
Опыт с VIO/SLAM: ORB-SLAM3, OpenVINS, VINS-Fusion, RealSense T265 / D4xx, калибровка камер и IMU (Kalibr). Опыт деплоя нейросетей на edge-ускорители: Hailo, Coral, Jetson TensorRT, OpenVINO — Hailo-8 обучим, важен опыт с любым ускорителем. ROS 2 и mavros / ArduPilot DDS. Знание исходников ArduPilot, сборка прошивки под свою плату, правки в C++. Коммерческий опыт на Go или Rust. Опыт работы с коптерами и самолётами (ArduPilot Copter/Plane, QuadPlane), одометрией и навигационными датчиками. Опыт с mesh-сетями, PPP/Ethernet между FC и компаньоном. Пилотирование квадрокоптера.
Безопасность и ответственность
Код, который влияет на полёт, идёт на борт только после прогона в SITL и ревью; на реальном борту — только с инженером настройки по чек-листу. Каждая правка прошивки, образа компаньона и параметр-файла — с версией и записью в changelog.
Условия
Оформление по ТК РФ, полная занятость. Работа с информацией заказчиков под NDA. Заработная плата по результатам собеседования. График 5/2, работа в мастерской в Москве. Офис метро ВДНХ.