Closed phil-opp closed 6 months ago
I thought that it might be related to https://github.com/jhelovuo/ros2-client/issues/14#issuecomment-1810143335 and https://github.com/jhelovuo/ros2-client/commit/42a1f85948928eb15ddbab322bc4b45870f2da4c#diff-7e763e421256aad22d1c6e12c6bbb596f6470f61129bae27e8835580be545439R12-R16, but I think the fact that it behaves the same on iron and humble indicates that this is something else.
Someone else from our team just tried to reproduce this issue, but it worked as expected for them on humble. So I probably did something wrong when I switched from iron to humble for testing. I'll investigate more and report back.
So I tried rebooting, cargo clean
, etc., but I still can't get the ros2_service_client
example to work if the service is started first.
However, the async_service_client
example works without any issues:
❯ cargo r --example async_service_client
Finished dev [unoptimized + debuginfo] target(s) in 0.06s
Running `target/debug/examples/async_service_client`
Press Ctrl-C to quit.
ERROR rustdds::network::udp_listener > UDPListener::new_multicast() not implemented for IpV6
ERROR rustdds::network::udp_listener > UDPListener::new_multicast() not implemented for IpV6
ERROR rustdds::network::udp_listener > UDPListener::new_multicast() not implemented for IpV6
ERROR rustdds::network::udp_listener > UDPListener::new_multicast() not implemented for IpV6
ERROR rustdds::network::udp_sender > UDPSender::new() not implemented for IpV6
ERROR rustdds::network::udp_sender > UDPSender::new() not implemented for IpV6
>>> waiting for Server to appear.
>>> waiting for Server to appear.
>>> request sent a=3 b=3, SequenceNumber(1)
<<< response error WriteError(WouldBlock { data: () })
>>> request sent a=1 b=6, SequenceNumber(2)
<<< response: AddTwoIntsResponse { sum: 7 }
>>> request sent a=4 b=2, SequenceNumber(3)
<<< response: AddTwoIntsResponse { sum: 6 }
This is very surprising to me, as I would expect the sync and async variants to behave the same way.
New version 0.7.0 or ros2-client
has been released. This version contains bug fixes relating to Services.
Please try again with the latest release. I tested interoperability of both synchronous and async service client and server, and they worked for me in the release candidate.
Thanks a lot! I tried both the sync and async client examples and I can no longer reproduce the issue with the new version. So this seems to be fixed.
The
ros2_service_client
only receives replies if theexamples_rclcpp_minimal_service
is started afterwards. If it's already running, theros2_service_client
requests never receive any replies.I tried it with both humble and iron.
Steps to reproduce
ros2 run examples_rclcpp_minimal_service service_main
cargo r --example ros2_service_client
I'm running the latest
master
commit db85ada.Details
If terminal 1 is started before terminal 2, I get the following output in terminal 2:
...and so on. There is no output in terminal 1. It looks like the requests are never received, so no responses are generated
If terminal 2 is started before terminal 1, it works as expected. I get the following output:
In Terminal 2:
In Terminal 1: