zoukankan      html  css  js  c++  java
  • ubuntu20.04安装pcl的详细步骤和走过的坑

    由于项目原因需要用到PCL,因此在小ubuntu虚拟机上准备安装。

    根据网上的攻略,需要安装以下依赖库

    sudo apt-get update
    sudo apt-get install git build-essential linux-libc-dev
    sudo apt-get install cmake cmake-gui 
    sudo apt-get install libusb-1.0-0-dev libusb-dev libudev-dev
    sudo apt-get install mpi-default-dev openmpi-bin openmpi-common  
    sudo apt-get install libflann1.8 libflann-dev
    sudo apt-get install libeigen3-dev
    sudo apt-get install libboost-all-dev
    sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
    sudo apt-get install libqhull* libgtest-dev
    sudo apt-get install freeglut3-dev pkg-config
    sudo apt-get install libxmu-dev libxi-dev 
    sudo apt-get install mono-complete
    sudo apt-get install qt-sdk openjdk-8-jdk openjdk-8-jre
    

    然而在安装

    sudo apt-get install libvtk5.10-qt4 libvtk5.10 libvtk5-dev
    

    出现了问题,提示无法找到正确的正则表达式。

    遂三个独特安装,但都安装不上。

    上网百度之,将5.10改成5.8进行安装,发现需要的依赖项过多。只能换个方法。

    再百度之,发现通过这种方法安装vtk会出现问题,需要通过官网源码进行安装。

    去官网下载源码之后解压缩,进入文件目录

    mkdir build
    cd build
    cmake-gui
    

    使用cmake进行配置(参考网上教程图)

    image-20200928112250384

    然而又出现了新问题,在configure的时候找不到Qt5UiPlugin_DIR的路径,随百度之。

    发现是qt版本的问题,需要QT5.8以上,通过默认命令安装的版本貌似不是5.8

    sudo apt-get install qt5-default
    

    于是去官网下载最新的5.14

    image-20200928112431686

    下载之后是.run文件,需要以下命令打开

    sudo ./qt-opensource-linux-x64-5.14.0.run
    

    然而在打开时提示没有此命令。

    继续百度,发现需要修改权限(用ls文件显示安装包文件,发现文件名是白色而不是绿色,表示其不可执行。)

    chmod +x ./qt-opensource-linux-x64-5.14.0.run
    sudo ./qt-opensource-linux-x64-5.14.0.run
    

    便可正确打开,默认安装在opt/Qt5.14.0

    继续CMAKE的配置,然而还是找不到Qt5UiPlugin_DIR的路径,百度一通也无果。

    经过思考后发现路径默认还是之前的qt路径,没有修改,需要手动修改

    /opt/Qt5.14.0/5.14.0/gcc_64/lib/cmake/….

    正确修改后configure和generate成功,进入build

    make -j4
    sudo make install
    

    OK,VTK方面暂时安装完毕。下面正式进入pcl的安装

    • 不要从官网下载pcl然后自己cmake
    • 不要从git上拷贝进行cmake

    不然你就会遇到我这样的错误

    pcl

    对于ubuntu 16.04以上,可以使用一行命令进行安装

    sudo apt install libpcl-dev
    

    终于安装成功!

    image-20200928205841185

    进入程序测试。

    cmake文件:

    find_package(PCL 1.2 REQUIRED)
    include_directories(${PCL_INCLUDE_DIRS})
    target_link_libraries (YOUR_PROJECT_NAME ${PCL_LIBRARIES})
    add_executable(YOUR_PROJECT_NAME YOUR_FILE_NAME.cpp)
    

    注意第二条,有些时候PCL_INCLUDE_DIR不是pcl/…,而是pcl-1.10(以我的版本为例)/pcl/…

    所以可以把里面的pcl复制出来,就可以直接#include “pcl/…”了

    c++测试文件:

    #include <iostream>
    #include "pcl/common/common_headers.h"
    #include "pcl/io/pcd_io.h"
    #include "pcl/visualization/pcl_visualizer.h"
    #include "pcl/visualization/cloud_viewer.h"
    #include "pcl/console/parse.h"
    using namespace pcl;
    
     
    int main(int argc, char **argv) {
        std::cout << "Test PCL !!!" << std::endl;
        
        pcl::PointCloud<pcl::PointXYZRGB>::Ptr point_cloud_ptr (new pcl::PointCloud<pcl::PointXYZRGB>);
        uint8_t r(255), g(15), b(15);
        for (float z(-1.0); z <= 1.0; z += 0.05)
        {
          for (float angle(0.0); angle <= 360.0; angle += 5.0)
          {
            pcl::PointXYZRGB point;
            point.x = 0.5 * cosf (pcl::deg2rad(angle));
            point.y = sinf (pcl::deg2rad(angle));
            point.z = z;
            uint32_t rgb = (static_cast<uint32_t>(r) << 16 |
                static_cast<uint32_t>(g) << 8 | static_cast<uint32_t>(b));
            point.rgb = *reinterpret_cast<float*>(&rgb);
            point_cloud_ptr->points.push_back (point);
          }
        if (z < 0.0)
          {
            r -= 12;
            g += 12;
          }
        else
          {
            g -= 12;
            b += 12;
          }
        }
        point_cloud_ptr->width = (int) point_cloud_ptr->points.size ();
        point_cloud_ptr->height = 1;
        
        pcl::visualization::CloudViewer viewer ("test");
        viewer.showCloud(point_cloud_ptr);
        while (!viewer.wasStopped()){ };
        return 0;
    }
    

    image-20200928211206988

  • 相关阅读:
    dirname basename 截取路径中的目录以及文件名
    Singleton 单例模板
    人生最后一个10年-白银时代
    自动填充英文字母序列
    关于最近使用文档的几个技巧
    关于最近使用文档的几个技巧
    The King of Excel Geek 0.1版本
    Tkinter 学习
    test
    检测电话号码的python程序(一)
  • 原文地址:https://www.cnblogs.com/linzzz98/p/13746949.html
Copyright © 2011-2022 走看看