[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第1张图片

        同样《视觉slam十四讲》第五讲安装pcl时出现的问题,感谢@Eminbogen的文章中遇到过相似问题,并提出了思考方向,为解决这个问题提供了帮助。之前在这里反复卸载安装opencv和pcl很多次,尽管在安装过程中并没有任何报错。我出现问题的情况就是在usr/pcl1.9/pcl中找不到visualization文件夹及其头文件。

        文章:Ubuntu系统安装PCL 1.9及以上版本  中提到,是因为cmake版本过低无法支持更高版本的pcl,因此根据其所说的下载并安装了cmake-3.13.4。 安装方法参考:Ubuntu16.04下安装最新版本的CMake 。经过检验已经成功安装了cmake。按照如上方法尝试并重新安装pcl,发现还是没有visualization文件夹。

        根据文章:Ubuntu16.04 安装配置 PCL1.9  得知,可能是vtk出了问题,因为vtk会影响可视化。于是下载了vtk7.1.1安装,但是查看vtk版本的时候还是总是提示没有安装vtk。

        因此进行了两个操作,第一个:

 sudo apt install tcl-vtk

这个方法有时候会出现联网问题,但是安装完成后查看vtk的版本的时候明显有反应了。

第二个操作,根据 Ubuntu16.04 安装配置 PCL1.9  建议,安装了vtk6.2版本。

sudo apt-get install libvtk6.2 libvtk6.2-qt libvtk6-dev

然后按照文中所述重新编译安装pcl1.9

     cd pcl
     mkdir release
     cd release
     cmake -DCMAKE_BUILD_TYPE=None -DCMAKE_INSTALL_PREFIX=/usr \
           -DBUILD_GPU=ON -DBUILD_apps=ON -DBUILD_examples=ON \
           -DCMAKE_INSTALL_PREFIX=/usr ..
     make -j8 #根据性能/-j4或不加,否则可能相当卡

     sudo make install

结果终于在头文件中找到了visualization文件夹!

但是在make过程中也出现了visualization相关的warning提示,一度十分担心是否会成功:

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第2张图片

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第3张图片

最终测试效果:

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第4张图片

运行joinMap时,遇到以下问题

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第5张图片

还是vtk出了问题,完蛋。重新安装vtk。

安装了vtk-7.1之后,发现cmake链接的还是vtk-6.2。于是查找所有安装软件,发现其中安装了三个版本到vtk,因此删掉了5.10和6.2版本,重新编译安装vtk、pcl。然后运行joinMap结果如下:

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第6张图片

恭喜解锁新的报错:找不到PCL_COMPONENT

按照PCL官方给出的方法改写了原来的cmakelists(灰色为原来部分),参考:用CMake链接PCL。

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第7张图片

重新cmake不报错:

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第8张图片

这下应该可以运行了吧:

[Ubuntu + PCL]fatal error: pcl/visualization/pcl_visualizer.h: 没有那个文件或目录_第9张图片

真的很难保持微笑了,经过调试,发现问题出现在代码段:

    for ( int i=0; i<5; i++ )
    {
        boost::format fmt( "./%s/%d.%s" ); //图像文件格式
        colorImgs.push_back( cv::imread( (fmt%"color"%(i+1)%"png").str() ));
        depthImgs.push_back( cv::imread( (fmt%"depth"%(i+1)%"pgm").str(), -1 )); // 使用-1读取原始图像
        
        double data[7] = {0};
        for ( auto& d:data )
            fin>>d;
        Eigen::Quaterniond q( data[6], data[3], data[4], data[5] );
        Eigen::Isometry3d T(q);
        T.pretranslate( Eigen::Vector3d( data[0], data[1], data[2] ));
        poses.push_back( T );
    }

 

你可能感兴趣的:(SLAM)