Skip to main content

ROS 2

ROS 2 is a graph of processes that talk over typed interfaces. combeanie pins Jazzy (ROS_DISTRO=jazzy in flake.nix).

ConceptAnalogyWhen to use
PackageLibrary / crate with package.xmlShips code, config, launch
NodeLong-running process with one jobPerception, world state, coordinator
TopicPub/sub stream/joint_states, images, observations
ServiceRequest/response RPCReserve a lane, get a snapshot
ActionLong job with feedback + cancelRestock a product; survey a lane
LaunchProcess supervisorStart sim + MoveIt + task stack together

Why it matters here​

The restock pipeline is not one program. Benchmarks send a RestockProduct action goal; the coordinator talks to world-state services, MoveIt, and Gazebo adapters over topics. Debugging is graph debugging: ros2 node list, topic echo, action list.

This project​

/restock_product (action)
│
restock_action_coordinator
│ │ │
world_state svc move_group attachment / gripper topics
│
world_state_node ← /perception/*_observations
PackageOwns
restocker_interfaces.msg / .srv / .action
restocker_descriptionURDF/Xacro + geometry YAML
restocker_gazeboWorld, spawn, GT + attachment
restocker_controlControllers + telemetry
restocker_moveit_configMoveIt / move_group
restocker_world_stateSemantic inventory authority
restocker_perceptionRGB-D → observations
restocker_task_executorTask SM, projector, surveys
restocker_reasonerOptional advisory HTTP client
restocker_bringupComposition launches
restocker_benchmarksScenario client / metrics

Public surface examples: /restock_product, /world_state/get_snapshot, /perception/object_observations, /restock_action_coordinator/status.

Composition entrypoint: ros_ws/src/restocker_bringup/launch/baseline.launch.py.

References​