端口识别与机械臂校准
Port Detection & Calibration
识别机械臂端口,完成电机校准,确保运动精度
未开始
完成后会同步到学习路径和首页统计
两条 USB 都接上了,ls /dev/tty* 也能看到 ttyUSB0 和 ttyUSB1。但你还差两步才能开始采数据:
- 告诉 LeRobot 哪个端口是 Leader、哪个是 Follower —— 写进配置文件
- 校准 —— 让电脑知道每个电机的"真零点"
校准是这一章的重点,也是最容易被忽略、忽略了又必然出问题的一步。机械臂出厂时每个电机的零点都有装配公差:你说"去 30 度",它实际可能去了 31 度或 28 度。不校准的话,Follower 跟随会偏、录的数据会失真、训练出来的模型必崩。
这一步跳不过去,但好在脚本会一步步引导,3 分钟搞定。
校准是数据质量的第一道闸门:
- 没校准 → Leader 读 30 度但 Follower 实际 33 度 → 你以为录的是 A 动作,存进数据集的是 B → 模型学到的是错的
- 端口配错 → 脚本直接报
Missing required field(s) port或连不上 - 校准是"垃圾进垃圾出"里最前端的环节:这里偏一点,后面训练再用力也白搭
- 正确识别 Leader 和 Follower 端口
- 完成机械臂零点校准
- 验证校准结果的准确性
- 1校准确保电机角度与实际位置一致
- 2校准数据保存在配置文件中
- 3每次更换电机或重新组装后需要重新校准
校准前 vs 校准后
flowchart LR
subgraph Before ["未校准"]
B1["Leader 读 30度"] -.->|"偏差 3度"| B2["Follower 实际 33度"]
end
subgraph After ["校准后"]
A1["Leader 读 30度"] -->|"一致"| A2["Follower 实际 30度"]
end
style Before fill:#fef2f2,stroke:#dc2626
style After fill:#f0fdf4,stroke:#16a34a认出哪个端口是哪条臂
最稳的土办法:ls /dev/tty* 看一次 → 拔掉 Leader 的 USB → 再看一次,少掉的那个就是 Leader。
LeRobot 也自带探测工具 find_motors_bus_port.py,会逐个端口询问"你是几号电机"来告诉你对应关系,不用拔线。
查看串口(拔线前后各一次对比)
ls /dev/tty*第一次: ttyUSB0 ttyUSB1 第二次: ttyUSB0 ← 少了 ttyUSB1,它就是刚拔的 Leader
把端口写进命令参数
知道哪个 ttyUSB 是哪个角色后,把端口直接写进新版 LeRobot CLI 参数:Follower 用 --robot.port,Leader 用 --teleop.port。
例如 Follower 是 /dev/ttyACM0、Leader 是 /dev/ttyACM1。后面校准、遥操作、录数据都沿用这两个端口。
新版 CLI 端口参数
--robot.port=/dev/ttyACM0--teleop.port=/dev/ttyACM1重启后端口编号可能对调,届时先重新跑 ls /dev/tty*,再更新命令参数。
运行校准
跑校准脚本,它会一步步引导你把机械臂手动摆到指定姿态(如完全伸展、回零位),每摆一个按一次 Enter。整个过程 1-2 分钟,数据自动保存到 ~/.cache/.../calibration.json。
启动校准
lerobot-calibrate \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=so101_followerCalibrating leader_arms/main... [INFO] Move arm to fully-extended pose, press Enter... [INFO] Move arm to home pose, press Enter... [INFO] Saving calibration ... Done!
手动摆姿态时轻柔扳动。SO101 电机不带阻尼,硬扳可能损坏齿轮。
运行校准脚本
lerobot-calibrate --robot.type=so101_follower --robot.port=/dev/ttyACM0 --robot.id=so101_follower查看校准结果
find ~/.cache/huggingface/lerobot/calibration -maxdepth 3 -type f校准做完了,但 Follower 跟随还是偏。
根本原因
摆姿态时不够准 —— "完全伸展"其实只伸了 80%,导致参考点偏。
正确认识
重跑校准,严格按提示/图示摆到位,可拿尺子比对。校准数据会覆盖旧的,重做安全。
`Missing required field(s) port`
根本原因
yaml 里没写 port,或缩进错了导致没被解析。
正确认识
在 leader_arms / follower_arms 下补上正确缩进的 port: 字段。YAML 对缩进敏感,用空格不要用 Tab。
「校准一次就一劳永逸了吧?」
根本原因
以为校准是终身有效的。
正确认识
校准数据存硬盘,关机不丢;但换电机、拆装、运输颠簸后零点会变,需重新校准。平时不用反复做。
- 端口正确识别
- 校准数据保存成功
- 关节运动范围正确
判断要不要重新校准
下面哪些情况需要重新校准?
A. 关机一晚,第二天开机
B. 机械臂从桌上摔了一下
C. 换了一个电机
D. 只是重新插了下 USB
Missing required field(s) port
- 原因:
- 配置文件中未指定端口
- 解决:
- 在命令中补上 --robot.port=/dev/ttyACM0,并确认端口路径来自 ls /dev/tty* 的实际结果
lerobot-calibrate --help- LeRobot 机器人控制脚本文档
新版 LeRobot CLI 的 calibrate / teleoperate / record 命令说明。
两步走:认端口(拔线法或 find_motors)→ 写进新版 CLI 的 --robot.port / --teleop.port;校准(跑 lerobot-calibrate,手动摆姿态记零点)。
校准对齐了 Leader 读数与 Follower 实际姿态,是数据质量的第一道闸门,硬件没变动就不用重做。
下一章是最爽的部分:真的拿起机械臂演示动作,把数据录下来。
本章讨论区
登录后即可参与讨论 —— 点击右上角的 登录 按钮
加载中…