Skip to content
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

show QoS setting of pubs / subs, option to choose transient local #156

Closed
dirk-thomas opened this issue Nov 7, 2018 · 8 comments
Closed
Assignees
Labels
enhancement New feature or request

Comments

@dirk-thomas
Copy link
Member

Since transient local doesn't get matched with non-transient local the command line tools might only work with some topics. It would be good if these QoS settings would be visible and an options added to use transient local in the tool in order to match with other transient local entities.

@dirk-thomas dirk-thomas added the enhancement New feature or request label Nov 7, 2018
@stonier
Copy link

stonier commented Feb 7, 2019

If possible, even better if, e.g. rostopic echo is able to detect the type of publisher and the subscriber configures itself to be compatible.

@dirk-thomas
Copy link
Member Author

If possible, even better if, e.g. rostopic echo is able to detect the type of publisher and the subscriber configures itself to be compatible.

This might work if all publishers use the same QoS but if they are heterogeneous an option to choose is required.

@stonier
Copy link

stonier commented Feb 7, 2019

Assuming the ros2 topic echo node can introspect on the QoS settings of the publisher, wouldn't it be just a matter of matching durability and reliability settings (as per tables here)?

@dirk-thomas
Copy link
Member Author

wouldn't it be just a matter of matching durability and reliability settings

Are you implying to create multiple subscribers? If yes, how do you make sure to not receive duplicates?

@stonier
Copy link

stonier commented Feb 10, 2019

Are you implying to create multiple subscribers?

  1. Introspect the QoS settings of the publisher (if it's possible)
  2. Configure QoS settings on the subscriber that are compatible

@dirk-thomas
Copy link
Member Author

dirk-thomas commented Feb 10, 2019

How about the scenario I mentioned above: two publishers with different QoS? There might be no QoS setting for a single subscriber which allows to receive messages from both.

@stonier
Copy link

stonier commented Feb 10, 2019

Aye, sorry - makes sense. I was getting distracted fumbling in the dark with problems on pubs/subs that have different QoS.

So, learning that concept of a topic really is a more complex beast. Given that it can mask multiple, independent flows of data, both ros2 topic list and rqt_graph no longer tell the complete story about how data is moving around a runtime system. That complexity seems like a shame, but given the non-centralised and asynchronous connection handling, I can't see how you can eat that cake and get all the QoS goodies at the same time. Would be curious to learn what thoughts you had on this.

Nonetheless, it would still be easy to manually orchestrate a robot launch to separate topics for incompatible connections, e.g. /lidar/cloud/reliable and /lidar/cloud_unreliable and you'll get that simple architecture for free, but development/debugging tools on the command line would still be eminently useful.

Example use case that would have been useful for me recently (on topics):

  • Introspect a running topic to determine the QoS settings of publishers (rostopic list, rostopic info)
  • rostopic echo <topic_name> be automagically compatible when it can and falls back to ...
  • rostopic echo <topic_name> interactively assisting (choose publisher to conform to?) if there is ambiguity
  • rostopic echo <qos-settings> <topic_name> manually for bash scripts, or spinning up a subscriber in advance

@dirk-thomas
Copy link
Member Author

both ros2 topic list and rqt_graph no longer tell the complete story about how data is moving around a runtime system.

In its current form no, but there is no reason both of these tools couldn't be updated to consider the QoS and provide more detailed accurate information.

Example use case that would have been useful for me recently (on topics):

👍

esteve pushed a commit to esteve/ros2cli that referenced this issue Dec 16, 2022
* signit executes the shutdown event synchronously

* line length

* avoid split parameter indention
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants