Action
导航过程中,可以连续反馈当前机器人状态信息,当导航终止时,再返回最终的执行结果。在ROS中,该实现策略称之为:action 通信。
概念
在ROS中提供了actionlib功能包集,用于实现 action 通信。action 是一种类似于服务通信的实现,其实现模型也包含请求和响应,但是不同的是,在请求和响应的过程中,服务端还可以连续的反馈当前任务进度,客户端可以接收连续反馈并且还可以取消任务。

自定义通信格式
消息格式的定义
需要使用action通信的功能包依赖 actionlib 和 actionlib_msgs,
在功能包下新建 action 目录,使用 sum.action 文件来描述通信消息的格式。
编译规则
在功能包的 CMakeLists.txt
生成文件
编译后会生成一些中间文件。
在devel/share/包名/msg里可以看到生成的消息
使用这些消息时,如果用C++开发,包含消息头文件,在
devel/include/包名
如果使用Python开发,导入
devel/lib/python3/dist-packages/包名/msg/
C++实现
已经有需要的消息格式文件了。
去实现一个使用action通信的例子
服务端
客户端
编辑CMakeLists.txt;
需求分析
实现两个节点,客户端发送正整数,服务端计算整数和,返回结果,同时要有进度提示。
添加头文件路径
使用VSCODE开发的话,编辑c_cpp_properies.json文件
服务端
Last updated