ExoStack / ROS 2 interfaces
Synchronizer
Matches the hub messages in time and republishes all channels as one array.
The synchronizer subscribes to every hub listed in sensors.yaml and matches their messages with an approximate-time policy (queue 5, tolerance slop_time). It starts in trigger mode, publishing /sync_trigger at 5 Hz so that every hub re-zeroes its clock; at the first matched set it switches to sync mode. If no matched set arrives for 1 s, it resets and triggers again. Repeated matches with identical stamps are dropped.
Node name
generic_sync_nodeExecutable
ros2 run exo_stack syncInstances×1
Subscribed topics
| Topic | Description | Message type |
|---|---|---|
/<hub topic> (each hub) | the hub messages to be matched | sensor_msgs/LaserScanhub layout |
Published topics
| Topic | Description | Message type |
|---|---|---|
/synced_sensors | the channels of all hubs, for each matched set | std_msgs/Float32MultiArraysynchronized channels layout |
/sync_trigger | clock reference for the hubs, 5 Hz in trigger mode | std_msgs/Int32sync trigger layout |
Configuration
The keys that name or shape the topics above; every key is explained in Configuration.
| Key | Meaning |
|---|---|
hubs.<hub>.topic | topic of the hub |
hubs.<hub>.sensors | channel names, in publication order |
slop_time | matching tolerance, s (default 0.01) |
output_topic | name of the synchronized topic (default /synced_sensors) |