Руководство по установке OpenArm 101
Пройдите этот путь от распаковки до первого движения, обученного ИИ. Всего занимает около 4–5 часов.
Распаковка и проверка безопасности
⏱ ~30 мин.Прежде чем начать
- Убедитесь, что у вас есть свободное рабочее пространство размером 1 м × 1 м на устойчивой поверхности.
- Подготовьте ноутбук с Ubuntu 22.04 (работает виртуальная машина, предпочтительнее родная версия)
- Держите руку в рабочем состоянии выключенный во время физического осмотра ниже
В коробке
Контрольный список проверок
- Все 8 шарниров вращаются свободно (без скрежетания и сопротивления)
- Прокладка кабеля вдоль корпуса руки не повреждена.
- Разъем питания не поврежден
- Аварийная остановка доступна и функциональна
- Никогда не проникайте в рабочее пространство, когда рука находится под напряжением.
- Всегда выключайте питание перед регулировкой кабелей или изменением оборудования.
- Не допускайте детей и домашних животных во время работы
- Перед первым запуском закрепите основание на устойчивой поверхности.
Программная среда и конфигурация CAN
⏱ ~60 мин.Системные требования
- Ubuntu 22.04 LTS (рекомендуется) или 20.04.
- Питон 3.10+
- ROS2 Скромный
- Адаптер USB-CAN (CAN-совместимый или совместимый — должен поддерживать CAN FD для полной скорости передачи данных 5 Мбит/с)
Шаг 2a — Конфигурация идентификатора двигателя
Перед любой настройкой программного обеспечения каждому двигателю Damiao необходимо присвоить CAN ID. Это однократное действие, выполняемое в Windows с помощью отладчика Damiao USB CAN.
Используйте приведенную ниже таблицу в качестве канонического идентификатора для каждого соединения (J1–J8):
| Соединение | Идентификатор передатчика | Идентификатор получателя |
|---|---|---|
| J1 | 0x01 | 0x11 |
| J2 | 0x02 | 0x12 |
| J3 | 0x03 | 0x13 |
| J4 | 0x04 | 0x14 |
| J5 | 0x05 | 0x15 |
| J6 | 0x06 | 0x16 |
| J7 | 0x07 | 0x17 |
| J8 | 0x08 | 0x18 |
Шаг 2b — Установите пакеты OpenArm
На вашем компьютере с Ubuntu установите все необходимые пакеты из официального PPA OpenArm:
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:openarm/main
sudo apt update
sudo apt install -y \
can-utils \
iproute2 \
libeigen3-dev \
libopenarm-can-dev \
liborocos-kdl-dev \
liburdfdom-dev \
liburdfdom-headers-dev \
libyaml-cpp-dev \
openarm-can-utils
Шаг 2c — Настройка интерфейса CAN (CAN FD)
Двигатели OpenArm поддерживают как CAN 2.0, так и CAN FD. Рекомендуется CAN FD — он обрабатывает фазу данных со скоростью 5 Мбит/с и поддерживает полезную нагрузку до 64 байт, необходимую для полной пропускной способности двигателя Damiao.
| Режим | Номинальная скорость | Скорость передачи данных | Полезная нагрузка |
|---|---|---|---|
| МОЖЕТ 2.0 | 1 Мбит/с | — | 8 байт |
| CAN ФД | 1 Мбит/с | 5 Мбит/с | до 64 байт |
Рекомендуется — используйте помощник OpenArm:
# CAN FD, 1M nominal / 5M data (recommended for single arm)
openarm-can-configure-socketcan can0 -fd -b 1000000 -d 5000000
# CAN 2.0 fallback (1M baud, no FD)
openarm-can-configure-socketcan can0
# 4-arm bimanual setup (can0–can3)
openarm-can-configure-socketcan-4-arms -fd
# Verify the interface is UP
ip link show can0
Ручные команды ip link (если не использовать помощник):
# CAN 2.0
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000
sudo ip link set can0 up
# CAN FD — 1M nominal / 5M data
sudo ip link set can0 down
sudo ip link set can0 type can bitrate 1000000 dbitrate 5000000 fd on
sudo ip link set can0 up
can0. Бимануальная установка использует can0 (правый лидер) + can1 (левый лидер) + can2 (правый последователь) + can3 (левый последователь).
Шаг 2d — Команды управления двигателем и отладка
Используйте эти cansend команды для низкоуровневой отладки. Прежде чем отправлять какие-либо команды, сначала проверьте шину:
# Monitor all CAN frames
candump -x can0
# Change motor baudrate (replace 1 with target motor CAN ID)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0
# Persist across power cycles (max ~10,000 flash writes per motor — use sparingly)
openarm-can-change-baudrate --baudrate 5000000 --canid 1 --socketcan can0 --flash
CAN 2.0 управление двигателем - заменять 001 с идентификатором передатчика целевого соединения из таблицы выше:
# Clear motor error
cansend can0 001#FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001#FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001#FFFFFFFFFFFFFFFD
CAN FD управление двигателем — обратите внимание на доп. #1 после ## (флаг BRS):
# Clear motor error
cansend can0 001##1FFFFFFFFFFFFFFFB
# Enable motor
cansend can0 001##1FFFFFFFFFFFFFFFC
# Disable motor
cansend can0 001##1FFFFFFFFFFFFFFFD
--flash Флаг сохраняет изменения скорости передачи данных — каждый двигатель поддерживает максимум ~ 10 000 циклов записи флэш-памяти.
Состояние светодиода двигателя
Каждый двигатель Damiao имеет встроенный светодиод, показывающий текущее состояние. Используйте это для быстрой проверки работоспособности после включения:
| Светодиодный узор | Значение |
|---|---|
| Зеленый (постоянный) | Двигатель включен и готов |
| Красный (постоянный) | Двигатель отключен |
| Красный (мигающий) | Состояние ошибки двигателя — отправьте команду «Очистить ошибку» перед повторным включением. |
Шаг 2e — Установите пакеты ROS2
sudo apt install ros-humble-ros2-control ros-humble-ros2-controllers
git clone https://github.com/enactic/openarm_ros2
cd openarm_ros2 && colcon build
Установить Python SDK
pip install roboticscenter
python -c "import roboticscenter; print('SDK ready')"
Первое движение
⏱ ~30 мин.Начните с поддельного оборудования (безопасно — никакого физического перемещения)
Всегда проверяйте в моделировании, прежде чем перемещать реальную руку. Запустите файл запуска с помощью use_fake_hardware:=true — CAN-соединение не требуется:
ros2 launch openarm_ros2 openarm.launch.py use_fake_hardware:=true
ros2 run openarm_ros2 test_trajectory
Откройте RViz, чтобы убедиться, что смоделированная рука правильно движется по тестовой траектории. Все 8 суставов должны анимироваться плавно.
Переключитесь на реальное оборудование
Как только симуляция будет выглядеть корректно, подключите CAN-адаптер и включите манипулятор:
ros2 launch openarm_ros2 openarm.launch.py
Отправить первую команду движения (исходное положение)
ros2 action send_goal /joint_trajectory_controller/follow_joint_trajectory \
control_msgs/action/FollowJointTrajectory "{...}"
Калибровка и возврат в исходное положение
⏱ ~45 мин.Совместные нулевые положения должны соответствовать физической реальности для точного управления. Неправильно откалиброванные соединения приводят к сбоям в политике на последующих этапах — не пропускайте этот шаг.
Процедура возврата в исходное положение
- Включите питание, когда рука находится в заведомо безопасном положении (примерно выдвинута, вдали от препятствий).
- Запустите сценарий возвращения:
ros2 run openarm_ros2 homing - Скрипт предложит вам вручную довести каждый сустав до упора — двигайтесь медленно.
- Подтвердите, что нулевое положение сохранено для каждого соединения при появлении соответствующего запроса.
Проверка калибровки
ros2 topic echo /joint_states # check all positions read near zero
Телеоперация
⏱ ~60 мин.Выберите свое операторское устройство
Рука Уцзи
Лучше всего подходит для ловкости и выполнения тонких манипуляций.
VR-контроллер
Meta Quest/Steam VR — хорош для пространственных задач
Клавиатура/геймпад
Для базового тестирования и грубого позиционирования
Подключить операторское устройство
ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand
Проверьте задержку
Целевая сквозная задержка составляет менее 50 мс. Запустите тест задержки и проверьте:
ros2 run openarm_ros2 latency_check
Сбор данных
⏱ ПродолжаетсяВыберите формат данных
- ЛеРобот (рекомендуется) — специально создан для имитационного обучения и модельного обучения.
- RLDS — совместим с Open-X-Embodiment и наборами данных кросс-роботов
Начать запись
ros2 launch openarm_ros2 record.launch.py \
output_format:=lerobot \
task_name:=pick_and_place \
episode_id:=0
Каждый эпизод сохраняется как отдельный файл с состояниями суставов, кадрами камеры и метками действий. Запустите несколько выпусков, а затем используйте платформу SVRC для просмотра и фильтрации.
Контрольный список качества эпизода
- Видео с камер синхронизированы (временные метки в пределах 5 мс)
- Состояния суставов зарегистрированы при частоте ≥ 50 Гц.
- Ярлыки действий соответствуют продемонстрированному поведению.
- Неудачные эпизоды помечаются для исключения, а не удаляются.
is_failure:=true — платформа может использовать их для контрастного обучения или фильтрации.
Обучение и развертывание моделей искусственного интеллекта
⏱ ПродолжаетсяРекомендуемые модели для OpenArm
- ACT (Чанкирующий трансформатор действия) — лучше всего подходит для выбора и размещения. Прогнозирует фрагменты действий на основе наблюдений камеры.
- Политика распространения — лучше всего подходит для задач, требующих большого количества контактов. Генерирует плавные траектории посредством шумоподавления.
- OpenVLA — лучше всего подходит для задач, связанных с языком. Сочетает понимание языка видения с действиями робота.
Точная настройка ACT для ваших данных
pip install lerobot
python train.py --config act_openarm --data-path ./recordings/
Обучение на потребительском графическом процессоре (RTX 3090 или лучше) обычно занимает 2–4 часа для 50 эпизодов. Используйте --resume флаг, чтобы продолжить с контрольной точки.
Развертывание на Edge
ros2 launch openarm_ros2 inference.launch.py \
model_path:=./checkpoints/best.pt
Узел вывода считывает кадры камеры, запускает модель и публикует совместные команды с контрольной частотой. Задержка вывода цели составляет менее 20 мс для управления в реальном времени.
Глубокие погружения:
Руководство по точной настройке модели Robot Foundation Модели OpenArm — все совместимые политикиВы завершили полный путь установки!
Ваш OpenArm откалиброван, имеет телеуправление, сбор данных и работу искусственного интеллекта. Поделитесь с сообществом тем, что вы создали.