Robotics StackExchange | Archived questions

Alternation for `call_async()` in service client for ROS2-Ardent

Hi all,

I new to ROS2 and try to follow the ROS2-tutorial about Service. I tried to implement a Client-node in ROS2-Ardent platform. The reference uses call_async() function, which are not support in ROS-Ardent (https://github.com/ros2/rclpy/blob/018b9fbf1c66f1c1c488510e0caa299fb0223277/rclpy/rclpy/client.py#L71), only call() method. Follow this link, it is said that not recommeded to work with call().

Is there any alternative way to work-around this confliction?
The Thread syntax too complicate while call_async() not supported.

Asked by DangTran on 2020-05-30 23:14:05 UTC

Comments

Could you please clarify why you are using Ardent? That ROS 2 release has been EOL for 2 years now.

Asked by gvdhoorn on 2020-05-31 04:18:51 UTC

Thanks for a quick response. I am working with a lab-server that has been developed in ROS-Kinetic in 16.04 for a long time. We want to shift our works to ROS2, the only version I can find compatible with 16.04 is Ardent. And I don't have the authority to completely change the OS.

Asked by DangTran on 2020-05-31 09:59:17 UTC

I don't know what a "lab server" is specifically, but what about using Docker or some other containerisation technology?

Ardent is really different from the current versions of ROS 2. I would not recommend creating anything new with it.

Asked by gvdhoorn on 2020-05-31 12:08:58 UTC

Definitely a +1 to @gvdhoorn’s comment. You really don’t want to be using a 5-distro old, unmaintained version. Let alone it being the first non-beta release.

Asked by stevemacenski on 2020-05-31 13:11:57 UTC

Answers