LeRobot 录制与导出

本页停在 LeRobot 数据集录制 / 导出。不写训练、在线推理,也不写策略如何消费数据集。

Monorepo: lerobot_ros2 @ feature/sim-grasp-datagen

README: README.md on that branch

Isaac 侧共用步骤:examples/IsaacSim/README.md。

录制用到什么

组件

角色

submodules/ros2_robot_interface

episode 运行时的运动 / 状态(robot.ros2_interface)

submodules/robot_action_composer

与干跑 motion-generation 同一套 task_queue 技能;包 dataset_recording + cli.record_main

lerobot_robot_ros2

负责写帧的 LeRobot 机器人插件(ROS2Robot)

lerobot_camera_ros2

相机插件(数据集图像)

PyPI lerobot

数据集容器(LeRobotDataset.create / add_frame / save_episode)。默认钉在 .fa-env.toml 的 lerobot==0.5.1

composer pyproject.toml extra [recording] 是 lerobot + lerobot-robot-ros2。运动/队列不需要它;录制需要。

examples/IsaacSim/record_datasets.py 是薄封装:调用 robot_action_composer.cli.record_main.run_record_datasets,isaac_dir 设为该目录。

安装(脚本优先)

摘自 lerobot_ros2 README。Python 3.12、ROS 2 Jazzy,推荐 uv。

git clone --recursive git@github.com:fiveages-sim/lerobot_ros2.git
cd lerobot_ros2
./init.sh all
# motion / task queue only:     ./init.sh all-motion
# recording plugins (if you skipped all):  ./init.sh install-lerobot
source .venv/bin/activate

./init.sh all = 子模块 + 环境 + 任务编排 + LeRobot 插件。仓库根目录裸 pip install -e . 不是安装路径。

Isaac 示例 README 还写了本仓的 ./init.sh install-plugins。用 lerobot_ros2 的 ./init.sh,不要手写从 PyPI 装 rclpy。

录制前

  1. Isaac 场景已在跑(Isaac 场景与 USD)。

  2. ROS 2 运控 +(若任务含 nav.*)经 ros2-stack 启动官方 Nav2(编排)。

  3. 示例 README:启用 Isaac ROS 2 的 simulation state 与 prim 服务,reset / 物体位姿才可用。

  4. 任务 YAML 必须有非空 task_queue(否则录制器会报错)。

录制

composer pyproject.toml 里没有 record-datasets console script。文档入口是示例包装:

cd examples/IsaacSim
python record_datasets.py

交互提示(该分支 record_main / dataset_recording.launcher):

  • 机器人(examples/IsaacSim/robots 注册表;若有则默认 dobot_cr5)

  • 任务文件夹 / 任务(task_key)

  • YAML 含 scene_presets 时的场景预设

  • 录制 profile

  • episode 数量

  • 可选:在关键点采 depth+点云(仅当 lerobot_config.py 配了 depth topic)

  • 可选:回 home 后人工检查

每台机器人的 lerobot_config.py(LEROBOT_CFG)是 ROBOT_CONFIG.md 所写拆分的 LeRobot 侧;robot.yaml 仍是运动/栈侧。

导出(落盘内容)

该分支上 runner 会创建本地 LeRobot 数据集:

<cwd>/lerobot_dataset/grasp_record_<unix_time>/

通过 LeRobotDataset.create(repo_id 为该路径,use_videos=True,fps 来自录制 profile)。episode 是 dataset.add_frame 再 dataset.save_episode。这就是本章覆盖的导出。除非本分支 README 写了,否则不要假设有 Hugging Face 上传 CLI。

到此为止

不在本章(分支上有这些文件;以后需要再看示例 README):

  • examples/IsaacSim/policy_training/train.py

  • examples/IsaacSim/inference.py / online_infer/

包页面:lerobot_ros2、robot_action_composer。