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