當前位置: 華文星空 > 知識

協作臂學習(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"