-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Behavior difference for multiple TRANSIENT_LOCAL publishers #61
Comments
For scalability reasons, the In case of TRANSIENT_LOCAL DDS writers, the route is associated to a PublicationCache that will cache the data that are re-published to zenoh. This cache size is set to the history length of the first discovered Writer (1 in your case). And the cache doesn't make distinction between data published by different DataWriter (i.e. only 1 publication is cached for all the Writers). A solution would be to change the caching strategy to maintain 1 cache per-matching DDS Writer within the route. The QueryingSubscriber used by the remote bridge for the corresponding zenoh-to-dds route will at creation query and receive all cached data. However, I have a question on your use case: as far as I understood, you're using 1 |
I like the idea of having 1 cache per-matching DDS Writer as this closely resembles the behavior of ROS2. My case is where I have a realsense camera mounted on a robot. The transforms of the robot's links are describe in the URDF file and published on I still believe that this should be solved with Zenoh as the goal is to be able to replace any communication link from ROS2 without needing to adjust ROS2 specific code. |
I agree that multiple TRANSIENT_LOCAL publishers should be supported. In the meantime, I'm glad you have a workaround. |
Please refer to #64 for further discussion. |
There is a difference between the behavior of vanilla ROS2 and using Zenoh for handling communication between hosts. With 2 or more publishers (e.g.
/tf_static
) only one message will be received by late subscribers when using Zenoh while with the vanilla you would receive one message from each publisher (example with/tf_static
uses depth of one https://github.com/ros2/geometry2/blob/bd125c5af32e2c63c70b7e0ba88e57094714b9b8/tf2_ros/include/tf2_ros/qos.hpp#L66).In my setup each physical device publishes its own static transforms which makes zenoh unusable without continuously republishing the static transforms.
logs filtered on
/tf_static
:Expected result
A late subscriber to
/tf_static
should receive one message from all publishers.The text was updated successfully, but these errors were encountered: