10.1.1action通信自定义action文件
action、srv、msg 文件内的可用数据类型一致,且三者实现流程类似:
按照固定格式创建action文件;
编辑配置文件;
编译生成中间文件。
1.定义action文件
首先新建功能包,并导入依赖: roscpp rospy std_msgs actionlib actionlib_msgs
;
然后功能包下新建 action 目录,新增 Xxx.action(比如:AddInts.action)。
action 文件内容组成分为三部分:请求目标值、最终响应结果、连续反馈,三者之间使用---
分割示例内容如下:
#目标值
int32 num
---
#最终结果
int32 result
---
#连续反馈
float64 progress_bar
2.编辑配置文件
CMakeLists.txt
find_package
(catkin REQUIRED COMPONENTS
roscpp
rospy
std_msgs
actionlib
actionlib_msgs
)
add_action_files(
FILES
AddInts.action
)
generate_messages(
DEPENDENCIES
std_msgs
actionlib_msgs
)
catkin_package(
# INCLUDE_DIRS include
# LIBRARIES demo04_action
CATKIN_DEPENDS roscpp rospy std_msgs actionlib actionlib_msgs
# DEPENDS system_lib
)
3.编译
编译后会生成一些中间文件。
msg文件(.../工作空间/devel/share/包名/msg/xxx.msg):
C++ 调用的文件(.../工作空间/devel/include/包名/xxx.h):
Python 调用的文件(.../工作空间/devel/lib/python3/dist-packages/包名/msg/xxx.py):