LeRobot开源机器人框架:让SO-100机械臂自己学会干活
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
SO-100 是 LeRobot 官方支持硬件里最便宜的入门点,一只桌面级六关节机械臂。LeRobot 是 Hugging Face 推出的开源机器人框架,把机器人数据采集、策略训练、真机部署整条链路装进同一个 Python 仓库。这篇文章用 SO-100 走一遍完整闭环:你手搓几条演示,它让机械臂自己学会抓取。
先看一条流水线:数据是怎么变成动作的
先说结论:LeRobot 的典型用户是学生、研究者、创客和机器人工程师,它想解决的是"数据到动作"之间太多手工活的问题。
整条流水线是这么走的。你用一台"领导臂"手动演示任务,lerobot-record把过程存成LeRobotDataset;然后用lerobot-train在数据集上训练策略;最后lerobot-rollout把策略发回真机执行。数据集的存储结构可以类比成"表格 + 录像":Parquet 文件里每一行是一个时间步的关节角、动作指令和时间戳,MP4 文件则是相机视角的录像,两者在时间上严格对齐。这样既省空间,又能从 Hugging Face Hub 上几千个公开数据集里直接加载别人的成果来训练。
策略端是这个框架最厚的一块。仓库用纯 PyTorch 实现了模仿学习(ACT、Diffusion)、强化学习(TDMPC、HIL-SERL)以及一大批 VLA(视觉-语言-动作)模型:Pi0、Pi0.5、GR00T、SmolVLA、EO-1 等,还包括 VLA-JEPA 这类世界模型。多模态输入怎么变成动作指令,架构图一眼能看懂:
硬件侧同样如此。不管你用的是 SO-100、LeKiwi 还是 Unitree G1,控制代码都是robot.connect()、get_observation()、send_action()三件套,各家的驱动差异被封装在 src/lerobot/robots/ 下面。换句话说,换机器人不用换代码。
SO-100 场景走查:从连接硬件到跑通真机
下面这段经历来自官方文档 docs/ 里的 SO-100 教程,我把它串成一次真实的上手过程。
连接硬件。先装 Feetech 舵机支持包,再让框架替你找串口:
pip install -e ".[feetech]" lerobot-find-portlerobot-find-port会打印所有可用串口,并提示你"拔掉某个 USB 再按回车"来确认哪根线连着哪只臂。确认端口后,第一次使用还需要lerobot-setup-motors给每个舵机写 ID 和波特率,以及lerobot-calibrate做标定——这一步很关键,它保证领导臂和跟随臂摆到同一物理姿态时读出同一组数值。没标定的臂,后面训练出的策略就是"对着空气比划"。
采集数据。标定完成,两只臂摆好,一条命令开始遥操作:你用手拨领导臂,跟随臂同步模仿,同时录下全部关节值和相机画面:
lerobot-record \ --robot.type=so100_follower \ --robot.port=/dev/tty.usbmodem575E0032081 \ --teleop.type=so100_leader \ --teleop.port=/dev/tty.usbmodem575E0031751 \ --display_data=true \ --dataset.num_episodes=5 \ --dataset.single_task="Grab the black cube"录 5 条演示大概一二十分钟。数据存成本地 LeRobotDataset 后,随时可以推到 Hub 供训练和分享。
训练策略。ACT 这类模仿学习策略会自动适配数据集里的关节数和相机数,你不用改任何网络配置:
lerobot-train \ --dataset.repo_id=youruser/so100_test \ --policy.type=act lerobot-rollout \ --strategy.type=base \ --policy.path=youruser/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --task="Put lego brick into the transparent box" \ --duration=60真机部署。训练几小时后,lerobot-rollout加载 checkpoint 接到跟随臂上。此时你可以把手从领导臂上移开,机械臂会按自己学到的策略把积木放进盒子。如果只是想快速验证而不动真机,lerobot-eval还支持在 LIBERO、MetaWorld 等仿真基准里跑同一个策略,命令风格完全一致。
一张表看全硬件、数据集与算法族
| 维度 | 支持范围 | 备注 |
|---|---|---|
| 原生硬件 | SO-100/101、LeKiwi、HopeJR、Reachy2、Unitree G1、OpenARM、reBot B601、游戏手柄/键盘/手机 | 统一 Robot 接口,驱动源码见 src/lerobot/robots/ |
| 第三方插件 | xArm、UR5e、Franka、Piper、WidowX、Meta Quest、ROS 2 桥接 | 按lerobot_robot_*命名安装后自动发现 |
| 数据集 | Hub 上 Parquet + MP4 格式的 LeRobotDataset | 删集、切分、合并都有对应 CLI |
| 模仿学习 | ACT、Diffusion、VQ-BeT、Multitask DiT | 入门首选 ACT |
| 强化学习 | TDMPC、HIL-SERL | 适合探索式与人在回路的任务 |
| VLA 模型 | Pi0/Pi0.5、GR00T、SmolVLA、EO-1、MolmoAct2、EVO1 等 | 全部纯 PyTorch 实现 |
| 世界模型/奖励模型 | VLA-JEPA、FastWAM;SARM、TOPReward、Robometer | 服务于离线评估与 HIL 训练 |
所有策略的配置和实现都集中在 src/lerobot/policies/ 下,每个策略一个目录,README 里附了各自的训练时间和显存要求,选型前可以先翻一眼。
三个最常见的坑,怎么排查
现象一:串口找不到,臂连不上。排查清单:Linux 下先确认/dev/ttyACM*有读写权限;检查供电和两条线(电脑到控制板的 USB 线、控制板到舵机的 3 _pin 线)是否插紧;如果你用的是 Waveshare 控制板,确认跳线设在 B 通道(USB)。文档里这条故障线是连接失败里命中率最高的。
现象二:训练跑完,策略在真机上乱抖。先别怀疑网络,怀疑标定。跑一次lerobot-dataset-viz回看采集帧,确认领导臂和跟随臂在相同姿态下数值一致;不一致就重跑lerobot-calibrate。数据对了,ACT 这类策略会自动对齐输入维度,通常就能收敛。
现象三:VLA 模型动作一顿一顿的。原因是单步推理太慢,机械臂在"等答案"。两条路:lerobot-rollout加--inference.type=rtc用远程传输控制平滑执行;或者上异步推理,policy_server单独算下一段动作,机械臂执行当前段时下一段已经在排队,规划与执行彻底解耦。
起步建议:先跑一个现成的推理
不用先买硬件。挑一个 Hub 上已有数据集跑通lerobot-eval,或者用lerobot-dataset-viz把别人录的演示帧看一遍,搞清楚观测和动作长什么样,再决定买哪台臂。真机是后话,先让流水线在你机器上转起来。
【免费下载链接】lerobot🤗 LeRobot: Making AI for Robotics more accessible with end-to-end learning项目地址: https://gitcode.com/GitHub_Trending/le/lerobot
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考