前言
ROS中常用的通信机制是话题和服务,但是很多场景下,这两种通信机制往往满足不了所有需求。
action通信机制,是一种带有连续反馈的上层通信机制,底层基于ROS话题通信。
一、什么是action
ROS中的actionlib功能包,用于实现action的通信机制。action类似于服务通信机制,不同之处在于action带有连续反馈,可以不断的反馈任务进度,也可以在任务过程中中止运行。
二、action的工作机制
action采用客户端/服务器的工作模式,如下:
Action客户端与Action服务端之间通过actionlib定义的action protocol进行通信,这种协议基于ROS的消息机制实现。
客户端向服务端发布任务目标以及在必要的时候取消任务,服务端会向客户端发布当前状态、实时反馈和任务执行的结果。如图: