将PCL库与ROS链接

时间:2014-05-15 10:42:34

标签: linker header-files point-cloud-library ros

我在ubuntu中安装了ROS和PCL ...... 我的代码中的导入是:

#include <pcl/io/pcd_io.h>
#include <pcl/point_cloud.h>
#include <pcl/correspondence.h>
#include <pcl/features/normal_3d_omp.h>
#include <pcl/features/shot_omp.h>
#include <pcl/features/board.h>
#include <pcl/keypoints/uniform_sampling.h>
#include <pcl/recognition/cg/hough_3d.h>
#include <pcl/recognition/cg/geometric_consistency.h>
#include <pcl/visualization/pcl_visualizer.h>
#include <pcl/kdtree/kdtree_flann.h>
#include <pcl/kdtree/impl/kdtree_flann.hpp>
#include <pcl/common/transforms.h>
#include <pcl/console/parse.h>

当我用这个CMakeLists编译程序时:

cmake_minimum_required(VERSION 2.6 FATAL_ERROR)
project(correspondence_grouping)
find_package(PCL 1.3 REQUIRED COMPONENTS common io)
include_directories(${PCL_INCLUDE_DIRS})
link_directories(${PCL_LIBRARY_DIRS})
add_definitions(${PCL_DEFINITIONS})
add_executable(correspondence_grouping correspondence_grouping.cpp)
target_link_libraries(correspondence_grouping ${PCL_COMMON_LIBRARIES}${PCL_IO_LIBRARIES})

出现此错误:

In file included from /opt/ros/fuerte/include/pcl-1.5/pcl/io/pcd_io.h:43:0,
             from /home/user/Desktop/PCL/Grouping/correspondence_grouping.cpp:1:
/opt/ros/fuerte/include/pcl-1.5/pcl/point_cloud.h:46:29: fatal error: std_msgs/Header.h: No such file or directory

我是Linux和ROS + PCL的新手(我将它们用于大学项目......),我无法理解哪个是问题。

P.S。与PCL的其他cpp文件出现类似错误。

我不知道如何修复它......

由于

2 个答案:

答案 0 :(得分:1)

我认为您最好使用ROS构建系统,它可以是 rosbuild catkin ,具体取决于您使用的ROS版本。 catkin 是AFAIK的一组CMake宏,可以引入ROS依赖等。

请参阅:

http://wiki.ros.org/pcl/Tutorials

答案 1 :(得分:0)

你应该使用rosbuild环境来创建一个包(参见:[创建一个ros包]),然后把它放到你的CMakelist.txt中以使用PCL:

 ...
 find_package(PCL 1.3 REQUIRED)
 include_directories(${PCL_INCLUDE_DIRS})
 link_directories(${PCL_LIBRARY_DIRS})
 add_definitions(${PCL_DEFINITIONS})
 ...

依赖于 std_msgs 的依赖项由manifest.xml(使用包自动生成)处理,具有以下标准依赖项:

<package>
...
    <depend package="std_msgs"/>
    <depend package="rospy"/>
    <depend package="roscpp"/>
...
</package>