Перейти к содержанию

Разработка

Архитектура

   [Ноутбук разработчика]  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 — рекомендуемый способ

  1. Соедините кабелем ноутбук и разъём RJ45 на задней панели робота.
  2. Настройки сети → Wired connection → Manual IPv4 → адрес 192.168.123.250, маска 255.255.255.0.
  3. Подключитесь: ssh unitree@192.168.123.164, пароль 123.
  4. При первом подключении подтвердите 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 сторонними образами