OpenArm 101 设置指南
遵循此路径从拆箱到您的第一个人工智能训练的动作。 总共需要大约 4-5 小时。
拆箱和安全检查
⏱ ~30 分钟开始之前
- 确保在稳定的表面上有一个清晰的 1m × 1m 工作空间
- 准备一台安装了 Ubuntu 22.04 的笔记本电脑(VM 可以工作,本机首选)
- 保持手臂通电 离开 在下面的物理检查期间
在盒子里
检查清单
- 所有 8 个关节均可自由旋转(无磨损或阻力)
- 沿着臂体的电缆布线完好无损
- 电源接头未损坏
- 紧急停止装置易于使用且功能齐全
- 手臂通电时切勿将手伸入工作空间
- 在调整电缆或更改硬件之前务必关闭电源
- 操作期间让儿童和宠物远离
- 首次运行前将底座固定在稳定的表面上
软件环境和CAN配置
⏱ ~60 分钟系统要求
- Ubuntu 22.04 LTS(推荐)或 20.04
- Python 3.10+
- ROS2谦虚
- USB-CAN 适配器(CANable 或兼容 — 必须支持 CAN FD 以获得完整的 5 Mbit/s 数据速率)
步骤 2a — 电机 ID 配置
在进行任何软件设置之前,必须为每个大庙电机分配其 CAN ID。 这是使用 Damiao USB CAN 调试器在 Windows 上执行的一次性步骤。
使用下表作为每个关节 (J1–J8) 的规范 ID 分配:
| 联合的 | 发射机ID | 接收者ID |
|---|---|---|
| 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 计算机上,从官方 OpenArm PPA 安装所有必需的软件包:
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。 推荐使用CANFD — 它以 5 Mbit/s 的速度运行数据阶段,并支持高达 64 字节的有效负载,这是大庙电机完整带宽所需的。
| 模式 | 标称波特率 | 数据波特率 | 有效载荷 |
|---|---|---|---|
| CAN 2.0 | 1兆比特/秒 | — | 8字节 |
| CANFD | 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 使用上表中目标关节的发射器 ID:
# 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 个闪存写入周期。
电机 LED 状态
每个大庙电机都有一个板载 LED 指示当前状态。 开机后将此用作快速运行状况检查:
| LED图案 | 意义 |
|---|---|
| 绿色(稳定) | 电机已启用并准备就绪 |
| 红色(稳定) | 电机禁用 |
| 红色(闪烁) | 电机错误状态 — 在重新启用之前发送清除错误命令 |
步骤 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 分钟选择您的运营商设备
Wuji Hand
最适合灵巧和精细操作任务
虚拟现实控制器
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 Hz 记录的关节状态
- 动作标签与展示的行为相匹配
- 失败的剧集被标记为排除,而不是删除
is_failure:=true — 平台可以使用它们进行对比学习或过滤。
AI模型训练与部署
⏱ 进行中OpenArm 推荐型号
- ACT(动作分块变压器) — 最适合拾放。 根据摄像机观察预测动作块。
- 扩散政策 — 最适合接触丰富的任务。 通过去噪生成平滑轨迹。
- 开放VLA - 最适合以语言为条件的任务。 将视觉语言理解与机器人动作相结合。
根据您的数据微调 ACT
pip install lerobot
python train.py --config act_openarm --data-path ./recordings/
在消费级 GPU(RTX 3090 或更高)上进行 50 个训练集的训练通常需要 2-4 小时。 使用 --resume 标记从检查点继续。
部署在边缘
ros2 launch openarm_ros2 inference.launch.py \
model_path:=./checkpoints/best.pt
推理节点读取相机帧、运行模型并以控制频率发布联合命令。 目标推理延迟低于 20 毫秒,可实现实时控制。