我在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文件出现类似错误。
我不知道如何修复它......
由于
答案 0 :(得分:1)
我认为您最好使用ROS构建系统,它可以是 rosbuild 或 catkin ,具体取决于您使用的ROS版本。 catkin 是AFAIK的一组CMake宏,可以引入ROS依赖等。
请参阅:
答案 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>