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 namegeneric_sync_node
Executableros2 run exo_stack sync
Instances×1

Subscribed topics

TopicDescriptionMessage type
/<hub topic> (each hub)the hub messages to be matchedsensor_msgs/LaserScanhub layout

Published topics

TopicDescriptionMessage type
/synced_sensorsthe channels of all hubs, for each matched setstd_msgs/Float32MultiArraysynchronized channels layout
/sync_triggerclock reference for the hubs, 5 Hz in trigger modestd_msgs/Int32sync trigger layout

Configuration

The keys that name or shape the topics above; every key is explained in Configuration.

KeyMeaning
hubs.<hub>.topictopic of the hub
hubs.<hub>.sensorschannel names, in publication order
slop_timematching tolerance, s (default 0.01)
output_topicname of the synchronized topic (default /synced_sensors)