接口与编排¶
Isaac USD 场景起来之后,数据采集不会在 Python 里按名字去调 OCS2 或 Nav2 服务端。YAML task_queue 块解析成已注册技能;技能产出 StageTarget 序列,再经 ROS2RobotInterface 发出。
下列 API 来自 robot_action_composer @ feature/dex-grasp-generator 及其 docs/。不要发明 ActionSequence / actions.MoveJ 这类类。
ros2_robot_interface(运动与录制)¶
Repository: fiveages-sim/ros2_robot_interface
composer README:纯运动 / 队列路径依赖 ROS2RobotInterface(ctx.interface),不依赖 LeRobot 的 ROS2Robot 类。录制时机器人运动仍走同一接口;LeRobot 插件只负责写 episode(下一页)。
典型安装用 lerobot_ros2 脚本,不要在系统 Python 上随手 pip:
cd lerobot_ros2
./init.sh all-motion # ros2_robot_interface + robot_action_composer
robot_action_composer(task_queue + 技能)¶
Branch: feature/dex-grasp-generator
在 lerobot_ros2 monorepo 里这个包是 submodules/robot_action_composer。两层:
层 |
职责 |
|---|---|
|
几何 → |
|
|
YAML 在 robots/<Robot>/task_configs/**/*.yaml(可选厂商分组 robots/<Vendor>/<Robot>/)。发现、合并规则与 robot.yaml:TASK_CONFIG_YAML.md、ROBOT_CONFIG.md。
技能名(README 索引中的例子;参数见 SKILLS_REFERENCE.md):
类别 |
已注册的 |
|---|---|
单臂 |
|
双臂 |
|
导航 |
|
关节 / 会话 / 环境 |
|
README 使用的数据采集工作区是 lerobot_ros2 里的 examples/IsaacSim(含 robots/)。机型说明(含轮臂 FiveAges W2 双臂任务)就在那些目录旁(例如 robots/FiveAges_W2/README.md)。
CLI(跑完 ./init.sh 之后)¶
composer pyproject.toml 中的 console scripts:motion-generation、ros2-stack、grasp-generation、check-isaac-pose、check-robot-status。
在包含 robots/ 的目录下运行(通常是 examples/IsaacSim):
cd examples/IsaacSim
# Scene-level OCS2 + Nav2 (background logs under .ros2_stack/<robot>/)
ros2-stack --lang zh launch
ros2-stack status
ros2-stack stop
# Task queue (dry motion; optional --ensure-ros2-stack)
motion-generation
motion-generation --robot dobot_cr5 --task-key pick_place --scene default
motion-generation --robot fiveages_w2 --task-key transfer_blade --ensure-ros2-stack
grasp-generation serve … 是该分支上可选的抓取配置 UI(GRASP_GENERATION.md);它不是录制入口,也不是 ros2-viser。
Isaac 实体位姿 / 关节转储助手(check-isaac-pose、check-robot-status)需要仿真以及 composer README 所写的 /get_entity_state。
完整 CLI 参数列表:robot_action_composer 参考。
流水线下一步¶
录制是叠在这条队列上的 extra:同一套 YAML task_queue,再加上 LeRobot 插件。继续看 LeRobot 录制与导出。