SLAM入门(1):点云库PCL源码编译安装和以及在QT中的使用

一、前言

PCL(Point Cloud Library)是在吸收了前人点云相关研究基础上建立起来的大型跨平台开源C++编程库,也就是C++模板库。基于以下第三方库:Boost、Eigen、FLANN、VTK、CUDA、OpenNI、Qhull,它实现了大量点云相关的通用算法和高效数据结构,涉及到点云获取、滤波、分割、配准、检索、特征提取、识别、追踪、曲面重建、可视化等。支持多种操作系统平台,可在Windows、Linux、Android、Mac OS X、部分嵌入式实时系统上运行。如果说OpenCV是2D信息获取与处理的结晶,那么PCL就在3D信息获取与处理上具有同等地位,PCL是BSD授权方式,可以免费进行商业和学术应用[1]

二、源码安装PCL点云库

PCL官方网站提供了命令行的安装方式,虽然相对方便(不知道下载会不会卡住),但是后续想看一下源码也是个麻烦事。如果涉及到后续开发的话最好还是进行源码安装,在github中直接搜索到的是master版本的pcl,在下载编译的时候总是出现一个错误:找不到“Eigen::Init”,在Eigen中确实也没有“Eigen::Init”,而是“Eigen::Matrixd::Iint”or"Eigen::Vectorxd::Iint",开始以为是Eigen版本的问题,换了几个版本的还是不行,浪费时间啊啊啊。其实我们应该下载的是release的版本,这才是我们需要的(Github还是用的少啊)。个人觉得master版本好像是最新的开发版本,可能存在一些Bug,release版本就相当于发行版,以后安装一些库的时候需要注意这个问题。源码安装PCL点云库,可以参考这位博主的博客,写得很好,在这里重复一遍。

1.安装相关依赖包

Pcl必须依赖的库:Boost, Eigen, FLANN, VTK可选:OpenNI2, Qhull:
编译PCL库需要下载并编译一系列的PCL依赖的第三方库:
1)boost,用于共享指针和线程操作,必需;
2)eigen,用于矩阵、向量等数据操作,必需;
3)flann,用于kd树模块中快速临近搜索,必需;
4)qhull,用于凹面或凸面的外包求解,可选;
5)qt,用于UI开发,可选;
6)openNI,用于与OpenNI兼容的设备获取点云,可选;
7)VTK(visualization ToolKit),在可视化模块中用于3D点云渲染和可视化,必需;
8)googletest,用于建立测试单元,可选;
9)MPI,用于集群上高性能计算,可选;
了解了这些地方库的功能后,在建立xcode下面的工程是可以进行参考添加相应的库及搜索路径[2]

sudo apt-get install g++
sudo apt-get install cmake cmake-gui
sudo apt-get install doxygen
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 libvtk6-dev libvtk6.2 libvtk6.2-qt
sudo apt-get install 'libqhull*'
sudo apt-get install libusb-dev
sudo apt-get install libgtest-dev
sudo apt-get install git-core freeglut3-dev pkg-config
sudo apt-get install build-essential libxmu-dev libxi-dev
sudo apt-get install libusb-1.0-0-dev graphviz mono-complete
sudo apt-get install qt-sdk openjdk-9-jdk openjdk-9-jre
sudo apt-get install phonon-backend-gstreamer
sudo apt-get install phonon-backend-vlc
sudo apt-get install libopenni-dev libopenni2-dev

2.下载源码包和安装

源码地址:https://github.com/PointCloudLibrary/pcl/releases/tag/pcl-1.9.0
下载卡住换网络,再不行手机开热点,再不行换手机运营商的数据等等这些骚操作要熟,别问我怎么知道的。。。
将压缩包解压之后就是cmake常规操作:

cd pcl-pcl-1.9.1/
mkdir build
cd build/
cmake -DPCL_DIR=/usr/local/share/pcl-1.9 ..
make -j4
sudo make install

编译时如果遇到 warning: multi-line comment [-Wcomment] // a & b \\ ^,不必管它
最后代码就安装到了系统目录/usr/local下

3.QT调用PCL点云库

在pro文件中加入所包含的库以及路径[3]

INCLUDEPATH += /usr/include/eigen3

INCLUDEPATH += /usr/include/vtk-6.2
LIBS += /usr/lib/x86_64-linux-gnu/libvtk*.so

INCLUDEPATH += /usr/include/boost
LIBS += /usr/lib/x86_64-linux-gnu/libboost_*.so

INCLUDEPATH += /usr/local/include/pcl-1.9
LIBS += /usr/local/lib/libpcl_*.so

main.cpp中加入如下代码:

#include <pcl/visualization/cloud_viewer.h>
#include <pcl/io/io.h>

int main()
{
    pcl::visualization::CloudViewer viewer("Cloud Viewer");
    pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>());
 
    //正方体点云
    for(int i=0; i<20; i++)
    {
        for(int j=0; j<20; j++)
        {
            for(int k = 0; k<20; k++)
            {
                cloud->push_back(pcl::PointXYZ((i-10)/1.0f, (j-10)/1.0f, (k-10)/1.0f));
            }
        }
    }
 
    viewer.showCloud(cloud);
 
    while(!viewer.wasStopped());
 
    return 0;
}

在这里插入图片描述
参考文献:
1.https://baike.baidu.com/item/PCL/19917263?fr=aladdin
2.https://blog.csdn.net/gflytu/article/details/46480797?locationNum=7
3.https://blog.csdn.net/hy2014x/article/details/100980326

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值