前言
ROS下面使用已经编译好的ROS package是很方便的,但是大多数我们可能自己定义了一些头文件,想去直接引用,那么如何在ROS下面调用自己的定义的函数呢?
ROS下调用自定义的头文件
如下图所示,在ROS某个工程下面和源文件同级目录下建立两个文件夹,include和lib。
其中include文件夹存放.h头文件,lib文件夹存放编译生成的.so文件,.h文件对应的.cpp文件直接放在源文件同级目录下即可,比如imprcoess.cpp。这里的函数定义可以封装成动态链接库,也可以直接定义成.cpp文件。
然后修改下Cmakelist.txt
catkin_package(
INCLUDE_DIRS include
# LIBRARIES car_sensor
CATKIN_DEPENDS cv_bridge image_transport roscpp sensor_msgs std_msgs rospy
# DEPENDS system_lib
)
include_directories(
include
${catkin_INCLUDE_DIRS}
)
link_directories(
${catkin_LIB_DIRS} lib
)
find_package(OpenCV)
add_executable(camera camera.cpp)
target_link_libraries(camera ${catkin_LIBRARIES} ${OpenCV_LIBRARIES} libdximageproc.so libgxgvtl.so libgxiapi.so libgxu3vtl.so libdarknet.so)
#这里的.so文件即是动态链接库,如果编译时找不到动态链接库,请将动态链接库copy到 /usr/lib中
这里的.so文件即是动态链接库,如果编译时找不到动态链接库,请将动态链接库copy到 /usr/lib中。然后编译通过,可以rosrun啦。。。