DSO_PCL踩坑+CMake+Boost+ROS+PCL+Eigen3

任务

DSO_PCL已经实现将生成的点云保存到文件,现实现将点云基于ROS通信机制以Topic发布点云消息

踩坑一

教训:安装ROS Indigo时其实自动依赖安装了libboost1.54_dev,切记不要在自己编译安装boost的其他版本

坑:(1)有Node节点,但无此节点的Topic(2)运行到nh.advertise程序中断之类的错误

原因:DSO_PCL使用你新安装的boost库,ROS使用boost1.54版本,混用导致DSO_PCL中存在boost::thread的使用异常,程序退出

解决办法:下载boost1.54源码并编译安装

结果:填坑完毕

踩坑二

教训:在在DSO_PCL的numtype.h文件里里添加#include 这个头文件

坑:在任何地方加入#include 头文件,会定位到usr/include/eigen3/Eigen/src/StlSupport/StdVector.h有如下问题

/usr/include/eigen3/Eigen/src/StlSupport/StdVector.h:69: error: partial specialization of ‘std::vector >’ after instantiation of ‘std::vector >’ [-fpermissive]
   class vector >
         ^
/usr/include/eigen3/Eigen/src/StlSupport/StdVector.h:69: error: partial specialization of ‘std::vector >’ after instantiation of ‘std::vector, Eigen::aligned_allocator > >’ [-fpermissive]

/usr/include/eigen3/Eigen/src/StlSupport/StdVector.h:69: error: partial specialization of ‘std::vector >’ after instantiation of ‘std::vector >’ [-fpermissive]

原因:不知道,网上查也查不到,毕竟我就添加了个头文件就出现这样的问题,很幸运的用第六感解决了

解决办法:在在DSO_PCL的numtype.h文件里里添加#include 这个头文件

结果:填坑完毕

踩坑三

教训:使用boost::make_shared给boost::shared_ptr赋值,不要使用boost::shared_ptr S(new T) 这种方法

坑:无法描述,如下图


image.png

image.png

原因:不知道

解决办法:使用boost::make_shared给boost::shared_ptr赋值

你可能感兴趣的:(DSO_PCL踩坑+CMake+Boost+ROS+PCL+Eigen3)