ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

The idea behind message_filters is that it only invokes callbacks when it has messages in its queues for all subscriptions and those messages make the associated predicates true (ie: for an ApproximateTimeSynchronizer all stamps fall within a certain range of time).

Your callbacks not getting called when one of the datastreams is no longer carrying messages would seem to be expected (and desired) behaviour.

Perhaps message_filters is not the best approach for your use-case: if you could describe what you're trying to do with a little more detail, perhaps we can suggest an alternative.

The idea behind message_filters is that it only invokes callbacks when it has messages in its queues for all subscriptions and those messages make the associated predicates true (ie: for an ApproximateTimeSynchronizer all stamps fall within a certain range of time).

Your callbacks not getting called when one of the datastreams is no longer carrying messages would seem to be expected (and desired) behaviour.

Perhaps message_filters is not the best approach for your use-case: if you could describe what you're trying to do with a little more detail, perhaps we can suggest an alternative.


Edit: you could perhaps implement your own filter that behaves like you describe, using the infrastructure of message_filters. And perhaps take a look at fkie_message_filters, which offers some additional / alternative functionality.