发布者和订阅者之间在主题上传递消息。这个非常有用,但这并不是一劳永逸的通信解决方案。
有时候,我们需要请求响应模式(request response pattern)。对于这种类型的互动,ROS提供了我们所谓的服务(services)。
和主题一样,服务允许节点间传递信息。但是,和主题不同,服务不是信息转移通路,它没有相关联的发布者和订阅者。相反,节点通过服务互动时,它们是一对一的,使用请求和响应消息沟通。
例子:假设行为执行器节点想要捕捉来自摄像头的一幅图像,我们只需要让它订阅摄像头图像主题即可。接下来,每次摄像头发布一幅新图像时,它都会收到。
但是,有时候这并不可行。比如,有时执行器只想偶尔捕捉一次图像。这时,我们不订阅摄像头图像主题,我们为摄像头节点定义一个新服务,我们称之为图像捕捉服务。请求信息服务可以是一个定制信息类型,叫做曝光时间,响应可以是一个图像类型,向图像捕捉服务发起服务调用后,行为执行器节点或任何其他类似节点都能请求摄像头根据给定曝光时间和设置捕捉一幅图像。然后,摄像头节点会响应请求,发送一条包括结果图像的消息。
上一篇
下一篇