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

2018-11-18  本文已影响0人  5john家安

任务

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 <Eigen/StdVector>这个头文件

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

/usr/include/eigen3/Eigen/src/StlSupport/StdVector.h:69: error: partial specialization of ‘std::vector<T, Eigen::aligned_allocator<U> >’ after instantiation of ‘std::vector<dso::IOWrap::GraphConnection, Eigen::aligned_allocator<dso::IOWrap::GraphConnection> >’ [-fpermissive]
   class vector<T,EIGEN_ALIGNED_ALLOCATOR<T> >
         ^
/usr/include/eigen3/Eigen/src/StlSupport/StdVector.h:69: error: partial specialization of ‘std::vector<T, Eigen::aligned_allocator<U> >’ after instantiation of ‘std::vector<Eigen::Matrix<float, 3, 1>, Eigen::aligned_allocator<Eigen::Matrix<float, 3, 1> > >’ [-fpermissive]

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

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

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

结果:填坑完毕

踩坑三

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

坑:无法描述,如下图


image.png
image.png

原因:不知道

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

上一篇 下一篇

猜你喜欢

热点阅读