让我们一起在NVIDIA Jetson上运行HuggingFace的LeRobot,训练基于Transformer的动作扩散策略和ACT策略。这些模型从视觉输入和先前的轨迹(通常在遥操作或模拟中收集)中学习预测特定任务的动作。
本教程将详细介绍如何在Jetson设备上为真实世界的机器人(以低成本的Koch v1.1为例)设置完整的端到端学习流程,从硬件配置、数据收集到模型训练和评估。
所需设备
- Jetson设备:
- Jetson AGX Orin (64GB)
- Jetson AGX Orin (32GB)
- Jetson Orin NX (16GB)
- Jetson Orin Nano (8GB) ⚠️ (内存可能受限)
- JetPack版本:
- JetPack 6 GA (L4T r36.3)
- JetPack 6.1 (L4T r36.4)
- 存储:强烈推荐使用NVMe SSD
lerobot容器镜像需要16.5GB
- 模型和数据集需要
>2GB
基础设置:克隆并设置jetson-containers
# 克隆仓库git clone https://github.com/dusty-nv/jetson-containers # 运行安装脚本bash jetson-containers/install.sh
本节将指导您在Jetson上完成LeRobot官方示例《真实世界机器人入门》的全部流程。
💡 提示: 建议在
显示器连接模式下操作Jetson。
lerobot设计用于显示摄像头视图窗口并在捕获数据集时播放TTS音频,因此连接显示器和扬声器会更方便。
a. 检查jetson-containers目录位置
由于lerobot工作流会产生大量数据,请确保您的jetson-containers目录位于SSD上,而不是eMMC或microSD卡。
# 如果目录位置不正确,使用rsync迁移rsync -aHAX /home/jetson/jetson-containers/ /ssd/jetson-containers/ # 重新运行安装程序bash /ssd/jetson-containers/install.sh
b. 在主机上创建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
c. PulseAudio音频设置
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:
sudovi /etc/pulse/default.pa
d. 为ACM设备设置udev规则
为了让程序能以唯一的名称找到leader和follower机械臂,我们设置udev规则。
/dev/ttyACM_kochleader: Leader arm
/dev/ttyACM_kochfollower: Follower arm
对follower臂重复此过程,然后将规则文件复制到/etc/udev/rules.d/并重启Jetson。
sudocp ./99-usb-serial.rules /etc/udev/rules.d/ sudoreboot
编辑99-usb-serial.rules文件,填入序列号:
SUBSYSTEM=="tty", ATTRS{idVendor}=="2f5d", ATTRS{idProduct}=="2202", ATTRS{serial}=="BA98C8CA46462E3120FF121B06", SYMLINK+="ttyACM_kochleader" SUBSYSTEM=="tty", ATTRS{idVendor}=="2f5d", ATTRS{idProduct}=="2202", ATTRS{serial}=="
", SYMLINK+="ttyACM_kochfollower"
仅连接leader臂,记录其序列号:
ll /dev/serial/by-id/ # 输出示例: lrwxrwxrwx 1 root root 13 Sep 24 13:07 usb-ROBOTIS_OpenRB-150_BA98C8CA46462E3120FF121B06-if00 -> ../../ttyACM1
e. 增加交换文件大小
为了防止在训练ACT模型时内存不足,建议增加交换空间。
# 增加8GB交换空间 swapoff -a -v sudorm /swfile sudo systemctl disable nvzramconfig sudo fallocate -l 8G /ssd/8GB.swap sudochmod600 /ssd/8GB.swap sudomkswap /ssd/8GB.swap sudosh -c 'echo "/ssd/8GB.swap swap swap defaults 0 0" >> /etc/fstab'sudoreboot
f. 启动lerobot容器
# 进入jetson-containers目录cd jetson-containers # 启动容器,并将主机上的lerobot目录挂载进去 ./run.sh -v ${PWD}/data/lerobot/:/opt/lerobot/ $(./autotag lerobot)
💡 JupyterLab提示:
lerobot容器启动后,JupyterLab服务也会启动。您可以通过
http://localhost:8888/访问,其中包含与官方教程各部分对应的notebooks。
1. 组装Koch v1.1机械臂
您可以从ROBOTIS订购Koch v1.1套件(注意:不包含3D打印部件)。
2. 配置电机、校准机械臂、进行遥操作
请跟随Jupyter notebook 7-2_real-robot_configure-motors.ipynb中的步骤操作。
3. 记录并可视化您的数据集
💡 Bash历史提示: 在容器的控制台中,您可以按
Up键滚动浏览预注册的常用命令。
# 登录wandb wandb login # 设置HuggingFace用户名exportHF_USER=
# 运行数据记录脚本 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
4. 在您的数据上训练一个策略
# 登录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
5. 评估您的策略
# 运行评估脚本,-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
训练您自己的ACT策略
接下来,在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都提供了一套强大而灵活的工具。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/254947.html