23 сентября 2025
Unitree SDK2: туториал для разработчиков — от начала до продвинутых приложений

Unitree SDK2 — это фреймворк коммуникации и управления на базе CycloneDDS для роботов Unitree (Go2 / B2 / H1 / G1). Он работает без ROS2, оставаясь ROS2-совместимым, и предоставляет нативные C++ API плюс Python-обёртку через pybind11 для быстрого прототипирования и продакшена.
Ключевые характеристики
Низкая задержка DDS: прямой обмен данными с оборудованием робота без промежуточных слоёв. ROS2 не требуется: опциональная совместимость через DDS. Кросс-языковой: C++ API для производительности + Python-обёртка через pybind11 для удобства.
Системные требования
Ubuntu 20.04 или 22.04 (рекомендуется). Python 3.8+. CMake 3.16+ и g++ 9.0+. При ошибках установки убедитесь, что установлены python3-dev и DDS runtime библиотеки.
Установка
1. Клонирование репозитория: git clone https://github.com/unitreerobotics/unitree_sdk2 && cd unitree_sdk2
2. Сборка ядра SDK (C++): mkdir build && cd build && cmake .. && make -j4
3. Установка Python-обёртки: cd ../python_wrapper && pip install . && pip install pybind11 cyclonedds
Быстрый старт (Python)
Подключение: from unitree_sdk2 import RobotInterface; robot = RobotInterface(); robot.start() — устанавливает связь с роботом.
Базовые движения: robot.move_forward(speed=0.2, duration=3.0) — движение вперёд. robot.sit_down() — сесть. robot.stand_up() — встать.
Доступ к состоянию робота
Состояние суставов: angles = robot.get_joint_angles() — углы, vels = robot.get_joint_velocities() — скорости.
IMU: imu = robot.get_imu_data() — доступ к imu.orientation (ориентация) и imu.angular_velocity (угловая скорость).
Силы контакта стоп: forces = robot.get_foot_forces() — данные с датчиков силы на концах ног.
Продвинутое управление движением
Кастомные траектории: задайте массив точек [{x, y, z, duration}, ...] и вызовите robot.execute_trajectory(traj). Каждая точка определяет смещение и время перехода.
Переключение режимов: robot.set_motion_mode('trot') для рыси, robot.set_motion_mode('stand') для стояния.
Совместимость с ROS2
SDK2 и ROS2-ноды могут обмениваться топиками через DDS. Пример: публикация IMU в /imu/data для визуализации в RViz, сохраняя низкоуровневое Python-управление. Для смешанных сред используйте DDS domain bridge.
Лучшие практики
Используйте Ubuntu 20.04/22.04 — избегайте смешанных ОС. Робот и управляющий ПК должны быть в одной подсети. Прототипируйте на Python, переносите критичные части на C++.
Устранение неполадок
ImportError: добавьте путь CycloneDDS в LD_LIBRARY_PATH. Высокая задержка: проверьте качество Wi-Fi/Ethernet (DDS чувствителен к потере пакетов). Нет ответа: убедитесь, что блокировка управления роботом снята.