? Введение
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 мс
Работа системы включает:
Захват изображения с камеры через OpenCV
Вырезка центрированной области размером 320×320 пикселей
Запуск инференса модели YOLO на NPU
Поиск первого обнаруженного объекта и вычисление смещений offset_x, offset_y
Усреднение смещений по последним 20 значениям для сглаживания
Запись усреднённого смещения в файл 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
roverseti
Спасибо, пишите еще ! Не понимаю тех , кто минусует. +++++++