关于ROS2节点中多个服务并行的问题
-
比如在一个node中创建了ABC三个服务,想要让他们能够并行执行的时候,我是给node加了MultiThreadedExecutor,然后所有的service都加了ReentrantCallbackGroup;这样确实可以用三个client同时向这三个服务发送请求,在终端中是可以看到node接收到了这三个请求;
但是如果想要实现:A和B两个服务是可以被两个client同时发送请求进行处理,但是当处理C服务请求的时候,A和B是不可以执行的。理想的处理方式是,在处理A和B请求的时候,如果收到C的请求,那么就等待A和B处理完之后再处理C,反之亦然。
我尝试过把C的callback_group变量去掉,我这里的服务的回调函数会去订阅相机的图片,这里就会提示订阅不到;如果把C的callback_group变量改为MutuallyExclusiveCallbackGroup,感觉并没有任何影响,还是可以同时请求ABC三个服务。