解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd

解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd

这个问题卡了自己两周多的时间,今天在昨天师兄的提示下看一下是不是编译库的问题,但是包括之前在师兄电脑上尝试同样的环境搭建都没有出现这个错误,所以自己对于这个错误有些绝望,两周下来也有些力不从心了,因为这里是点云匹配出位姿非常重要的环节,之前也在看是不是自己的PCL库安装有问题,所以在ubuntu上直接建立点云工程编译,发现可以做到点云分割,不会报错,且用的PCL1.8库。
今天心想会不会是PCL库版本不对,因为ros自带的是pcl1.7的版本,但是同样的CMakeLists.txt文件,且同样的PCL安装路径怎么会在不同电脑上出现不一样的结果呢!虽然有些不敢相信,但是在查看自己编译过程中和师兄们编译成功的过程竟然吃惊的发现自己找到的PCL1.7版本,而师兄们找到的是PCL1.8版本。
既然找到了问题所在,那就看看怎么修改CMakeLists.txt文件来保证找到的是PCL1.8吧!在师兄们的帮助下,发现只要调换一下其中的语句顺序便可以找到PCL1.8版本,具体如下:
错误的版本:
include_directories(
include
${catkin_INCLUDE_DIRS}
${PCL_INCLUDE_DIRS}

)
link_directories( P C L L I B R A R Y D I R S ) a d d d e f i n i t i o n s ( {PCL_LIBRARY_DIRS}) add_definitions( PCLLIBRARYDIRS)adddefinitions({PCL_DEFINITIONS})

正确的版本:
include_directories(
include
${PCL_INCLUDE_DIRS}
${catkin_INCLUDE_DIRS}

)
link_directories( P C L L I B R A R Y D I R S ) a d d d e f i n i t i o n s ( {PCL_LIBRARY_DIRS}) add_definitions( PCLLIBRARYDIRS)adddefinitions({PCL_DEFINITIONS})

就是要先保证找到新的PCL1.8库再编译就可以避免找到PCL1.7

错误截图:
可以看到找到的是PCL1.7版本
解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd_第1张图片
报错截图:
解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd_第2张图片

解决后的正确编译截图和最终配准效果图:
解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd_第3张图片
解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd_第4张图片
解决ROS点云分割时出现的段错误cloud_segmentation-27] process has died [pid 17057, exit code -11, cmd_第5张图片

很开心解决了这个大bug,希望自己以后也能像师兄一样学以致用吧!

你可能感兴趣的:(PCL,填坑)