3天搭好你的第一个双臂机器人:多臂机器人协同控制实战指南
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
LeRobot 是 HuggingFace 推出的端到端机器人学习框架,能把你手上一对低成本 SO-100/SO-101 机械臂变成可遥操作、可训练、可部署的双臂系统。本文讲清多臂机器人协同控制的完整流程:从接通两条臂,到采数据、训策略、跑通自主协同,每一步都有明确产出物。
多臂机器人协同控制的核心:视觉、语言、动作三模态在一个模型里闭环
先说痛点:两条臂同时伸向一个物体,谁先让?
🦾 你左手抓起杯子,右手要去拿盖子,半空两只夹爪撞在一起。更糟的情况是:你明明左右同速移动,一条臂抬起来另一条臂却掉下去——左右标定没对齐,遥操作采出来的数据全是噪声。多臂机器人协同控制要解决的就是两件事:让两条臂跑在同一个时钟、同一把尺子上。
原理拆解:双臂协同其实是一叠三层拼图
Leader-Follower:主从式的双臂骨架
最简单的多机器人协同架构是主从式:人操作"leader 臂","follower 臂"实时镜像跟随。在 LeRobot 里,两条 follower 臂被打包成一个bi_so_follower类型的双臂机器人,底层由 src/lerobot/utils/bimanual.py 的BimanualMixin实现:连接、标定、断开全部按"先左后右"两步走,双臂必须都在线才算连接成功。类比:leader 是老师傅做示范,follower 是徒弟复刻,两人得先把"零位"对齐,复刻才跟得上。
数据层:把左右两条臂压进同一条时间轴
策略模型吃的是"双臂数据",关键在时间对齐:左臂和右臂的关节值、夹爪状态、摄像头画面,必须落在同一帧里。lerobot-record采集时,左右两路的观察同时写入同一个数据集。类比:双声道录音,左轨右轨各装一臂,回放时两轨同速,协作动作才能重现。
策略层:一个"看得见"的 VLA 模型
数据之上是视觉-语言-动作(VLA)策略:融合图像、文本指令和关节状态,输出两条臂各自的动作序列。类比:老练的车间班组长盯着监控和工单,决定哪只手先动、动多大。LeRobot 内置了 ACT、Diffusion、π0、GR00T 等一批开箱即用的策略,清单在 src/lerobot/policies/。
仿真先行:多臂避障先排练再上真机
两条臂共享工作空间,碰撞是第一要防的事。LeRobot 的环境市场提供双臂仿真环境(bi_so101_fold_cloth,见 docs/source/envhub_leisaac.mdx),可以在零磨损下排练双臂协作与多臂避障。类比:先模拟器里飞几小时,再碰真飞机。
部署路线:双臂协同训练的三天里程碑
硬件清单:一对 SO-101(一主一从)+ 两个 USB 相机。先克隆仓库:git clone https://gitcode.com/GitHub_Trending/le/lerobot
| 里程碑 | 做什么 | 可验收产出 |
|---|---|---|
| 第1天 | 找端口、配电机、双轨标定、主从镜像 | 两条臂同速跟手、无延迟 |
| 第2天 | 录制双臂示教数据 | 一个包含左右双臂通道的数据集 |
| 第3天 | 训练策略并评估回放 | 不接 leader 臂也能自主完成任务 |
第1天:把两条臂接上、标好、跟手。用lerobot-find-port分别识别左从、右从、左主、右主四个串口号,再用lerobot-calibrate逐臂标定零位,最后用一条命令验证镜像:
lerobot-teleoperate \ --robot.type=bi_so_follower \ --robot.left_arm_config.port=/dev/tty.usbmodemXXXX_left \ --robot.right_arm_config.port=/dev/tty.usbmodemXXXX_right \ --teleop.type=bi_so_leader \ --teleop.left_arm_config.port=/dev/tty.usbmodemXXXX_ll \ --teleop.right_arm_config.port=/dev/tty.usbmodemXXXX_lr验收标准:双手动 leader,两条 follower 平滑跟上,左右不串。
第2天:采双臂协同训练数据。在上面命令上追加--dataset.repo_id=你的用户名/仓库名开始记录,每个任务采 50 条以上、抓取点位尽量分散。采集规范可参考 docs/source/hil_data_collection.mdx。
第3天:训练与自主验证。数据集交给lerobot-train,选 ACT 或 Diffusion 这类轻量策略;训完用lerobot-eval看成功率,用lerobot-replay回看数据。两条臂脱开 leader 自主完成任务,双臂闭环就通了 ✅
双臂跟随操作演示:左臂抓、右臂放,两条时间轴完全对齐
场景案例:交接、协作折叠与双人抬举
物品交接。输入:指令"把方块从左臂递给右臂" + 相机画面;协同逻辑:左臂移到交接点悬停,右臂靠拢张开夹爪,右臂闭合后左臂才松手;产出:物体平稳易主、零掉落。仓库示例脚本正是这个任务(src/lerobot/scripts/lerobot_record.py 的 docstring 里就有 bimanual handover 的完整命令)。
协作折叠。输入:桌面一块布 + "对折"指令;协同逻辑:左臂捏起一角、右臂捏住对角,双臂沿同一中线同步下压;产出:布料完成一次对折。可用bi_so101_fold_cloth环境在仿真里先排练。
两条臂在同一工作空间内分工操作,是典型的多臂协同控制形态
共同持物。输入:一个长条形物体;协同逻辑:双臂分担负载,一条管平移、一条管姿态修正;产出:运动中物体不脱手。这个场景对双臂标定一致性的要求最高,第1天没标好,这里必翻车。
避坑清单:双臂搭建最常踩的7个坑
- 现象:双臂同动时一臂抬一臂掉,或左右反了 → 对策:两条臂分别跑
lerobot-calibrate,再用lerobot-replay回放校验 - 现象:重插 USB 后串口漂移、左右互串 → 对策:用 udev 规则把设备名固定下来,别信 tty 编号
- 现象:启动直接报摄像头名冲突 → 对策:顶层相机与每臂相机的名字不能重,起不一样的 key
- 现象:只有一条臂在线就开录 → 对策:双臂机器人要求左右都连接成功才工作,先检查右臂端口参数
- 现象:leader 臂跟手发飘、难复刻 → 对策:精细协作优先用带减速箱的 SO-101 当 leader
- 现象:双臂协同中频繁对撞 → 对策:先在仿真环境排练多臂避障,再部署到真机
- 现象:训练后策略左右通道"串味" → 对策:开训前核对数据集 feature 名,确认左右前缀各就各位
展望:多机器人协同架构的两个走向
一是跨本体复用:同一份双臂数据,配合不同策略配置,可以迁移到仓库里其他双臂平台(OpenArm、ReBot b601 都有双臂版本)。二是仿真先行:多机器人协同架构正快速向仿真环境迁移,双臂协同与多臂避障先在虚拟空间大规模排练,成熟后再上真机。
三句话总结:多臂机器人协同控制 = 主从骨架 + 统一时间轴的数据 + VLA 策略;先验收"双臂连接、双臂标定、双臂数据"这条链,再谈训练;碰撞问题用仿真兜底。下一步:手上有成对 SO-100/101 的话,按第1天路线走一遍,今晚就能让两条臂镜像跟手。
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考