本教程基于 Linux 环境编写,假设用户已完成环境配置、机械臂组装与校准工作。教程中将 Leader 称为主臂,Follower 称为从臂。
训练环境:Ubuntu 22.10,RTX 4060 TI (16G)
由于 LeRobot 迭代速度较快,建议切换到教程编写时的版本:
git checkout d2645cb19fc521e5b117fe03d90a84f698d3d3f6完成主从臂校准后,可以通过以下脚本控制主臂遥控从臂,同时显示相机画面和电机信息:
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=truerobot.id 和 teleop.id:应与校准时提供的机械臂唯一 ID 一致,用于读取校准时保存的电机信息robot.cameras:相机配置信息,可运行 python -m lerobot.find_cameras opencv 查找可用相机。支持多机位配置,通过字典键区分和记录不同相机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=20 \
--dataset.push_to_hub=False \
--dataset.repo_id=${HF_USER}/record-test \
--dataset.single_task="Grab the black cube"~/.cache/huggingface/lerobot/{repo-id}HF_LEROBOT_HOME 环境变量,数据将存储在 HF_LEROBOT_HOME/repo_id 路径下收集过程中可通过键盘控制流程:
注意:该脚本使用 pynput 监听按键,因此在 SSH 或 Wayland 下可能无法工作。详见:pynput 平台限制
如果收集过程中出错,可在原命令基础上添加 --resume=true 参数恢复。
手动上传数据到 HuggingFace:
huggingface-cli upload ${HF_USER}/record-test ~/.cache/huggingface/lerobot/{repo-id} --repo-type dataset注意:如果不设置 --dataset.push_to_hub=False,收集完成时默认会自动上传数据。
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训练脚本会从 HF_LEROBOT_HOME/dataset.repo_id 路径下读取数据进行训练。
从最新检查点恢复训练:
python -m lerobot.scripts.train \
--config_path=outputs/train/act_so101_test/checkpoints/last/pretrained_model/train_config.json \
--resume=true使用训练好的模型进行推理,同时记录评估片段:
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/原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。