Разработка¶
Архитектура¶
[Ноутбук разработчика] 192.168.123.200–250 (статика, DHCP НЕТ)
│ Ethernet через RJ45 на задней панели — рекомендуемый способ
▼
┌────────────────────────┐ Ethernet ┌──────────────────────────┐
│ PC2 = Jetson Orin NX │◄──────────►│ PC1 = материнская плата │
│ 192.168.123.164 │ (внутри) │ 192.168.123.161 │
│ 100 TOPS, Ubuntu 20.04│ │ локомоция, стабилизация │
│ ← ВАШ КОД ЗДЕСЬ │ │ пульт, приложение │
│ ssh unitree / 123 │ │ НЕ ТРОГАТЬ │
└────────────────────────┘ └──────────────────────────┘
│ ▲
│ Livox MID-360 LiDAR │ прямое радио
│ 192.168.123.20 [пульт ДУ]
▼
маска подсети для всех узлов: 255.255.255.0
Такое разделение — это защита: если вы «уроните» PC2, PC1 продолжит работать. Локомоция и стабилизация не пострадают, потому что напрямую с PC1 вы не работаете.
Настройка сети¶
| Устройство | IP |
|---|---|
| PC1 — управляющий компьютер (локомоция) | 192.168.123.161 |
| PC2 — Jetson Orin NX (ваш) | 192.168.123.164 |
| LiDAR Livox MID-360 | 192.168.123.20 |
| Ваш ноутбук | 192.168.123.200–.250 |
| Маска подсети | 255.255.255.0 |
DHCP-сервера в сети робота нет
Все адреса назначаются вручную. Выберите свободный адрес в подсети 192.168.123.x, в диапазоне .200–.250.
По Ethernet — рекомендуемый способ¶
- Соедините кабелем ноутбук и разъём RJ45 на задней панели робота.
- Настройки сети → Wired connection → Manual IPv4 → адрес
192.168.123.250, маска255.255.255.0. - Подключитесь:
ssh unitree@192.168.123.164, пароль123. - При первом подключении подтвердите fingerprint.
По Wi-Fi¶
- На старых партиях Wi-Fi на Jetson не активирован. Включите его командой
sudo rfkill unblock all. - Статический IP на Wi-Fi-хотспоте убирает доступ в интернет на Jetson. Для разработки используйте Ethernet.
Дополнительное оборудование — второй Jetson, Raspberry Pi и подобное — подключается через свободный RJ45 и попадает в ту же локальную сеть, что PC1 и PC2.
Никогда не меняйте проводные сетевые настройки внутри робота
Восстановление после такого изменения означает вскрытие задней панели и переустановку операционной системы. Интерфейсы, которые вы увидите и которые трогать нельзя: Ethernet, Docker bridge, bridge LAN и Wi-Fi, peer-to-peer LAN.
SDK¶
Функции появляются сначала в C++, затем в Python, затем в ROS2. Отставание ROS2 достигает года.
| Вариант | Когда выбирать |
|---|---|
unitree_sdk2 (C++) |
Управление локомоцией и доступ к новейшим функциям. Основной репозиторий, open source на GitHub, форкается. На Jetson предустановлен |
| Python | Стартовая точка, интеграции, речь. Ставится через pip install |
| ROS2 (Cyclone DDS) | Навигация, SLAM, картирование, подключение сторонних модулей |
Используйте виртуальное окружение Python. Работа вне него приводит к конфликтам зависимостей и ломается при обновлении ОС.
Операционная система: Ubuntu 20.04 (заводской образ Jetson) или 22.04. SDK также адаптирован под Fedora Workstation — запросите эту инструкцию у поставщика.
Чем ROS2 лучше ROS1 для этой задачи: ROS2 разделяет память между узлами на разных машинах. Визуализация идёт на ноутбуке, вычисления — на Jetson, и всё это в едином пространстве параметров. Сторонние руки подключаются как «второй робот» в той же экосистеме.
Develop mode¶
После включения G1 встроенная программа управления движением стартует автоматически, даже без команд с пульта. Она периодически шлёт инструкции со скоростью 0. Использование SDK для low-level разработки в этом состоянии вызывает конфликт команд, и робота начинает трясти.
Этим же объясняется ощущение «напряжённости» робота в Zero Torque: встроенная программа работает всегда.
Входите в Develop mode до любой low-level разработки
Пропуск этого шага приводит к конфликту команд и дрожанию робота. Develop mode доступен на версии EDU.
| Шаг | Действие | Проверка |
|---|---|---|
| 1 | Подвесьте робота на кронштейн и переведите в Damping | — |
| 2 | Нажмите L2+R2 | Вход в Develop mode, встроенная программа останавливается |
| 3 | Нажмите L2+A | Робот принимает специфическую диагностическую позу (position mode) — это подтверждает, что Develop mode активен |
| 4 | Если поза не та, нажимайте L2+R2 повторно, пока она не станет правильной | — |
| 5 | Нажмите L2+B | Возврат в Damping. Теперь можно работать с SDK |
High level и low level¶
| Уровень | Что это | Риск |
|---|---|---|
| High level | Встроенные функции Unitree — стоять, приседать, идти, жесты | Безопасно |
| Low level | Прямое управление суставами в трёх доменах: всё тело, ноги, верхняя часть | Робота можно физически сломать, если сустав находится в некорректном положении. Строго следуйте процедуре |
Locomotion client: squat, stand up, move(X, Y, Z) — X вперёд, Y вбок, Z поворот. Движение двумерное, вверх робот не идёт.
Один мотор — это три мотора. То, что снаружи выглядит как один мотор, внутри содержит три.
Где исполняется ваш код: на PC2 (Jetson). Подключение напрямую к PC1 технически возможно и не поддерживается.
Аудио с микрофона¶
SDK не отдаёт realtime-поток с микрофона. Аудио синхронизируется по multicast с PC1 на PC2, только в эту сторону.
- Запросите адрес и порт multicast-группы у поставщика.
- Для большинства ASR- и LLM-API поток нужно преобразовать в 16 кГц.
Симуляторы и обучение движениям¶
| Инструмент | Статус |
|---|---|
| Isaac Lab | Рекомендован для reinforcement learning и imitation learning |
| Gazebo | Интеграция существует и поддерживается сообществом, не официально |
| MuJoCo | Альтернатива, слабее для этих симуляций |
Лестницы не работают из коробки
Подъём по лестнице требует переобучения локомоции с нуля. Заявленная максимальная высота ступени — около 15 см. Команды, добившиеся прохождения лестниц, полностью переписывали стек локомоции.
Интеграция с ИИ¶
Используйте двухуровневую архитектуру:
[Агент-планировщик] ──► разбивает задачу на шаги
(reasoning-модель) и вызывает функции робота
│
▼
[VLA — Visual Language Action] ──► исполнение действий
Не отдавайте разговорной live-модели прямое управление суставами
Разговорная live-модель недостаточно надёжна для управления роботом и допускает ошибки. Live API годятся для диалога, но не для управления.
- Function calling: модель вызывает предопределённые функции робота. Требует корректного контекста и промпта.
- Референсная интеграция: Google Gemini по API-ключу, запуск локально с ноутбука при подключённом к Wi-Fi роботе. Быстрый отклик достигается за счёт pre-generation — модель начинает генерировать ответ до того, как говорящий закончил фразу.
- World model от Unitree для бытовых задач находится в разработке и пока недоступна.
Расширение железа¶
- Сторонние кисти рук, например Inspire Robotics hand, устанавливаются plug and play: смонтировать, правильно развести проводку и подключить к PC2.
- Внешние руки поддерживает только конфигурация U2 (7 DoF в руках). У конфигурации U1 (5 DoF) SDK ограничен, и такие модификации не поддерживаются. Наш экземпляр — U2.
- Через ROS2 дополнительный модуль виден как «второй робот» и управляется в общем контуре.
- Голову можно модифицировать: напечатать переднюю панель на 3D-принтере и развернуть камеру вперёд — штатно она смотрит вниз — либо добавить вторую камеру.
Не прошивайте Jetson Orin NX сторонними образами