LeRobot 录制与导出¶
本页停在 LeRobot 数据集录制 / 导出。不写训练、在线推理,也不写策略如何消费数据集。
Monorepo: lerobot_ros2 @ feature/sim-grasp-datagen
README: README.md on that branch
Isaac 侧共用步骤:examples/IsaacSim/README.md。
录制用到什么¶
组件 |
角色 |
|---|---|
|
episode 运行时的运动 / 状态( |
|
与干跑 |
|
负责写帧的 LeRobot 机器人插件( |
|
相机插件(数据集图像) |
PyPI |
数据集容器( |
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。
录制前¶
Isaac 场景已在跑(Isaac 场景与 USD)。
ROS 2 运控 +(若任务含
nav.*)经ros2-stack启动官方 Nav2(编排)。示例 README:启用 Isaac ROS 2 的 simulation state 与 prim 服务,reset / 物体位姿才可用。
任务 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.pyexamples/IsaacSim/inference.py/online_infer/