ACTION通信

ACTION通信,第1张

action通信
  • action通信
    • 作用:
    • 实现:
      • 如何自定义action文件
        • 1.按照固定格式创建action文件
        • 2.编辑配置文件
        • 3.编译生成中间文件
      • action通信自定义action文件
        • 0.vscode的配置
        • 1.编写action服务端实现
        • 2.编写action客户端实现
        • 3.编辑CMAKELISTS.TXT

action通信 作用:

与服务通信相类似,也是采用了请求响应的模式,但与话题通信不同的是,在action通信中,服务端会连续反馈信息,客户端可以接受反馈或者取消。


一般action通信应用于耗时 *** 作中,比如路径规划。


实现: 如何自定义action文件

action/srv/msg文件内的可用类型一直,且三者实现流程类似。


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

①新建功能包
其中包含依赖roscpp rospy std_msgs actionlib actionlib_msgs
②在功能包下新建action目录
③在action文件夹中创建 .action 文件

#1.目标数据变量
int32 num
--- 
#2.最终响应变量
int32 result
---
#3.连续反馈变量
float64 progress_bar

与service很像,只是多了一个连续反馈变量而已。


2.编辑配置文件

④编辑配置文件
在CMAKELIST文件中把add_action_files那一段的注释放开,并且把文件名改了。


 add_action_files(
   FILES
   Action1.action
   Action2.action
 )

把generate_messages的注释放开
并且把std_msgs加入

 generate_messages(
   DEPENDENCIES
   actionlib_msgs
   std_msgs
 )

最后,在catkin_package中把执行时的依赖放开

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES demo01_action
  CATKIN_DEPENDS actionlib actionlib_msgs roscpp rospy std_msgs
#  DEPENDS system_lib
)
3.编译生成中间文件

⑤ctrl+shift+b编译生成中间文件
在devel/share/功能包名/msg文件夹下
devel/include下C++调用的头文件
devel/lib/python3下是Python调用的文件

action通信自定义action文件 0.vscode的配置

为了调用action的头文件不抛异常,需要进行配置。




c_cpp_properties.json
文件中添加头文件的地址

      "includePath": [
        "/opt/ros/noetic/include/**",
        "/home/hdhx/demo02_ws/src/hello_vscode/include/**",
        "/home/hdhx/demo01_ws/src/hello_world/include/**",
        "/home/hdhx/demo05_ws/devel/include/**",
        "/usr/include/**"
      ],
1.编写action服务端实现

在src下创建server的cpp文件
①包含头文件
②初始化ros节点
③创建nodehandle
④创建action_SERVER对象
⑤处理客户端提交的请求
a)解析提交的目标值
b)产生连续反馈
c)最终结果相应 通过回调函数实现
⑥spin()回旋 *** 作
在action通信中涉及模板、重载等内容,待C++学到这里之后再来补全 2022.4.2

2.编写action客户端实现 3.编辑CMAKELISTS.TXT

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/567266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存