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了
大家共勉