在 NVIDIA Jetson 上基于 HuggingFace LeRobot 实现端到端机器人学习
在 NVIDIA Jetson 设备上使用 HuggingFace LeRobot 框架进行端到端机器人学习的完整流程。内容包括硬件环境配置、Jetson Containers 容器化部署、真实机器人(Koch v1.1)的数据采集与遥操作设置、模型训练(ACT 及扩散策略)以及评估方法。教程涵盖了从基础环境搭建到实际部署的关键步骤,支持在边缘设备上快速迭代机器人学习模型。

在 NVIDIA Jetson 设备上使用 HuggingFace LeRobot 框架进行端到端机器人学习的完整流程。内容包括硬件环境配置、Jetson Containers 容器化部署、真实机器人(Koch v1.1)的数据采集与遥操作设置、模型训练(ACT 及扩散策略)以及评估方法。教程涵盖了从基础环境搭建到实际部署的关键步骤,支持在边缘设备上快速迭代机器人学习模型。

让我们一起在 NVIDIA Jetson 上运行 HuggingFace 的 LeRobot,训练基于 Transformer 的动作扩散策略和 ACT 策略。这些模型从视觉输入和先前的轨迹中学习预测特定任务的动作。
本教程将详细介绍如何在 Jetson 设备上为真实世界的机器人(以低成本的 Koch v1.1 为例)设置完整的端到端学习流程,从硬件配置、数据收集到模型训练和评估。
lerobot容器镜像需要 16.5GB基础设置:克隆并设置 jetson-containers
# 克隆仓库
git clone https://github.com/dusty-nv/jetson-containers
# 运行安装脚本
bash jetson-containers/install.sh
本节将指导您在 Jetson 上完成 LeRobot 官方示例《真实世界机器人入门》的全部流程。
💡 提示:建议在显示器连接模式下操作 Jetson。
lerobot设计用于显示摄像头视图窗口并在捕获数据集时播放 TTS 音频,因此连接显示器和扬声器会更方便。
jetson-containers目录位置由于 lerobot工作流会产生大量数据,请确保您的 jetson-containers目录位于 SSD 上,而不是 eMMC 或 microSD 卡。
# 如果目录位置不正确,使用 rsync 迁移
rsync -aHAX /home/jetson/jetson-containers/ /ssd/jetson-containers/
# 重新运行安装程序
bash /ssd/jetson-containers/install.sh
lerobot目录为了使数据持久化,我们将在主机上创建 lerobot目录并挂载到容器中。
# 进入 jetson-containers 目录
cd jetson-containers
# 克隆 lerobot 目录到 data 文件夹下
./packages/robots/lerobot/clone_lerobot_dir_under_data.sh
# 复制覆盖文件
./packages/robots/lerobot/copy_overlay_files_in_data_lerobot.sh
LeRobot 的数据捕获流程使用 Speech Dispatcher 通过 espeak TTS 提供音频提示。我们需要配置 PulseAudio 以允许 root 用户访问 socket 文件。
重启 PulseAudio 服务:
pulseaudio --kill
pulseaudio --start
找到加载 module-native-protocol-unix的部分,并添加 auth-anonymous=1:
### Load several protocols
.ifexists module-esound-protocol-unix.so
load-module module-esound-protocol-unix auth-anonymous=1
.endif
编辑 /etc/pulse/default.pa:
sudo vi /etc/pulse/default.pa
为了让程序能以唯一的名称找到 leader 和 follower 机械臂,我们设置 udev 规则。
/dev/ttyACM_kochleader: Leader arm/dev/ttyACM_kochfollower: Follower arm对 follower 臂重复此过程,然后将规则文件复制到 /etc/udev/rules.d/并重启 Jetson。
sudo cp ./99-usb-serial.rules /etc/udev/rules.d/
sudo reboot
编辑 99-usb-serial.rules文件,填入序列号:
SUBSYSTEM=="tty", ATTRS{idVendor}=="2f5d", ATTRS{idProduct}=="2202", ATTRS{serial}=="BA98C8C350304A46462E3120FF121B06", SYMLINK+="ttyACM_kochleader"
SUBSYSTEM=="tty", ATTRS{idVendor}=="2f5d", ATTRS{idProduct}=="2202", ATTRS{serial}=="<YOUR_FOLLOWER_ARM_SERIAL>", SYMLINK+="ttyACM_kochfollower"
仅连接 leader 臂,记录其序列号:
ll /dev/serial/by-id/
# 输出示例:
# lrwxrwxrwx 1 root root 13 Sep 24 13:07 usb-ROBOTIS_OpenRB-150_BA98C8C350304A46462E3120FF121B06-if00 -> ../../ttyACM1
为了防止在训练 ACT 模型时内存不足,建议增加交换空间。
# 增加 8GB 交换空间
swapoff -a -v
sudo rm /swfile
sudo systemctl disable nvzramconfig
sudo fallocate -l 8G /ssd/8GB.swap
sudo chmod 600 /ssd/8GB.swap
sudo mkswap /ssd/8GB.swap
sudo sh -c 'echo "/ssd/8GB.swap swap swap defaults 0 0" >> /etc/fstab'
sudo reboot
lerobot容器# 进入 jetson-containers 目录
cd jetson-containers
# 启动容器,并将主机上的 lerobot 目录挂载进去
./run.sh \
-v ${PWD}/data/lerobot/:/opt/lerobot/ \
$(./autotag lerobot)
💡 JupyterLab 提示:
lerobot容器启动后,JupyterLab 服务也会启动。您可以通过 http://localhost:8888/访问,其中包含与官方教程各部分对应的 notebooks。
您可以从 ROBOTIS 订购 Koch v1.1 套件(注意:不包含 3D 打印部件)。
请跟随 Jupyter notebook 7-2_real-robot_configure-motors.ipynb中的步骤操作。
💡 Bash 历史提示:在容器的控制台中,您可以按 Up 键滚动浏览预注册的常用命令。
# 登录 wandb
wandb login
# 设置 HuggingFace 用户名
export HF_USER=<your_username>
# 运行数据记录脚本
python lerobot/scripts/control_robot.py record \
--robot-path lerobot/configs/robot/koch.yaml \
--fps 30 \
--root data \
--repo-id ${HF_USER}/koch_test_$(date +%Y%m%d_%H%M%S) \
--tags tutorial \
--warmup-time-s 5 \
--episode-time-s 30 \
--reset-time-s 30 \
--num-episodes 10
# 登录 wandb
wandb login
# 运行训练脚本
DATA_DIR=data python lerobot/scripts/train.py \
dataset_repo_id=${HF_USER}/koch_test \
policy=act_koch_real \
env=koch_real \
hydra.run.dir=outputs/train/act_koch_test \
hydra.job.name=act_koch_test \
device=cuda \
wandb.enable=true
# 运行评估脚本,-p 参数指向训练好的模型
python lerobot/scripts/control_robot.py record \
--robot-path lerobot/configs/robot/koch.yaml \
--fps 30 \
--root data \
--repo-id ${HF_USER}/eval_koch_test_01 \
--tags tutorial eval \
--warmup-time-s 5 \
--episode-time-s 30 \
--reset-time-s 30 \
--num-episodes 10 \
-p outputs/train/act_koch_test/checkpoints/last/pretrained_model \
--run-compute-stats 0
# 可视化评估结果
python lerobot/scripts/visualize_dataset.py \
--root data \
--repo-id ${HF_USER}/eval_koch_test
LeRobot 使用 rerun.io 进行可视化。
# 在主机上安装并运行 rerun
pip3 install rerun-sdk rerun
# 在容器中运行可视化脚本
jetson-containers run -w /opt/lerobot $(autotag lerobot) \
python3 lerobot/scripts/visualize_dataset.py \
--repo-id lerobot/pusht \
--episode-index 0
此命令将下载并在 PushT 环境上运行一个预训练的扩散模型。
jetson-containers run -w /opt/lerobot $(autotag lerobot) \
python3 lerobot/scripts/eval.py \
-p lerobot/diffusion_pusht \
eval.n_episodes=10 \
eval.batch_size=10
接下来,在 Aloha 操作环境上训练 ACT 策略。
jetson-containers run -w /opt/lerobot $(autotag lerobot) \
python3 lerobot/scripts/train.py \
policy=act \
env=aloha \
env.task=AlohaInsertion-v0 \
dataset_repo_id=lerobot/aloha_sim_insertion_human
本教程展示了在 NVIDIA Jetson 上使用 LeRobot 进行端到端机器人学习的完整流程。从硬件设置到数据收集、训练和评估,开发者可以利用 Jetson 强大的计算能力,在边缘设备上快速迭代和部署机器人学习模型。无论是使用低成本的 Koch v1.1 进行真实世界实验,还是在模拟环境中进行快速验证,LeRobot 都提供了一套强大而灵活的工具。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online