Overview#
The inference node uses standard ROS 2 messages and std_srvs/srv/Trigger. Data interfaces use KeepLast(1), best_effort, and volatile QoS.
Message interfaces#
| Direction | Name | Type and behavior |
|---|---|---|
| Subscription | /joy |
sensor_msgs/msg/Joy |
| Subscription | /cmd_vel |
geometry_msgs/msg/Twist; non-joy control mode reads linear.x, linear.y, and angular.z and clips them according to the configuration |
| Conditional subscription | perception_obs_topic |
std_msgs/msg/Float32MultiArray; selected by the policy configuration |
| Subscription | /joint_ref_states |
sensor_msgs/msg/JointState; interrupt path |
| Publication | /action, /joint_states |
sensor_msgs/msg/JointState |
| Publication | /imu |
sensor_msgs/msg/Imu; the current implementation populates orientation and angular_velocity, but not linear_acceleration |
Interfaces are enabled by the selected policy. /depth_obs is used for RPO parkour; when integrating other policies, verify perception_obs_topic and the observation layout.
Trigger services#
| Service name | Purpose |
|---|---|
init_motors / deinit_motors |
Initializes / deinitializes motors |
start_inference / stop_inference |
Starts / stops policy inference |
read_joints / read_imu |
Updates the corresponding software cache |
refresh_joints |
Requests motor feedback and updates the cache |
reset_joints |
Starts an asynchronous joint reset |
set_zeros |
Sends zeroing commands; rejected while inference is running |
clear_errors |
Sends motor error-clear requests |
Services are registered with relative names. With no namespace, they can be accessed as /name by default; when a namespace is used, query the actual paths first.
Interpret responses#
start_inference checks that motors are initialized and inference is not already running. A successful response from reset_joints and the message Joint reset started only mean that the asynchronous reset has started, not that the motion is complete. A successful response from clear_errors means the callback completed; device feedback and state must still be checked to confirm fault recovery.
Commands for inspecting interfaces only:
ros2 topic list
ros2 service list
ros2 topic info /joint_statesQuery interfaces on an existing, accessible ROS graph. See Runtime entry points for the distinction between software shutdown and hardware emergency stops.