Миграция SDK1 → SDK2
В серии «Пионер» исторически было две Python-библиотеки: pioneer_sdk (первое поколение, SDK1) и pioneer_sdk2 (SDK2). Пионер Мини 2 работает с SDK2; SDK1 остаётся для «Базового» с платой-адаптером и старых учебных материалов. Этот урок помогает перенести код.
Какая библиотека где
| Библиотека | Кому подходит | Установка |
|---|---|---|
pioneer_sdk (SDK1) | Пионер Базовый с платой-адаптером; старые примеры | pip install pioneer_sdk |
pioneer_sdk2 (SDK2) | Пионер Мини 2; Базовый с Radxa Zero 3W / Pi Zero 2W | pip install pioneer_sdk2 |
На Пионере Мини 2 SDK2 уже установлена на борту (версия 0.15.1 в снимке — см. аудит).
Главное различие: RC-каналы
В SDK1 каналы задавались «пультовыми» значениями ШИМ (обычно около 1000–2000 мкс), а в SDK2 — нормированными значениями от −1 до 1. Для перехода между форматами в SDK2 есть готовый метод:
# rc_sdk1_to_sdk2: PWM-каналы SDK1 -> нормированные каналы SDK2
ch1, ch2, ch3, ch4, ch5 = rc_sdk1_to_sdk2(channel_1, channel_2, channel_3, channel_4, channel_5=2000)
Семантика нормированных каналов SDK2 (метод send_rc_channels()):
| Канал | Стик | Значения |
|---|---|---|
channel_1 | правый | −1 влево, 0 центр, 1 вправо |
channel_2 | правый | −1 вперёд, 0 центр, 1 назад |
channel_3 | левый | −1 вниз, 0 центр, 1 вверх |
channel_4 | левый | 1 влево, 0 центр, −1 вправо |
channel_5 | — | канал режима управления |
Для отправки RC-каналов нужны параметры автопилота Copter_man_rcMode0=6.0, Copter_man_rcMode1=3.0, Copter_man_rcMode2=3.0, Copter_flyWithoutRc=1.0, SensorMux_rc=2.0. Подробнее — в справочнике и уроке «Примеры» (wasd_rc_channels.py).
Видео: VideoStream → ImageViewer
В SDK1 вывод изображения с камеры выполнялся классом VideoStream. В SDK2 его заменяет ImageViewer (публикация кадра в RTSP/WebRTC через mediamtx) и класс Camera для получения кадров:
# SDK2
from pioneer_sdk2 import Camera, CameraType, ImageViewer
cam = Camera(CameraType.MAIN)
iv = ImageViewer()
frame = cam.get_cv_frame(timeout=5.0)
iv.imshow("video", frame, fps=30)
Карта соответствий (обзор)
| Задача | SDK1 | SDK2 |
|---|---|---|
| Соединение | Pioneer() | Pioneer() (по умолчанию TCP 127.0.0.1:20556) |
| Взлёт/посадка | arm/takeoff/land | arm()/takeoff()/land() |
| Полёт в точку | локальные/глобальные команды | go_to_local_point(), go_to_global_point() |
| Ручное управление | RC в значениях ШИМ | send_rc_channels() (нормированные) |
| Видео | VideoStream | Camera + ImageViewer |
| Серво камеры | серво-команды | ServoCamera.set_angle() |
| Телеметрия | чтение компонентов | Pioneer.messenger.hub[...], события |
Чек-лист миграции
- Замените импорты
pioneer_sdk→pioneer_sdk2. - Переведите RC-значения в нормированный вид (или используйте
rc_sdk1_to_sdk2()). - Замените
VideoStreamнаCamera+ImageViewer. - Проверьте параметры автопилота под новый способ управления.
- Оберните миссию в
try/finallyс безопасным завершением (см. Безопасность). - Протестируйте на малой высоте без нагрузки.
См. также
- Справочник: rc_sdk1_to_sdk2.
- Пионер Базовый — выбор SDK.
- Примеры — готовые скрипты SDK2.