目录
一、卸载有问题的PCL1.7
二、编译&&安装PCL1.8.1
2.1、安装PCL依赖
2.2、编译VTK
2.3、编译PCL源码
三、 总结
写这篇博客时,本文方法已经在笔记本Ubuntu和VM虚拟机成功安装PCL1.8.1,并且通过测试。 下文方法同样适用于ubuntu18.04。通过以下命令可以快速安装pcl1.7.1,但是不推荐,因为在ubuntu16.04中,由于vtk版本原因造成一些bug,这里不想深究,所以,打算自己编译。
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl
sudo apt-get update
# for ubuntu 16.04
sudo apt-get install libpcl-dev
# for ubuntu 14.04
#sudo apt-get install libpcl-all
一、卸载有问题的PCL1.7
sudo rm -r build
sudo rm -r /usr/include/pcl-1.7 /usr/share/pcl /usr/bin/pcl* /usr/lib/libpcl*
执行上述命令, 上述四个目录中,可能会找不到某些目录。可以自己去 usr 目录下搜索 关键字 pcl 或者 libpcl。本人在目录 /usr/libx86_64-linux-gnu 下找到 相关libpcl*文件,删除即可,删除命令同上。
二、编译&&安装PCL1.8.1
pcl的可视化库版本关系【你要是不知道其他版本的对应的vtk版本,推荐可以去下载pcl源码,去 3rdparty文件夹路径下查询vtk版本】:
-> pcl-1.7.2 vtk-5.10.1 / vtk-6.2.0 -> pcl-1.8.1 vtk-7.1.1 -> pcl-1.9.1 vtk-8.2.0(建议8.1)
这让人想起非线性优化库 G2O 安装时,不同版本的G2O也需要不同版本的 libqglviewer类似。本文安装PCL1.8.1,所以选择VTK-7.1.1。在此之前先执行以下命令安装 PCL底层依赖(逐行执行)。PCL依赖的库很多,例如:QHull(查找凸包算法)、VTK(可视化)、Flann(最近邻搜索算法)、Eigen、Boost、OpenNI2(这个库可以提供当年一些供应商提供的设备的驱动,例如:Kinect2.0...为什么是当年? 首先OpenNI2 在N年前已经停止维护,PCL提供接口的一些设备如:深度相机也已经停产,所以...鸡肋);PCL本身提供的三维视觉算法不算很多,顺便:PCL这个库体验跟opencv等开源库比起来...,或许以后会去学习CloudCompare开源算法。
2.1、安装PCL依赖
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 libboost-all-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 libopenni-dev libopenni2-dev
sudo apt-get install libx11-dev libxext-dev libxtst-dev libxrender-dev
sudo apt-get install libxmu-dev libxmuu-dev
sudo apt-get install build-essential libgl1-mesa-dev libglu1-mesa-dev
注意:这里 libopenni2-dev 也许会显示无法安装,换一个软件源就行了,我是换到aliyun了。
VTK7.1.1下载链接:https://www.jianshu.com/go-wild?ac=2&url=https%3A%2F%2Fwww.vtk.org%2Ffiles%2Frelease%2F7.1%2FVTK-7.1.1.zip
PCL1.8.1下载链接:https://codeload.github.com/PointCloudLibrary/pcl/zip/pcl-1.8.1
如果出现以下错误:
note: in the ubuntu18.04,we can not find the libflann1.8!!! ,
解决办法:
but i have found the "libflann1.9"by using the conmad"apt-cache search libflann", and just install it, ojbk!!!
2.2、编译VTK
cd VTK-7.1.1
mkdir build && cd build
cmake ..
cmake-gui ###操作见下面文字###
make
sudo make install
勾选“VTK_GROUP_QT”,改“VTK_QT_VERSION” = 5,将CMAKE_BUILD_TYPE 改为Release(图中还没改,懒得换图,图也是盗的,见文末链接),点击Configure,generate【最后一次config应该是所有红色部分消失】
很不幸,在虚拟机中用cmake-gui配置Qt版本时候报错(这跟虚拟机没什么关系,可能原因是Qt版本),如下图:
这里起初的想法是,更换一个Qt版本?太麻烦。既然缺少某个Qt库,可以使用如下指令搜索:
# 这条指令价值500块apt-cache search Qt5X11Extras
# 显示结果如下
libqt5x11extras5 - Qt 5 X11 extras
libqt5x11extras5-dev - Qt 5 X11 extras development files
# 这里安装其中一个库
sudo apt-get install libqt5x11extras5-dev
接着对于VTK,我们关闭并重新打开cmake-gui,重新生成,顺利生成, 别忘记sudo make install 。还可能在cmake-gui的时候,遇到无法找到 Qt5_DIR-NOTFOUND 。由于没有安装,所以这里要提前安装好Qt5。我这里选择Qt5.9.9,装完以后,还是不能自动检测到Qt路径,手动添加吧,如下图:
点击configure,直到红色消失,然后点击Generate。
2.3、编译PCL源码
接着解压、编译、安装PCL
cd pcl-1.8.1
mkdir build && cd build
cmake ..
cmake-gui ###操作见下面文字###
make -j4 ###编译要好久,别开太多东西,小心卡机###
sudo make install
检查Qt5的路径,检查vtk版本,选择openni2,点击Configure,generate
注意:在安装PCL的时候,看清楚...,不要直接用命令行 cmake... 这样会直接默认生成releasse,我们这在cmake-gui中手动设置,如图,
debug和release版本各有自己的优势和缺陷。 debug版本为了追求更全面的调试信息而放弃了速度; release版本为了追求性能优化而抛弃了调试信息。如果用户既需要调试代码,又无奈于debug版本的速度,那么你便可以开始考虑RelWithDebInfo这个版本了。顾名思义,从这个模式的名称来看,它是一种含有调试信息的Release版本。那么它相当于是结合了Debug和Release版本的优点的一个版本。以下是Stackoverflow上面的关于比较Debug和RelWithDebInfo版本区别的描述: http://stackoverflow.com/questions/1239845/build-mode-relwithdebinfo
本人在ubuntu下用的IDE为Clion,我们这里重新编译并安装好PCL之后,在clion->File->Setting->ToolChains 中首先将调试器改为 GDB(这个很关键,这样让本来就很卡的Clion在调试的时候,速度变换了许多,)继续再将CMake的build type改为RelWithDebInfo,编译速度也加快了。以上..., 否则使用CLion调试PCL中的的 pcl::PointXYZ 类型变量,很痛苦。
三、 总结
1、上面安装VTK可视化库,记得改为Release。
2、安装PCL的时候,如果不知道命令行怎么设置为:按RelWithDebInfo方式编译,可以用cmake-gui设置为这种方式,
3、CLion将工具链的调试器设置为GDB,将CMake的生成类型设置为RelWithDebInfo(缓解卡B带来的痛苦...)
4、由于从PCL1.7.1更换PCL1.8.1版本,之前基于CLion构建的工程全部作废,新建工程再写吧(理论上将 相对目录下的生成的中间文件手动rm 掉是可以的,懒得折腾,索性重建工程)