Unitree

23 сентября 2025

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

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 чувствителен к потере пакетов). Нет ответа: убедитесь, что блокировка управления роботом снята.