Skip to main content

Simulation and control

Gazebo Harmonic is the acceptance simulator. The classical control path below MoveIt is ros2_control → gz_ros2_control → Gazebo joints.

FollowJointTrajectory (arm / rail / gripper)
│
▼
controller_manager → gz_ros2_control → Gazebo joints
│
└── joint_state_broadcaster → /joint_states
→ joint_state_telemetry_adapter → RobotTelemetry

Deployed composition​

just launch-baseline starts the stack below, sensor-driven by default: the wrist tray duties own the world state's object ingest topic and the wrist lane survey its lane topic, with simulator ground truth demoted to /perception/ground_truth/* for the evaluators. The overhead camera stays on and is used for obstacle detection only (depth_obstacle_node, obstacle boxes on); the overhead object pipeline and the reasoner are off by default.

just launch-baseline composition
Enabled by default: wrist perception · lane survey · depth obstacles. Opt-in: coordinated tray survey / campaign · overhead object perception · reasoner.

just launch-sim starts Gazebo + control + world state (+ optional perception) without MoveIt or the coordinator. See How to run.

What simulation owns​

ConcernPackage / artifact
World SDF, products, scenariosrestocker_gazebo
Attachment system pluginattachment_system.cpp
Ground-truth observationsground_truth_adapter
Attachment ROS adapterattachment_adapter_node (baseline)
Controllersrestocker_control/config/controllers.yaml

Arm and rail use velocity (+ feed-forward) controllers; the gripper stays position-controlled. Attachment is capability-authorized through the ROS adapter; do not call raw Gazebo Transport set APIs from application code.

References​