LeRobot documentation
OpenArm
OpenArm
OpenArm 是一款专为物理 AI 研究和部署而设计的开源 7 自由度人形机械臂。
要获取您的 OpenArm(无论是组装好的还是 DIY 的)并加入全球社区,请访问 openarm.dev 浏览全球经过验证和认证的制造商。
有何独特之处?
人类尺度设计:OpenArm 采用类人比例设计,针对身高约 160-165 厘米的人体进行缩放。这为安全、响应灵敏的操作提供了实际可达范围与可控惯性之间的最佳平衡。
安全优先架构:OpenArm 采用 QDD 可反驱电机和高柔顺性设计,在保持实际负载能力(峰值 6.0kg / 额定 4.1kg)以应对真实世界任务的同时,优先考虑安全的人机交互。
为持久耐用而设计:关键结构部件采用铝材和不锈钢制造,确保在重复数据收集和持续研究使用中具备稳健的性能。
完全可获取且可构建:从 CNC 零件和 3D 打印外壳到电气布线,每个组件都设计为个人研究人员和实验室均可购买和构建,并提供完整的制造数据。
实用且经济实惠:一套完整的双臂系统仅需 6,500 美元,OpenArm 以远低于传统人形机器人的成本,提供了研究级的性能。
平台要求
**Linux Only**: OpenArm currently only works on Linux. The CAN bus USB adapter does not have macOS drivers and has not been tested on Windows.
安全指南
在操作 OpenArm 之前,请阅读官方安全指南。要点如下:
- 安全安装:使用螺丝或夹具将机械臂固定在一个平坦且稳定的表面上
- 安全距离:操作时,将身体部位和物体保持在运动范围之外
- 防护装备:始终佩戴护目镜;根据需要额外使用个人防护装备
- 有效载荷限制:请勿超过规定的有效载荷限制(每只手臂峰值 6.0kg / 标称 4.1kg)
- 紧急停止:了解紧急停止装置的位置和操作方法
- 定期检查:检查螺丝是否松动、机械限位是否损坏、是否有异常噪音以及线路是否受损
硬件设置
请遵循官方的 OpenArm 硬件文档,以获取以下信息:
- 物料清单与采购
- 3D 打印说明
- 机械装配
- 电气布线
硬件仓库可在 github.com/enactic/openarm 上获取。
CAN 总线设置
OpenArm uses CAN bus communication with Damiao motors. Once you have the CAN bus USB adapter plugged into your Linux PC, follow the Damiao Motors and CAN Bus guide to configure the interface.
快速设置:
# Setup CAN interfaces
lerobot-setup-can --mode=setup --interfaces=can0,can1
# Test motor communication
lerobot-setup-can --mode=test --interfaces=can0,can1安装 LeRobot 🤗
请遵循我们的安装指南,然后安装 Damiao 电机支持:
pip install -e ".[damiao]"用法
从动臂(机器人)
lerobot-calibrate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_followerfrom lerobot.robots.openarm_follower import OpenArmFollower, OpenArmFollowerConfig
config = OpenArmFollowerConfig(
port="can0",
side="right", # or "left" for left arm
id="my_openarm_follower",
)
follower = OpenArmFollower(config)
follower.connect()
# Read current state
obs = follower.get_observation()
print(obs)
# Send action (position in degrees)
action = {
"joint_1.pos": 0.0,
"joint_2.pos": 0.0,
"joint_3.pos": 0.0,
"joint_4.pos": 45.0,
"joint_5.pos": 0.0,
"joint_6.pos": 0.0,
"joint_7.pos": 0.0,
"gripper.pos": 0.0,
}
follower.send_action(action)
follower.disconnect()主臂(遥操作器)
主臂用于遥操作——通过手动移动它来控制从臂。
lerobot-calibrate \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leaderfrom lerobot.teleoperators.openarm_leader import OpenArmLeader, OpenArmLeaderConfig
config = OpenArmLeaderConfig(
port="can1",
id="my_openarm_leader",
manual_control=True, # Disable torque for manual movement
)
leader = OpenArmLeader(config)
leader.connect()
# Read current position (as action to send to follower)
action = leader.get_action()
print(action)
leader.disconnect()远程操作
要通过主从控制遥操作 OpenArm:
lerobot-teleoperate \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leader使用与校准时相同的 --robot.id 和 --teleop.id,以便 LeRobot 找到校准文件。
双手遥操作
要通过两个主臂和两个从臂遥操作双臂 OpenArm 设置:
lerobot-teleoperate \
--robot.type=bi_openarm_follower \
--robot.left_arm_config.port=can0 \
--robot.left_arm_config.side=left \
--robot.right_arm_config.port=can1 \
--robot.right_arm_config.side=right \
--robot.id=my_bimanual_follower \
--teleop.type=bi_openarm_leader \
--teleop.left_arm_config.port=can2 \
--teleop.right_arm_config.port=can3 \
--teleop.id=my_bimanual_leader记录数据
要在遥操作期间记录数据集:
lerobot-record \
--robot.type=openarm_follower \
--robot.port=can0 \
--robot.side=right \
--robot.id=my_openarm_follower \
--teleop.type=openarm_leader \
--teleop.port=can1 \
--teleop.id=my_openarm_leader \
--dataset.repo_id=${HF_USER}/my_openarm_dataset \
--dataset.single_task="Describe your task here" \
--dataset.fps=30 \
--dataset.num_episodes=10lerobot-record 会将会话的日期和时间添加到数据集名称中,因此保存为 my_hf_username/my_openarm_dataset_YYYYMMDD_HHMMSS。有关相机、键盘控制以及工作流的其他部分,请参阅 录制指南。
配置选项
Follower 配置
| 参数 | 默认 | 描述 |
|---|---|---|
port | - | CAN 接口(例如,can0) |
side | None | Arm 侧:"left"、"right",或 None 表示自定义限制 |
use_can_fd | True | 启用 CAN FD 以实现更高的数据速率 |
can_bitrate | 1000000 | 标称比特率 (1 Mbps) |
can_data_bitrate | 5000000 | CAN FD 数据比特率 (5 Mbps) |
max_relative_target | None | 相对目标位置的安全限制 |
position_kp | 按关节 | 位置控制比例增益 |
position_kd | 按关节 | 位置控制微分增益 |
Leader 配置
| 参数 | 默认 | 描述 |
|---|---|---|
port | - | CAN 接口(例如,can1) |
manual_control | True | Disable torque for manual movement |
use_can_fd | True | 启用 CAN FD 以实现更高的数据速率 |
can_bitrate | 1000000 | 标称比特率 (1 Mbps) |
can_data_bitrate | 5000000 | CAN FD 数据比特率 (5 Mbps) |
电机配置
OpenArm 使用 Damiao 电机,其默认配置如下:
| 联合 | 电机类型 | 发送 ID | Recv ID |
|---|---|---|---|
| joint_1(肩部水平旋转) | DM8009 | 0x01 | 0x11 |
| joint_2(肩部抬升) | DM8009 | 0x02 | 0x12 |
| joint_3(肩部旋转) | DM4340 | 0x03 | 0x13 |
| joint_4(肘部屈曲) | DM4340 | 0x04 | 0x14 |
| joint_5(手腕滚动) | DM4310 | 0x05 | 0x15 |
| joint_6(腕部俯仰) | DM4310 | 0x06 | 0x16 |
| joint_7(手腕旋转) | DM4310 | 0x07 | 0x17 |
| 夹爪 | DM4310 | 0x08 | 0x18 |
故障排除
电机无响应
- 检查电源连接
- Verify CAN wiring (CAN-H, CAN-L, GND)
- 运行诊断:
lerobot-setup-can --mode=test --interfaces=can0 - 有关更多详细信息,请参阅 Damiao 故障排除指南
未找到 CAN 接口
确保 CAN 接口已配置:
ip link show can0