2021-04-08编译绝缘子识别代码出现的问题

3 篇文章 0 订阅
3 篇文章 0 订阅

编译绝缘子识别代码出现的问题及其解决方法

编译时报错:

CMakeFiles/recognition.dir/src/recognition_core.cpp.o: In function `EuClusterCore::point_cb(boost::shared_ptr<sensor_msgs::PointCloud2_<std::allocator<void> > const> const&)':
recognition_core.cpp:(.text+0x1e1c): undefined reference to `pcl::GeometricConsistencyGrouping<pcl::PointXYZ, pcl::PointXYZ>::recognize(std::vector<Eigen::Matrix<float, 4, 4, 0, 4, 4>, Eigen::aligned_allocator<Eigen::Matrix<float, 4, 4, 0, 4, 4> > >&, std::vector<std::vector<pcl::Correspondence, Eigen::aligned_allocator<pcl::Correspondence> >, std::allocator<std::vector<pcl::Correspondence, Eigen::aligned_allocator<pcl::Correspondence> > > >&)'
CMakeFiles/recognition.dir/src/recognition_core.cpp.o:(.data.rel.ro._ZTVN3pcl28GeometricConsistencyGroupingINS_8PointXYZES1_EE[_ZTVN3pcl28GeometricConsistencyGroupingINS_8PointXYZES1_EE]+0x58): undefined reference to `pcl::GeometricConsistencyGrouping<pcl::PointXYZ, pcl::PointXYZ>::clusterCorrespondences(std::vector<std::vector<pcl::Correspondence, Eigen::aligned_allocator<pcl::Correspondence> >, std::allocator<std::vector<pcl::Correspondence, Eigen::aligned_allocator<pcl::Correspondence> > > >&)'
collect2: error: ld returned 1 exit status
pkg_recognition/CMakeFiles/recognition.dir/build.make:333: recipe for target '/home/foia/ws_pointcloudfilter/devel/lib/pkg_recognition/recognition' failed
make[2]: *** [/home/foia/ws_pointcloudfilter/devel/lib/pkg_recognition/recognition] Error 1
CMakeFiles/Makefile2:3050: recipe for target 'pkg_recognition/CMakeFiles/recognition.dir/all' failed
make[1]: *** [pkg_recognition/CMakeFiles/recognition.dir/all] Error 2
Makefile:159: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j6 -l6" failed

错误主要为:

undefined reference to `pcl::GeometricConsistencyGrouping<pcl::PointXYZ, pcl::PointXYZ>

解决方案:

在××.cpp文件里加入缺少文件的**.hpp(对应**.h)

添加#include <pcl/recognition/impl/cg/geometric_consistency.hpp>
对应于#include <pcl/recognition/cg/geometric_consistency.h>


换成hough-3d方法试了一下,结果报错:

undefined reference to `pcl::recognition::HoughSpace3D<pcl::PointXYZ, pcl::PointXYZ>

解决方法:
修改cmakelists.txt文件,将pcl的库添加进去:
(这个方法对上面那个问题也是适用的)

cmake_minimum_required(VERSION 3.0.2)
project(pkg_recognition)


find_package(catkin REQUIRED COMPONENTS
  jsk_recognition_msgs
  pcl_conversions
  pcl_ros
  roscpp
  sensor_msgs
  std_msgs
)
find_package(PCL 1.8 REQUIRED)

set(PCL_INCLUDE_DIRS /usr/include/pcl-1.8)


catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES pkg_recognition
   CATKIN_DEPENDS jsk_recognition_msgs pcl_conversions pcl_ros roscpp sensor_msgs std_msgs
#  DEPENDS system_lib
)


include_directories(
# include
  ${catkin_INCLUDE_DIRS}
  ${PCL_INCLUDE_DIRS}
)


target_link_libraries(recognition ${catkin_LIBRARIES} ${PCL_LIBRARIES})
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值