Interface and Orchestration¶
After the Isaac USD scene is up, datagen does not call OCS2 or Nav2 servers from Python by name. YAML task_queue blocks resolve to registered skills; skills emit StageTarget sequences and send them through ROS2RobotInterface.
APIs below are from robot_action_composer @ feature/dex-grasp-generator and its docs/. YAML skill: values are registered names from that README (not a Python ActionSequence / actions.MoveJ class).
ros2_robot_interface (motion and recording)¶
Repository: fiveages-sim/ros2_robot_interface
Composer’s README: the pure motion / queue path depends on ROS2RobotInterface (ctx.interface), not LeRobot’s ROS2Robot class. Recording still moves the robot through that same interface; the LeRobot plugin is only the episode writer (next page).
Typical install is the lerobot_ros2 script, not a one-off pip on system Python:
cd lerobot_ros2
./init.sh all-motion # ros2_robot_interface + robot_action_composer
Reference: ros2_robot_interface, Python Interface how-to.
robot_action_composer (task_queue + skills)¶
Branch: feature/dex-grasp-generator
In the lerobot_ros2 monorepo this package is submodules/robot_action_composer. Two layers:
Layer |
Job |
|---|---|
|
Geometry → |
|
|
YAML lives under robots/<Robot>/task_configs/**/*.yaml (optional vendor grouping robots/<Vendor>/<Robot>/). Discovery, merge rules, and robot.yaml: TASK_CONFIG_YAML.md, ROBOT_CONFIG.md.
Skill names (examples from the README index; parameters in SKILLS_REFERENCE.md):
Category |
Registered |
|---|---|
Single arm |
|
Dual arm |
|
Navigation |
|
Joint / session / env |
|
Datagen workspace used in the README is examples/IsaacSim inside lerobot_ros2 (contains robots/). Robot-specific notes, including wheeled-arm FiveAges W2 dual-arm tasks, are next to those trees (e.g. robots/FiveAges_W2/README.md).
CLIs (after ./init.sh)¶
Console scripts from composer pyproject.toml: motion-generation, ros2-stack, grasp-generation, check-isaac-pose, check-robot-status.
Run from a directory that contains robots/ (usually 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 … is an optional grasp-setup UI on this branch (GRASP_GENERATION.md); it is not the recording entry and is not ros2-viser.
Isaac entity pose / joint dump helpers (check-isaac-pose, check-robot-status) need the sim and /get_entity_state as documented in the composer README.
Full CLI flag lists: robot_action_composer reference.
Next on the pipeline¶
Recording is an extra on top of this queue: same YAML task_queue, plus LeRobot plugins. Continue at LeRobot record and export.