? Введение

VisionPilot — простая, независимая и расширяемая система автономного автопилота, созданная в качестве примера на базе следующих компонентов:

  • Betaflight (полетный контроллер)

  • Orange Pi 5 с NPU Rockchip (аппаратное ускорение инференса YOLO)

  • ELRS (управление)

  • FPV-камера

Все вычисления и управление происходят на Orange Pi 5.

? Проблематика и цель

Что важно:

  • Простота реализации и воспроизведения

  • Минимум оборудования — только доступные и недорогие компоненты

  • Реальная автономность работы системы

Цель VisionPilot:

  • Обнаружение объектов (человек, препятствие) с помощью камеры

  • Автоматическое удержание объекта в центре кадра

  • Плавная корректировка курса в реальном времени

  • Максимальная автономность работы без постоянного вмешательства оператора

? Аппаратная архитектура

Камера → Orange Pi 5 (YOLO с использованием NPU) → offsets.json
offsets.json → RC-конвертер на Python → CRSF-пакеты → Betaflight полётный контроллер

Сигнал ELRS всегда активен, однако автопилот корректирует управление только при активации, например, с помощью переключателя на канале 12.

? YOLO + NPU на Orange Pi 5

  • Используется YOLOv5 (или другая версия), экспортированная в формат RKNN

  • Инференс выполняется на NPU Rockchip

  • Время обработки одного кадра (320×320) составляет примерно 30 мс

Работа системы включает:

  1. Захват изображения с камеры через OpenCV

  2. Вырезка центрированной области размером 320×320 пикселей

  3. Запуск инференса модели YOLO на NPU

  4. Поиск первого обнаруженного объекта и вычисление смещений offset_x, offset_y

  5. Усреднение смещений по последним 20 значениям для сглаживания

  6. Запись усреднённого смещения в файл offsets.json

⚙️ CRSF‑модуль: от JSON до управления

Вторая часть системы — Python-скрипт, который:

  • Считывает данные из файла offsets.json

  • Масштабирует пиксельные смещения в CRSF-совместимые значения RC (диапазон 172–1811 тиков)

  • Формирует CRSF-пакет с проверкой целостности CRC8

  • Отправляет пакет по UART на полётный контроллер Betaflight

Особенности работы модуля:

  • Трекинг активируется при переключении канала 12 на значение выше 1700

  • Газ (throttle) удерживается на уровне, не ниже стартового, чтобы обеспечить стабильность

  • При выключении трекинга:

    • Скрипт прекращает передачу команд автопилоту

    • Возвращает управление обратно оператору вручную

? Результаты тестов

  • YOLO-инференс на NPU: 25–30 FPS

  • Задержка от кадра до отправки RC-пакета: 50 мс

? Почему VisionPilot?

  • Просто — работает всего на одной камере и «ядрёном» Python-коде без лишних сложностей

  • Мощно — использует инференс на NPU Rockchip, что обеспечивает быструю и эффективную обработку

  • Гибко — легко заменить модель детекции, настроить пороги срабатывания и добавить новые классы объектов

  • Надёжно — встроенная логика удержания уровня газа, контроль целостности данных через CRC и усреднение значений для плавной работы

?️ Что дальше?

  • Добавить обнаружение тонких объектов и возможность сегментации (segmentation) — для ещё более точного понимания сцены

  • Разработать надежные Failsafe‑механизмы — например, если объект теряется из вида, автопилот сможет автоматически вернуться домой

  • Внедрить поддержку Optical Flow — уже на стадии активной разработки для улучшения слежения и стабилизации

  • Реализовать Telemetry через MAVLink — чтобы в реальном времени следить за состоянием автопилота и его параметрами

  • Расширять список распознаваемых объектов и обучать модели на новых, более сложных датасетах для универсальности

? Заключение

VisionPilot демонстрирует, что автономный автопилот — это не просто сложная технология из научной фантастики, а реальный проект, который можно реализовать на доступных платформах и с минимальными затратами. От точной YOLO-детекции до надежной CRSF‑упаковки — всё в одном решении, готовом к дальнейшему развитию и интеграции.

? Ссылки

Исходники и примеры: VohminV/VisionPilot

Комментарии (1)


  1. roverseti
    17.07.2025 09:48

    Спасибо, пишите еще ! Не понимаю тех , кто минусует. +++++++