-
Notifications
You must be signed in to change notification settings - Fork 310
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
spawner does not work with discovery-server #1200
Comments
I was just about to start implementing a fix for #1182 when stumbling upon this. I would be nice to fix both issues with a change. @Timple crawling for nodes is one thing. From my understanding waiting for services is not an anti-pattern but the usual way to make sure your target service is actually there before calling it. Removing the |
I didn't mean to suggest waiting for a service is an anti-pattern. I was refering to the crawling. Although I don't really see the benefit of waiting for the service. Why not do the pythonic optimistic way: try the service and re-try if it failed. But great that you are looking into this 🙂 |
resolved in #1562 |
Describe the bug
The fastdds discovery server is optimized in the sense that one cannot (by default) see all nodes/topics/services.
The spawner therefor observes wrongfully that the controller_manager is not present and waits until a timeout occurs.
To Reproduce
Steps to reproduce the behavior:
fastdds discovery -i 0
export ROS_DISCOVERY_SERVER=localhost:11811 && ros2 launch ros2_control_demo_example_2 diffbot.launch.py
Expected behavior
Everything works the same as without discovery server.
Screenshots
Not helpful
Environment (please complete the following information):
Proposed solution
I think crawling nodes and services to find your other half is an anti-pattern.
We could use a pythonic "Ask forgiveness not permission" method. Try to call the service until is succeeds or a timeout is reached.
Can you agree on such an implementation? Than we could implement this.
The text was updated successfully, but these errors were encountered: