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

asked 2020-05-30 23:14:05 -0500

DangTran gravatar image

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 (, 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.

edit retag flag offensive close merge delete


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

gvdhoorn gravatar image gvdhoorn  ( 2020-05-31 04:18:51 -0500 )edit

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.

DangTran gravatar image DangTran  ( 2020-05-31 09:59:17 -0500 )edit

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.

gvdhoorn gravatar image gvdhoorn  ( 2020-05-31 12:08:58 -0500 )edit

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.

stevemacenski gravatar image stevemacenski  ( 2020-05-31 13:11:57 -0500 )edit