Примеры программ

Официальные демонстрационные примеры собраны в репозитории pioneer-team/pioneer-sdk2-example (GitFlic). Примеры рассчитаны на учебное использование: от чтения телеметрии и работы с камерой до простых полётных миссий, ArUco-навигации и управления по жестам.

Разборы примеров

Для каждой группы примеров на сайте есть отдельная страница разбора: как устроен код, какие методы SDK применяются и на что обратить внимание при запуске.

РазборПримерыСодержание
Полётные миссииmission_examples/Полёт по точкам с событием POINT_REACHED, окружность с видео, ручная скорость
Телеметрияget_telemetry/17 скриптов: аккумулятор, позиция, скорость, навигация, датчики
Камераcamera_examples/Кадры, RTSP через ImageViewer, сервокамера, калибровка
ArUcoaruco_examples/Детекция меток, координаты через solvePnP, полёт с удержанием метки
RC-каналыrc_channels_examples/Каналы управления SDK2, параметры автопилота, WASD-управление
Сопровождение человекаhuman_tracking/YOLO Pose из Pioneer-RKNN, разворот к человеку, управление жестами
WASD_flight.pyWASD_flight.pyИнтерактивное управление с клавиатуры через SSH с видеопотоком
События автопилотаsubscribe_event.py, unsubscribe_event.pyПодписка колбэков на события автопилота и отписка

Структура репозитория

.
├── aruco_examples          # поиск ArUco-меток, координаты метки, полет с удержанием метки
├── camera_examples         # кадры, RTSP-трансляция через ImageViewer, сервокамера, калибровка
├── get_telemetry           # аккумулятор, положение, скорость, навигация, датчики
├── human_tracking          # сопровождение человека и распознавание жестов (Pioneer-RKNN)
├── mission_examples        # взлет, полет в точки, движение по окружности, ручная скорость
├── rc_channels_examples    # настройка автопилота, ручные каналы, конвертация из SDK1
├── subscribe_event.py      # подписка на события автопилота
├── unsubscribe_event.py    # отписка от событий
├── WASD_flight.py          # управление дроном и сервокамерой с клавиатуры + видеопоток
└── README.md

Группы примеров

Краткая сводка (подробности — в разборах выше):

ГруппаСодержание
camera_examplesПолучение кадров, RTSP-трансляция через ImageViewer, поворот сервокамеры и калибровка камеры.
get_telemetryЧтение состояния аккумулятора, положения, скорости, навигации и данных датчиков.
mission_examplesВзлёт, полёт в локальные точки, движение по окружности и ручное задание скорости.
aruco_examplesПоиск ArUco-меток, расчёт координат метки и полёт с удержанием метки.
rc_channels_examplesНастройка автопилота, отправка каналов ручного управления, конвертация значений из формата SDK1.
human_trackingСопровождение человека и распознавание жестов через Pioneer-RKNN.
WASD_flight.pyИнтерактивное управление дроном и сервокамерой с клавиатуры с видеопотоком.
subscribe_event.py / unsubscribe_event.pyПодписка и отписка от событий автопилота.

Требования

  • Python 3.12.
  • Установленная и настроенная библиотека pioneer_sdk2.
  • opencv-python и numpy — для примеров камеры и ArUco.
  • pioneer_rknn — для примера human_tracking.

Примеры с ImageViewer предполагают конфигурацию камеры с драйвером gstreamer. На конфигурациях с rtsp класс ImageViewer может быть недоступен.

Запуск

Перейдите в нужную директорию и запустите выбранный файл:

python3 camera_stream.py

Для полётных примеров проверьте зону полёта, заряд аккумулятора, систему навигации и возможность аварийной посадки. Большинство полётных скриптов завершают соединение с дроном в finally, но физическая безопасность зависит от корректной подготовки площадки. Примеры с камерой и ImageViewer запускаются на борту Мини 2.

Видеопоток ImageViewer

ImageViewer публикует обработанный кадр по имени потока:

viewer = ImageViewer()
viewer.imshow(name="video", frame=frame, fps=30)

Поток video доступен по адресу:

rtsp://10.42.0.1:8554/video/

Порты mediamtx на борту: 8554 — RTSP, 8889 — WebRTC (браузер: http://10.42.0.1:8889/video/), 8888 — HLS, 8890 — SRT, 9997 — REST API. В комментариях официальных примеров встречается rtsp://…:8889 — это опечатка: порт 8889 отдаёт WebRTC, а не RTSP.

Для других примеров имя потока указано в README соответствующей директории.

Типовые задачи (из официальной документации)

  • Управление через клавиатуру с видео и управлением грузом (адаптация примера Pioneer-SDK).
  • Смена цвета светодиодов в зависимости от высоты (определение высоты по дальномеру).
  • Полёт по окружности с видео.
  • Калибровка камеры для ArUco-маркеров, обнаружение маркера и его координат.
  • Следование за ArUco-маркером.
  • Вывод изображения с камеры без обработки (класс VideoStream из Pioneer-SDK 1).