Adding image transport message filter subscription to callback group

Correct me if I’m mistaken, but there currently doesn’t seem to be a good way of associating image transport message filters subscriptions to a node’s specific callback group. I’m using image transport message filter to synchronize stereo image topics, while designating the stereo image vs. IMU message subscriptions to mutually exclusive callback groups.

In particular the image_transport::SubscriberFilter, a child class of message_filters::SimpleFilter, constructor doesn’t match the the usual Node::create_subscription function signature, allowing for a SubscriptionOptionsWithAllocator option to specify which node’s CallbackGroup to use when spinning.

I’ll first ask if this API was intentional, or just something not yet ported with the recent addition of executors. If the latar, I could try an open a PR to extended SubscriberFilter::subscribe to take a option argument, but was noticing some TODOs about QoS deprications, and wanted to check first if this API is to be restructured in some other way soon.

Also, after adding filter subscriptions to a specified callback group, would additional changes be required to ensure any synchronization work behind the scenes be computed in same callback group? I’m a bit fuzzy on what thread the registered callback for a respective message_filters::Synchronizer would be executed under.


As a concrete example using image transport + message filter + callback groups, here are left_sub_ and right_sub_ image subscriptions registered to a synchronizer that should instead be added to callback_group_stereo_:

2 Likes

I’ll first ask if this API was intentional, or just something not yet ported with the recent addition of executors.

This is not intentional, message_filters and image_transport should match the latest-and-greatest APIs available in rclcpp.

wanted to check first if this API is to be restructured in some other way soon.

I think that’s a goal, but I don’t know if anybody has it on their roadmap for foxy, PRs would be appreciated.