-
Notifications
You must be signed in to change notification settings - Fork 421
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
waiting for AsyncParametersClient's internal services to be ready #330
Comments
Is it possible that the lack of calling spin* while waiting for the graph event causes my problem? Maybe CoreDX can't prep its clients without some spin calls? I wanted to modify |
@BrannonKing you do not need to spin to wait for graph events because the necessary waiting is done in the https://github.com/ros2/rclcpp/blob/master/rclcpp/include/rclcpp/graph_listener.hpp |
Make sure the |
test_graph passed. I do see this one fail: test_get_node_names__rmw_coredx_cpp |
I don't have any other ideas. If this feature works in Fast-RTPS and Connext and test_graph passes, then I guess it must be a gap in the test_graph tests. Is it possible for you to test one of our other rmw implementations, like Fast-RTPS? |
I recompiled this today and it seems to work with both Fast-RTPS and CoreDX. I don't know why it didn't work with CoreDX before; perhaps something in the framework has changed over the past two weeks to resolve that stall I was seeing. I also found my linkage problem. I've put in a pull request for the above methods: #337 |
@BrannonKing Can this be closed? |
Now that the |
The current parameter CLI tool is written in C++ and we don't plan to spend any time on it. The goal is to replace it with a Python implementation in the |
Let's use it in the Python impelmentation, then. I may put in a pull request for the current tool. At ASI we're using a separate tool that loads params from YAML. The wait method will help us there. |
…tilities (ros2#330) serialize offered QoS profiles for topics in the metadata Signed-off-by: Emerson Knapp <emerson.b.knapp@gmail.com>
When sending parameters to another node using
AsyncParametersClient
on top of CoreDX middleware, there is some delay between the constructor completing and the internal clients ofAsyncParametersClient
being ready. The individual client classes haveservice_is_ready
andwait_for_service
to deal with this issue, but they aren't exposed on the parameters client. Hence, I added the two methods shown below. If I run a tight loop onservice_is_ready
&spin_some
, my internal clients are all ready to go in a few milliseconds. However, thewait_for_service
method always takes the full timeout (but doesn't return false). It appears that the clientwait_for_service
method is waiting for agraph_changed
event that never happens as these clients transition to ready. Is that a bug with rcl, rclcpp or rmw_coredx_cpp? Is there supposed to be a graph-changed event when a service/client's "is_ready" changes?You can see some other discussion on this here: tocinc/rmw_coredx#8
The text was updated successfully, but these errors were encountered: