1. 程式人生 > 實用技巧 >ROS之自定義服務資料

ROS之自定義服務資料

在我們編譯原始碼時,會經常遇到以下問題:

/home/zztsj/catkin_ws/src/AS_6Dof_Arm/as_arm_control/src/check_collision.cpp:11:10: fatal
error: as_arm_description/CheckCollisionValid.h: 沒有那個檔案或目錄
#include <as_arm_description/CheckCollisionValid.h>

找不到我們自定義資料生成標頭檔案,對於這個問題,稍微講一下心得。我是以服務資料為例。

1.在當前軟體包呼叫自定義服務資料

在ROS中的服務資料可以自定義,然後在當前軟體包呼叫,就不需要關注路徑了。

首先建立一個服務型別的資料型別的srv檔案:

AddTwoInts.srv

int64 a
int64 b
---
int64 sum

package.xml檔案配置沒有什麼區別,就是新增依賴就行

然後開啟CMakeLists.txt檔案,新增如下配置

add_service_files(

FILES

AddTwoInts.srv

)

然後編譯成功,就可以呼叫AddTwoInts.h了

2.在其他軟體包呼叫自定義服務資料

在ROS中的服務資料可以自定義,然後在當其他軟體包呼叫,這就需要關注路徑了。

首先建立一個服務型別的資料型別的srv檔案:

AddTwoInts.srv

int64 a
int64 b
---
int64 sum

package.xml檔案配置沒有什麼區別,就是新增依賴就行

然後開啟CMakeLists.txt檔案,新增如下配置

add_service_files(

FILES

AddTwoInts.srv

)

include_directories(
${catkin_INCLUDE_DIRS} /home/zztsj/catkin_ws/devel/include/ 新增你自己的路徑
)

然後編譯成功,就可以呼叫AddTwoInts.h了

大家共勉