-
Notifications
You must be signed in to change notification settings - Fork 117
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
ros2cli tools for topics, services and actions not functional when using Discovery Server #499
Comments
i confirmed the same problem with ros2:rolling. (restarting daemon does not work either)
it seems to be because of this feature. CC: @MiguelCompany @richiware |
Hi @mbuijs, Thank you for your comment and the time you spent on it, it was really helpful to find the problem. This is something we have been concerned about. This failure raises from the use of ROS 2 CLI as a Daemon. There is a work-around that easily avoids this problem (in Foxy and Rolling), based on executing the ROS 2 Daemon with a specific configuration from a config file. This is the Fast DDS configuration file for the ROS 2 Daemon:
This file could be set as default configuration file with the env var Executing these commands in 4 different terminals will produce the expected behavior. T1 - DAEMON + SERVER
T2 - LISTENER
T3 - TALKER
T4 - ROS2 INTROSPECTION (could be T1 unsetting
This solution will be added to the ROS2 Index Discovery Server tutorial as soon as possible. |
Thanks for your quick and thorough response, I can confirm that your suggestion solves the problem. One more thing though (this possibly needs it own issue?): I noticed when running the listener/talker examples that Terminal 1:
Terminal 2:
Is this due to some misconfiguration on my side perhaps? |
work-around works okay, thanks for the quick info. there is a couple of things i would like to mention about this work-around, since it changes user experience.
I understand that there is always trading-off. but at least, i think that these are clearly described in the documentation.
this does not happen to me. |
Hi @mbuijs , thanks for your feedback, I am glad to hear that is working properly already. About the second issue, I am sorry to tell that I could not replicate it in my computer. |
Regarding these two issues.
Summarizing: it creates a participant that is also a Server and it connects to the already running Server. The commands to run it would be:
Be aware that this approach is valid even if the daemon is not running with the Discovery Server configuration. But it needs at least one Server running to have connectivity.
|
@jparisu please, let me know when this valuable pieces of documentation are in a public and visible place so I can close this ticket. |
Hi @hidmic . This new version is pending of review in Fast-DDS documentation (eProsima/Fast-DDS-docs#220) where we maintain a copy of the Discovery Server Tutorial for ROS 2. Feel free to add or comment anything in the actual or future PR. |
I am glad to announce you that this explanation is merged into our Fast DDS documentation (https://fast-dds.docs.eprosima.com/en/latest/fastdds/ros2/discovery_server/ros2_discovery_server.html#ros-2-introspection) and it is expecting of review in ROS 2 Documentation (ros2/ros2_documentation#1028). Please, further comments or corrections will be welcome in this new PR. And feel free to close this issue whenever you consider appropriate. |
Regarding the new features for Fast-DDS Discovery Server that I mentioned to solve this problem, a new PR has been sent to Fast-DDS: eProsima/Fast-DDS#1763 . In this new feature, a new Together with this feature, we are working in the Discovery Server API and user experience (modifying the environment variable behaviour, adding user case features, fixing minor bugs). |
Bug report
Required Info:
Steps to reproduce issue
Following the tutorial about the Fast DDS discovery server on ROS Index: https://index.ros.org/doc/ros2/Tutorials/Discovery-Server/Discovery-Server/.
Terminal 1:
Terminal 2:
export ROS_DISCOVERY_SERVER=127.0.0.1:11811 ros2 run demo_nodes_cpp listener
Terminal 3:
export ROS_DISCOVERY_SERVER=127.0.0.1:11811 ros2 run demo_nodes_cpp talker
Communication between talker and listener is working at this point. Now open one more terminal and use some ros2cli tools to inspect what is going on
Expected behavior
This is the output when running without
ros2 topic list
andros2 node info /talker
without any additional configuration:Actual behavior
Note specifically the missing
/chatter
topic, but also the parameter services.The text was updated successfully, but these errors were encountered: