Руководство по установке OpenArm 101

Пройдите этот путь от распаковки до первого движения, обученного ИИ. Всего занимает около 4–5 часов.

Шаг 1 из 7
1

Распаковка и проверка безопасности

⏱ ~30 мин.
⚠️
Сначала прочтите правила техники безопасности Прочтите полные инструкции по безопасности перед включением. Никогда не проникайте в рабочее пространство при включенном питании. Всегда выключайте питание перед регулировкой кабелей.

Прежде чем начать

  • Убедитесь, что у вас есть свободное рабочее пространство размером 1 м × 1 м на устойчивой поверхности.
  • Подготовьте ноутбук с Ubuntu 22.04 (работает виртуальная машина, предпочтительнее родная версия)
  • Держите руку в рабочем состоянии выключенный во время физического осмотра ниже

В коробке

Рукоятка OpenArm 101
Источник питания (24 В постоянного тока)
USB-адаптер CAN
Монтажное оборудование
Карта быстрого старта

Контрольный список проверок

  • Все 8 шарниров вращаются свободно (без скрежетания и сопротивления)
  • Прокладка кабеля вдоль корпуса руки не повреждена.
  • Разъем питания не поврежден
  • Аварийная остановка доступна и функциональна
⚠️
Правила безопасности
  • Никогда не проникайте в рабочее пространство, когда рука находится под напряжением.
  • Всегда выключайте питание перед регулировкой кабелей или изменением оборудования.
  • Не допускайте детей и домашних животных во время работы
  • Перед первым запуском закрепите основание на устойчивой поверхности.
2

Программная среда и конфигурация 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.

Инструмент отладки Damiao (Windows): Скачать Debugging_Tools_v.1.6.8.8.exe и используйте его для установки идентификатора передатчика и приемника каждого двигателя. Всегда проверяйте по одному двигателю перед подключением цепи.

Используйте приведенную ниже таблицу в качестве канонического идентификатора для каждого соединения (J1–J8):

Соединение Идентификатор передатчика Идентификатор получателя
J10x010x11
J20x020x12
J30x030x13
J40x040x14
J50x050x15
J60x060x16
J70x070x17
J80x080x18

Шаг 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.01 Мбит/с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
Один CAN-порт на руку. В установке с одной рукой используется 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
⚠️
Тестируйте один двигатель за раз При первом вводе в эксплуатацию подключите и проверьте каждый двигатель по отдельности перед последовательным подключением к шине CAN. Это изолирует конфликты идентификаторов и неисправности проводки. --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')"
3

Первое движение

⏱ ~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 "{...}"
⚠️
Держите руку на аварийной остановке во время первой настоящей поездки. Рука переместится в исходное положение. Будьте готовы немедленно остановиться, если движение кажется неправильным.
4

Калибровка и возврат в исходное положение

⏱ ~45 мин.

Совместные нулевые положения должны соответствовать физической реальности для точного управления. Неправильно откалиброванные соединения приводят к сбоям в политике на последующих этапах — не пропускайте этот шаг.

Процедура возврата в исходное положение

  1. Включите питание, когда рука находится в заведомо безопасном положении (примерно выдвинута, вдали от препятствий).
  2. Запустите сценарий возвращения:
    ros2 run openarm_ros2 homing
  3. Скрипт предложит вам вручную довести каждый сустав до упора — двигайтесь медленно.
  4. Подтвердите, что нулевое положение сохранено для каждого соединения при появлении соответствующего запроса.

Проверка калибровки

ros2 topic echo /joint_states  # check all positions read near zero
Ожидаемый результат: Показания всех положений суставов должны находиться в пределах ±0,05 рад от нуля, когда рука находится в исходном положении. Большие отклонения указывают на пропущенное соединение или проблему с энкодером — повторите процедуру возврата в исходное положение для этого соединения.
5

Телеоперация

⏱ ~60 мин.

Выберите свое операторское устройство

VR-контроллер

Meta Quest/Steam VR — хорош для пространственных задач

Клавиатура/геймпад

Для базового тестирования и грубого позиционирования

Подключить операторское устройство

ros2 launch openarm_ros2 teleop.launch.py operator:=wuji_hand

Проверьте задержку

Целевая сквозная задержка составляет менее 50 мс. Запустите тест задержки и проверьте:

ros2 run openarm_ros2 latency_check
Высокая задержка? Адаптеры USB-CAN различаются по производительности. Если задержка превышает 80 мс, попробуйте другой порт USB (предпочитайте USB 3.0), уменьшите фоновые процессы или переключитесь на собственный интерфейс CAN.
6

Сбор данных

⏱ Продолжается

Выберите формат данных

  • ЛеРобот (рекомендуется) — специально создан для имитационного обучения и модельного обучения.
  • 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 — платформа может использовать их для контрастного обучения или фильтрации.
7

Обучение и развертывание моделей искусственного интеллекта

⏱ Продолжается

Рекомендуемые модели для 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 мс для управления в реальном времени.

Вы завершили полный путь установки!

Ваш OpenArm откалиброван, имеет телеуправление, сбор данных и работу искусственного интеллекта. Поделитесь с сообществом тем, что вы создали.

← Вернуться назад на OpenArm Hub Посетите форум Купить еще один OpenArm →

Нужна помощь?

Форум OpenArm — это самое быстрое место, где можно получить ответы от сообщества и команды SVRC.