XLeRobot 视觉伺服机器人怎么上手:$660 双臂移动机器人用 YOLO 抓取指南
【免费下载链接】XLeRobotXLeRobot: Practical Dual-Arm Mobile Home Robot for $660项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot
先说结果
用$660(基础版,不含 3D 打印与运费)组装出一台带双 SO101 机械臂的移动机器人,让它用摄像头里的 YOLO 检测实时追着物体动——控制循环50Hz,从检测框到关节指令全链路解析式计算,不用训练任何模型,装好就能跑。这就是 XLeRobot 的核心玩法:一个基于 LeRobot、SO-101、LeKiwi、Bambot 等成熟开源件拼出来的低成本具身智能平台,官方宣称总装配时间不到 4 小时。
1. XLeRobot 是什么:一句话定位
它是一台可自主干家务的双臂移动机器人:万向轮底盘(也有差速双轮版)+ 头部相机 + 两条 6 自由度 SO101 手臂,全部软件开源(Apache 2.0),目标就是让普通人花得起、装得动、玩得明白。
硬参数速览(数据均出自仓库 README 与代码):
| 项目 | 数值 | 说明 |
|---|---|---|
| 基础成本 | 约 $660 / ¥3999 | 用你自己笔记本 + 单目头部相机 |
| 双目 RGB 升级 | +$30 | 立体视觉 |
| 换 RealSense RGBD | +$220 | 深度相机,可选 |
| 加树莓派(独立主机) | +$79 | 不用笔记本也能跑 |
| 总装配时间 | <4 小时 | 官方口径 |
| 手臂 | 2× SO-101,6 自由度 | 来自 TheRobotStudio 开源臂 |
| 控制链路 | 50Hz P 控制 | 视觉伺服闭环 |
没有真机也能先在仿真里过一遍:仓库自带 ManiSkill / MuJoCo / Isaac Sim / Gazebo 资产(见 simulation/),社区还把它做进了 Gazebo Sim:
2. 原理拆解:一个像素偏移量是怎么变成关节角的
先给结论:XLeRobot 的视觉抓取不需要深度信息。它用的是最朴素的"像素误差伺服"——目标框中心偏离画面中心多少,机械臂就朝对应方向动多少。
整条链路只有 4 站(对应 software/examples/3_so100_yolo_ee_follow.py 的实现):
- 检测:YOLO11 对摄像头每帧跑一次前向,输出目标框(默认追 COCO 类目标,脚本里默认是
mouse,可改成bottle等)。 - 像素误差:
dx = 框中心 x − 画面宽/2,dy同理。误差就是"手臂偏了多远"的代理量。 - 映射到动作:横向误差
dx直接转成肩关节偏航(shoulder_pan)增量;纵向误差dy转成末端目标位置y的增量。映射系数是手调增益,代码里叫K_pan和K_y。 - 解析逆运动学:
y目标变化后,用余弦定理求二连杆的肘/肩关节角——上臂 0.1159m、下臂 0.1350m,都是写死的几何常量。如果目标点超出可达圆,先等比例缩回边界,保证不炸。
整个闭环的伪代码(真实逻辑,≤10 行):
ret, frame = cap.read() # 1. 取帧 boxes = model(frame).boxes # 2. YOLO 检测 cx, cy = box.center # 3. 目标框中心 dx, dy = cx - w//2, cy - h//2 # 4. 像素误差 target_pan += -K_pan * dx # 5. 横向误差 -> 肩偏航 current_y += -K_y * dy # 纵向误差 -> 末端 y j2, j3 = inverse_kinematics(x, y) # 6. 余弦定理解析 IK robot.send_action(action) # 7. 50Hz P 控制下发为什么不用手眼标定 + 深度解算?因为 2D 伺服本身就能把物体"拉到"手臂下方,标定误差被反馈环吸收掉了一大半,成本从"买深度相机 + 写标定脚本"降到"调两个系数"。这是整个项目最省心的设计决策,后面 §5 会展开。
3. 最短上手路径:从克隆到看到手臂追鼠标
前提:一台能跑 Ubuntu 的电脑(或树莓派),手臂按 docs/en/source/hardware/getting_started/assemble.md 组装完成。以下命令均可在仓库文档 docs/en/source/software/getting_started/install.md 找到对应步骤。
第 1 步:拿代码
git clone https://gitcode.com/GitHub_Trending/xl/XLeRobot cd XLeRobot你会看到什么:hardware/是 3D 打印件(STL/STEP),software/是控制代码,simulation/是仿真资产。
第 2 步:装 LeRobot 并把 XLeRobot 的文件"搬"进去
git clone https://github.com/huggingface/lerobot && cd lerobot pip install -e . # 然后按 install.md:把 IK 求解器、xlerobot 配置、示例脚本 # 复制到 lerobot/lerobot 下的 model / robots / examples 目录你会看到什么:LeRobot 安装完成后多出一个可被 Python 直接 import 的包,3_so100_yolo_ee_follow.py出现在 examples 目录里。
第 3 步:给串口子放权(Ubuntu 必做)
sudo chmod 666 /dev/ttyACM0 sudo chmod 666 /dev/ttyACM1你会看到什么:无报错即成功;两条手臂各占一个串口,这一步不做后面会直接报 Permission denied。
第 4 步:跑视觉跟随 demo
python examples/3_so100_yolo_ee_follow.py你会看到什么:弹出一个标着 "YOLO11 Live" 的窗口,画面里出现目标(默认 COCO 的 mouse 类)被框住;你把目标左右移动,手臂的肩关节会实时跟着转、肘部伸屈去够它。按q退出视觉模式,按键可手动接管。
⚠️ 两个容易踩的点:
3_so100_yolo_ee_control.py和3_so100_yolo_ee_follow.py长得像但不是同一个东西:前者窗口里只画框、不控制机器人(视频流与控制独立);后者才是真正让手臂跟着目标走的版本。想抓东西请用 follow 版。- 电机数不对时(报
need 9 motors, but 8 detected),按 docs/en/source/software/getting_started/XLeRobot_teleop.md 的 FAQ 互换两个端口名即可。
没有硬件?走仿真线:simulation/Maniskill/run_xlerobot_sim.py 可在约 15 分钟内起一个带键盘/Xbox/Joycon/VR 遥操的仿真环境,链路和真机一致,适合先把 demo 逻辑摸熟。
4. 实测口径:代码里能确认的闭环参数
先坦白:仓库没有发布标准化基准报告,下表只整理代码里可查证的控制参数,方便你复现时对齐口径(全部来自3_so100_yolo_ee_follow.py与 software/readme.md 中"Real-time test on YOLO-based control"的实测说明):
| 参数 | 代码中的取值 | 含义 |
|---|---|---|
| 控制频率 | 50Hz(control_freq=50) | P 控制主循环,周期 20ms |
视觉横移增益K_pan | −0.006 rad/px | 每像素横向误差转肩偏航量 |
纵移增益K_y | 0.00004 m/px | 每像素纵向误差转末端 y 位移 |
| 肩偏航死区 | ±0.1 | 误差太小不响应,防抖 |
| y 轴限幅 | ±0.005 m,±0.001 内归零 | 纵向单步动作封顶 |
比例增益kp | 0.5 | P 控制强度 |
| 连杆长度 | 0.1159 / 0.1350 m | 解析 IK 几何常量,最大可达 0.2509m |
| 回位判据 | 总误差 <2° 即停 | 回零/回起点阈值 |
三条现场观察(来自仓库自述与代码逻辑):
- 50Hz 的控制节奏由 P 控制环决定,视觉是"按需更新"——检测跑多快、控制环就按 20ms 一拍拍地下发目标位置,所以摄像头帧率波动不会直接抖动手臂。
- 死区设计是刻意的:
dx映射结果小于 0.1 就置 0、dy小于 0.001 就置 0,这两个 if 就是"手臂到位后不再微动"的来源,是实测里防抖的主要手段。 - IK 自带工作空间钳制:目标圆超出 l1+l2 时先缩放到边界再解算,脚本注释里也写明角度被夹在 URDF 限位内——这是"目标跑太远时手臂不抽风"的保证。
5. 关键选型:这几个决定为什么这么下
| 选型 | 替代方案 | XLeRobot 的选择与理由 |
|---|---|---|
| 视觉方案 | 手眼标定 + 深度解算(买 RealSense + 写标定) | 2D 像素伺服 + YOLO 分类:免标定、免训练,误差靠反馈环兜底;RealSense 只是 +$220 的可选项 |
| 逆运动学 | 数值迭代 IK(通用但每帧要迭代) | 解析 IK(余弦定理,O(1)):SO-101 二连杆平面问题有闭式解,50Hz 下零开销,解唯一、行为可预期,代码见 software/src/model/SO101Robot.py |
| 控制环 | 每帧全量重规划 | P 控制 + 目标位置增量:视觉只改目标,控制环独立 50Hz 跑,两者解耦后帧率波动不传导到电机 |
| 底盘 | 只上万向轮 | 万向轮 / 差速双轮可选:双轮版(2025-12 发布)更便宜、更稳、定位更准,默认舵机、可选小电机电机 |
| 软件底座 | 自写驱动 | 站在 LeRobot 肩膀上:电机驱动、观测/动作格式、数据集记录全是现成的,XLeRobot 只加配置和 IK |
一句话:每个选型都在往"少买硬件、少写代码"上靠,这正是 $660 能成立的根本原因。
6. 调优清单:5 个即插即用的旋钮
都在3_so100_yolo_ee_follow.py顶部,改完重跑即可。
- 手臂追不上 / 追过头→ 调
K_pan(±0.006 起步)→ 收益:横向跟随速度与稳定性平衡。 - 手臂原地小抖→ 扩大死区(
abs(d_current_x) < 0.1的 0.1、dy的 0.001)→ 收益:到位后真正"静止"。 - 动作太软、收敛慢→ 提高
kp(默认 0.5)→ 收益:响应变快;过高会振荡,建议 0.5→0.7 小步试。 - 关节有系统偏差(每次启动都偏)→ 改
JOINT_CALIBRATION的零位偏移与缩放(如 shoulder_lift 的 2.0/0.97)→ 收益:消除装配公差带来的固定偏差。 - 想追别的物体→ 改
target_objects(默认["mouse"],换成["bottle"]等 COCO 类)→ 收益:同一套代码换目标不换逻辑。
7. 排障手册:症状 → 根因 → 处理
| 症状 | 根因 | 处理 |
|---|---|---|
Permission denied: /dev/ttyACM* | Ubuntu 串口权限 | 插板后执行sudo chmod 666 /dev/ttyACM0和ttyACM1(每次重插后) |
need 9 motors, but 8 detected | 左右臂串口名接反 | 用python lerobot/find_port.py确认,互换配置里的端口名 |
| chmod 后仍检测不到电机 | 供电/接线问题 | 重插电源线再试(官方 FAQ 原话) |
| YOLO 窗口有框但手臂不动 | 跑成了 control 版脚本 | 换成3_so100_yolo_ee_follow.py;control 版只画框不控制 |
| 手臂朝反方向追 | K_pan符号/映射方向反了 | 翻转增益符号(K_pan默认就是负值,别改成正的) |
| 目标太远时手臂抽风/顶死 | 超出可达工作空间 | 解析 IK 已自动缩放钳制;仍异常则检查 URDF 限位设置 |
| Joycon 连接不稳 | 系统蓝牙守护缺失 | sudo apt install joycond && sudo systemctl enable --now joycond |
更多细节(键盘/Xbox/Joycon/VR 遥操)见 docs/en/source/software/getting_started/XLeRobot_teleop.md。
8. 适用边界:这套东西能干什么、不能干什么
适合你,如果:
- 你是学生/研究者,要一台真机做遥操、数据集采集(software/src/record.py 支持录制)或 VLA/RL 训练验证(docs/en/source/software/getting_started/ 下有 RL、VLA_smol、VLA_ACT、pi05、LLM agent 全套教程);
- 预算敏感,$660 起步、树莓派 +$79 就能脱离笔记本;
- 愿意花半天打印 + 4 小时以内装配(hardware/ 全部结构件开源)。
不适合你,如果:
- 想要产线级抓取——SO-101 是舵机级轻负载手臂,负载与刚度都不面向工业;
- 想要开箱即用的"全自动家务"——仓库给的是平台 + demo,自主策略要你自己接(VLA 教程是目前最近的现成路径);
- 完全不想动手——3D 打印、走线、电机校准都是你自己来(官方也卖 Wowrobo 组装套件作为替代,非仓库内容)。
能力上限速记:视觉只认 COCO 类目标(换目标 = 改字符串);抓取靠像素伺服把目标"喂"到手臂下方,不是 6D 位姿级精确对位;双目/RGBD 是升级项而非前提。
收尾
XLeRobot 的真正价值不是 $660 本身,而是它把"检测 → 伺服 → 解析 IK → 50Hz 闭环"这条链路的每一环都放到了你能一行行读懂的开源文件里——你调一个K_pan,手臂就真的按你的理解动。
下一步就一件事:git clone仓库,打开 software/examples/,先跑3_so100_yolo_ee_follow.py;跑不通就先读 software/readme.md,没有硬件就去 simulation/ 里把同一套链路在仿真中跑一遍。
【免费下载链接】XLeRobotXLeRobot: Practical Dual-Arm Mobile Home Robot for $660项目地址: https://gitcode.com/GitHub_Trending/xl/XLeRobot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考