当前位置: 华文星空 > 知识

协作臂学习(11)

2021-11-14知识

为减少ROS进程间通信使用消息包的复杂程度,避免重复和减少依赖耦合。将ROS节点进程使用的消息,单独自定义为一个纯msg_package:仅包含消息定义的ROS package。

一、配置自定义消息包

自定义消息包msg_package目录结构为内容:

action/ CMakeLists.txt include/ msg/ package.xml srv/

其中msg目录存放自定义消息文件,srv目录存放自定义请求/响应格式文件,action目录存放自定义动作格式文件。

1、package.xml 中需要添加ROS消息生成相关包的依赖

<build_depend>actionlib_msgs</build_depend> <build_depend>message_generation</build_depend> <exec_depend>message_runtime</exec_depend> <exec_depend>actionlib_msgs</exec_depend>

2、CMakeList.txt 中需要添加ROS消息生成相关包的依赖

#1.添加ROS消息生成包依赖 find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs actionlib_msgs message_generation #添加ROS消息生成 ) #2.添加msg目录自定义消息文件 add_message_files( FILES myMsgBodyA.msg myMsgBodyB.msg myMsgBodyC.msg ) #3.添加srv目录自定义格式文件 add_service_files( FILES myServiceA.srv ) #4.添加action目录自定义格式文件 add_action_files( FILES myAction1.action myAction2.action ) #5.打开消息生成依赖 generate_messages( DEPENDENCIES std_msgs actionlib_msgs ) #6.配置catkin_package依赖增加message_runtime catkin_package( CATKIN_DEPENDS roscpp rospy std_msgs actionlib_msgs message_runtime ) #7.配置include目录 include_directories( # include ${catkin_INCLUDE_DIRS} )

二、在其他包中引用自定义消息包

1、package.xml 中增加对自定义消息包的依赖

<build_depend>msg_package</build_depend> <exec_depend>msg_package</exec_depend>

2、CMakelist.txt 中增加对自定义消息包的依赖

#1. 添加自定义消息包 find_package(catkin REQUIRED COMPONENTS roscpp rospy std_msgs msg_package #添加自定义消息包 )

3、在代码中使用消息

#include "msg_package/myServiceA.h"