首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >无需高端显卡!手把手教你训练LeRobot机械臂操作模型

无需高端显卡!手把手教你训练LeRobot机械臂操作模型

作者头像
GPUS Lady
发布2025-07-12 17:59:27
发布2025-07-12 17:59:27
36700
代码可运行
举报
文章被收录于专栏:GPUS开发者GPUS开发者
运行总次数:0
代码可运行

在前文里,我们已为大家详细介绍了 LeRobot SO-ARM101 的开箱、组装以及舵机校准等流程(LeRobot SO-ARM101升级版开箱,为您的机械臂开发省下2个月试错成本)。今天,就让我们一同开启新环节,带领大家训练一个机械臂拾取模型,机械臂要完成的动作是:拉开抽屉,拾取积木,将积木放进抽屉,最后关上抽屉。

手臂训练数据的收集过程是这样的:

训练完成后的效果是这样的:

注意:本教程基于 Linux 环境编写 ,假设⽤户已完成环境配置、机械臂组装与校准⼯作。教程中将 Leader 称为主臂 ,Follower 称为从臂。(我们出货套件里都是包含主臂和从臂)

我们的电脑上是一片RTX4060ti(16G)显存,可以轻松完成训练

一、准备⼯作

由于 LeRobot 迭代速度较快 ,建议切换到教程编写时的版本:

代码语言:javascript
代码运行次数:0
运行
复制
git checkout d2645cb19fc521e5b117fe03d90a84f698d3d3f6
代码语言:javascript
代码运行次数:0
运行
复制

二、遥控操作

完成主从臂校准后 ,可以通过以下脚本控制主臂遥控从臂 ,同时显⽰相机画⾯和电机信息:

代码语言:javascript
代码运行次数:0
运行
复制
python -m lerobot.teleoperate \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM1 \
--robot.id=follower \
--robot.cameras="{ front: {type: opencv, index_or_path: /dev/video2,
width: 640, height: 480, fps: 30}}" \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM0 \
--teleop.id=leader \
--display_data=true
代码语言:javascript
代码运行次数:0
运行
复制
参数说明:

robot.id 和 teleop.id :应与校准时提供的机械臂唯⼀ ID ⼀致 ,⽤于读取校准时保存 的电机信息

robot.cameras :相机配置信息 ,可运⾏ python -m lerobot.find_cameras opencv 查找可⽤相机。⽀持多机位配置 ,通过字典键区分和记录不同相机

三、数据收集

基本收集命令

代码语言:javascript
代码运行次数:0
运行
复制
python -m lerobot.record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM1 \
--robot.id=follower \
--robot.cameras="{ front: {type: opencv, index_or_path: /dev/video2,
width: 640, height: 480, fps: 30}}" \
--teleop.type=so101_leader \
--teleop.port=/dev/ttyACM0 \
--teleop.id=leader \
--display_data=true \
--dataset.num_episodes=2θ \
--dataset.push_to_hub=False \
--dataset.repo_id=${HF_USER}/record-test \
--dataset.single_task="Grab the black cube"
代码语言:javascript
代码运行次数:0
运行
复制

数据存储位置

默认存储路径: ~/.cache/huggingface/lerobot/{repo-id}

⾃定义存储:设置 HF_LEROBOT_HOME 环境变量 ,数据将存储在

HF_LEROBOT_HOME/repo_id 路径下

数据收集控制

收集过程中可通过键盘控制流程:

右箭头 ( →):录制阶段完成当前录制并进⼊恢复阶段;恢复阶段进⼊下⼀轮录制

左箭头 (←):重新录制当前数据

ESC:完成当前录制并退出

恢复中断的收集

如果收集过程中出错 ,可在原命令基础上添加 --resume=true 参数恢复。

数据上传

⼿动上传数据到 HuggingFace:

代码语言:javascript
代码运行次数:0
运行
复制
huggingface-cli upload ${HF_USER}/record-test
~/.cache/huggingface/lerobot/{repo-id} --repo-type dataset
代码语言:javascript
代码运行次数:0
运行
复制
注意:如果不设置 --dataset.push_to_hub=False ,收集完成时默认会⾃动上传数据。

四、模型训练

基本训练命令

代码语言:javascript
代码运行次数:0
运行
复制
python -m lerobot.scripts.train \
--dataset.repo_id=${HF_USER}/record-test \
--policy.type=act \
--output_dir=outputs/train/act_so101_test \
--job_name=act_so101_test \
--policy.device=cuda \
--wandb.enable=false \
--policy.repo_id=${HF_USER}/my_policy \
--policy.push_to_hub=false \
--steps 50000 \
--batch_size 32 \
--save_freq 10000
代码语言:javascript
代码运行次数:0
运行
复制
训练脚本会从 HF_LEROBOT_HOME/dataset.repo_id 路径下读取数据进⾏训练。

恢复训练

从最新检查点恢复训练:

代码语言:javascript
代码运行次数:0
运行
复制
python -m lerobot.scripts.train \
--
config_path=outputs/train/act_so101_test/checkpoints/last/pretrained_model
/train_config.json \
--resume=true
代码语言:javascript
代码运行次数:0
运行
复制
五、模型推理与评估

使⽤训练好的模型进⾏推理 ,同时记录评估⽚段:

代码语言:javascript
代码运行次数:0
运行
复制
python -m lerobot.record \
--robot.type=so101_follower \
--robot.port=/dev/ttyACM1 \
--robot.cameras="{ front: {type: opencv, index_or_path: /dev/video2,
width: 640, height: 480, fps: 30}}" \
--robot.id=follower \
--display_data=true \
--dataset.repo_id=${HF_USER}/eval_so101 \
--dataset.single_task="Put lego brick into the transparent box" \
--
policy.path=outputs/train/act_so101_test/checkpoints/last/pretrained_model
/

注意:因为 Huggingface 的 LeRobot 文档还在不断迭代更新,所以咱们的教程也会紧跟节奏,持续为大家带来最新、最实用的内容哦。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二、遥控操作
  • 三、数据收集
    • 基本收集命令
    • 数据存储位置
    • 数据收集控制
    • 恢复中断的收集
    • 数据上传
  • 四、模型训练
    • 基本训练命令
    • 恢复训练
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档