rosetta_interfaces
August 1, 2026 ยท View on GitHub
ROS 2 action and service definitions for Rosetta.
These form the control plane (start/stop/manage). The data plane (observations, actions, rewards) is plain ROS 2 topics defined by the contract YAML.
| Interface | Kind | Server | Purpose |
|---|---|---|---|
RecordEpisode | action | episode_recorder | Record a demonstration to a rosbag |
RunPolicy | action | policy_runner | Run policy (or classifier) inference |
ManageEpisode | action | hil_manager | Orchestrate a human-in-the-loop episode |
StartHILEpisode | service | hil_manager | Start a HIL episode (returns once started) |
StartRecording | service | episode_recorder | Lightweight start of recording |
StartPolicy | service | policy_runner | Lightweight start of policy inference |
The services exist because some clients (Foxglove, for one) can call services but not actions. They are thin proxies for the action operations they are named after, and they return immediately, per the ROS 2 design guidance that services "should never be used for longer running processes."
Every action result reports how it ended, not whether it "succeeded":
- The goal's terminal
GoalStatusis the mechanics:SUCCEEDEDwhen the work reached a defined end,CANCELEDwhen a client took it away,ABORTEDwhen the server stopped it (an error, or a lifecycle deactivate). termination_reasonnames the exact cause, with the legal values declared as constants in each.action.ManageEpisodeadditionally carriesoutcome(whether the robot did the task), which is independent of how the episode ended.
Field-by-field definitions with example calls:
Actions and services reference.
The .action and .srv files in this repo are the source of truth: they are
commented, and short enough to read directly.
Build
colcon build --packages-select rosetta_interfaces
source install/setup.bash
Documentation
Full Rosetta documentation: https://iblnkn.github.io/rosetta/
License
Apache-2.0