OpenArm 101 设置指南

遵循此路径从拆箱到您的第一个人工智能训练的动作。 总共需要大约 4-5 小时。

第 1 步(共 7 步)
1

拆箱和安全检查

⏱ ~30 分钟
⚠️
首先阅读安全指南 阅读 完整的安全指南 上电前。 通电时切勿将手伸入工作空间。 调整电缆之前务必关闭电源。

开始之前

  • 确保在稳定的表面上有一个清晰的 1m × 1m 工作空间
  • 准备一台安装了 Ubuntu 22.04 的笔记本电脑(VM 可以工作,本机首选)
  • 保持手臂通电 离开 在下面的物理检查期间

在盒子里

OpenArm 101 手臂单元
电源(24V直流)
CAN USB 适配器
安装硬件
快速启动卡

检查清单

  • 所有 8 个关节均可自由旋转(无磨损或阻力)
  • 沿着臂体的电缆布线完好无损
  • 电源接头未损坏
  • 紧急停止装置易于使用且功能齐全
⚠️
安全规则
  • 手臂通电时切勿将手伸入工作空间
  • 在调整电缆或更改硬件之前务必关闭电源
  • 操作期间让儿童和宠物远离
  • 首次运行前将底座固定在稳定的表面上
2

软件环境和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 上执行的一次性步骤。

大庙调试工具(Windows): 下载 调试_工具_v.1.6.8.8.exe 并用它来设置每个电机的发射器和接收器 ID。 在链接之前,请务必一次测试一台电机。

使用下表作为每个关节 (J1–J8) 的规范 ID 分配:

联合的 发射机ID 接收者ID
J10x010x11
J20x020x12
J30x030x13
J40x040x14
J50x050x15
J60x060x16
J70x070x17
J80x080x18

步骤 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.01兆比特/秒8字节
CANFD1兆比特/秒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 使用上表中目标关节的发射器 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
⚠️
一次测试一台电机 首次调试时,在 CAN 总线上进行菊花链之前,单独连接并测试每个电机。 这可以隔离 ID 冲突和接线故障。 这 --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')"
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 rad 范围内。 较大的偏差表明缺少关节或编码器问题 - 对该关节重复归位过程。
5

远程操作

⏱ ~60 分钟

选择您的运营商设备

虚拟现实控制器

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 Hz 记录的关节状态
  • 动作标签与展示的行为相匹配
  • 失败的剧集被标记为排除,而不是删除
保留失败的情节。 失败的演示包含对学习稳健性有用的信号。 将它们标记为 is_failure:=true — 平台可以使用它们进行对比学习或过滤。
7

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 毫秒,可实现实时控制。

您已完成完整的设置路径!

您的 OpenArm 经过校准、远程操作、数据收集并运行 AI。 与社区分享您构建的内容。

← 返回 OpenArm 中心 访问论坛 购买另一个 OpenArm →

需要帮助吗?

OpenArm 论坛是从社区和 SVRC 团队获取答案的最快场所。