10.1.1action通信自定义action文件

action、srv、msg 文件内的可用数据类型一致,且三者实现流程类似:

  1. 按照固定格式创建action文件;

  2. 编辑配置文件;

  3. 编译生成中间文件。

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):


results matching ""

    No results matching ""