简介

最近要在Ubuntu上实现3D点云SLAM程序,故需要在Ubuntu上同时使用 OpenCV和PCL库。网上关于Ubuntu单独安装Opencv/
单独安装PCL的例子很多,在Ubuntu上联合安装Opencv和PCL的例子因版本太古老,根本就实现不了。
为避免版本问题,先提供我此次安装的相关版本:
- Ubuntu16.04.04
- OpenCV3.4.0
- PCL1.7.2

此处Ubuntu版本最好为16.04.04,若为16.04.02,在装完OpenCV及PCL后容易产生“the system is running in
low-graphics mode”错误,可参考
https://blog.csdn.net/lyy14011305/article/details/76316197
<https://blog.csdn.net/lyy14011305/article/details/76316197> 解决。如果解决不了,就只能重装系统了。
Ubuntu17及18的版本就不用考虑了,SLAM相关库如g2o/ ROS/ CUDA等目前能支持的最高版本就是16.04。

OpenCV库和PCL库之间本来就存在一些冲突,安装顺序比较重要。
安装顺序最好为先安装OpenCV,再安装PCL。按此顺序安装会产生一些Bug,但这些Bug有提示,可以根据提示解决问题。


若先安装PCL再安装OpenCV,安装时比较顺利,但在CMake调用库时就会出现许多莫名奇妙的错误,比如装Kdevelop报错,调用FindOpenCV.cmake报错等等。
若只安装PCL,参照https://blog.csdn.net/we1583004we/article/details/79651299
<https://blog.csdn.net/we1583004we/article/details/79651299>即可。
在以上安装过程中,我趟了好几次雷,重装了好几次系统。故以下的安装步骤从新装好的Ubuntu系统开始。

系统环境设置

-1修改镜像源

打开Ubuntu Software,菜单选择Software & Updates,然后在download from里面,把镜像源选成清华的。


-2更新锁屏时间

因为装机时间很长,在设置里面,将锁屏时间设为never。


-3更新软件清单

控制台输入
sudo apt-get update
安装Synaptic,便于后续查找应安装的库。
sudo apt-get install synaptic

-4安装CMake

新建cmaker文件夹,去Cmaker官网下载安装包,https://cmake.org/download/
<https://cmake.org/download/>,放入路径中。
因为可能需要联合编译,最好用最新版本,要图简单就直接sudo apt-get install cmake cmake-gui 。控制台输入:
./bootstrap make -j3 sudo make install
重启
shutdown -r now

安装OpenCV

参考https://blog.csdn.net/we1583004we/article/details/79651299
<https://blog.csdn.net/we1583004we/article/details/79651299>

-1安装依赖库

考虑到后续opencv需要使用eigen,vtk 3D显示模块,推荐安装的依赖库如下:
sudo apt-get install build-essential git libeigen3-dev libgtk2.0-dev libvtk5
-dev libjpeg-dev libtiff5-dev libjasper-dev libopenexr-dev python-dev python
-numpy python-tk libtbb-dev yasm libfaac-dev libopencore-amrnb-dev libopencore
-amrwb-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev libqt4-dev
libqt4-opengl-dev sphinx-common texlive-latex-extra libv4l-dev libdc1394-22-dev
libavcodec-dev libavformat-dev libswscale-dev
-2源码编译安装

新建opencv文件夹,去opencv官网下载源文件,https://opencv.org/opencv-3-4.html
<https://opencv.org/opencv-3-4.html>,放入路径中。
进入opencv文件夹,控制台输入
mkdir build && cd build sudo cmake -D CMAKE_BUILD_TYPE=None -D WITH_TBB=ON -D
WITH_VTK=On -D WITH_V4L=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv .. sudo
make-j3 sudo make install -j3
简单的话可以cmake-gui ..然后依次点Configure和Generate按钮生成Configure文件。
其中cmake步骤中可能会下载一些文件,比较耗费时间。可以按ctrl+C中断,此时OpenCV的源文件夹路径下会出现.cache的隐藏文件。然后下载
opencv-cache.zip <https://download.csdn.net/download/u010342901/10173967>
,将其中文件解压到.cache文件夹中,里面有需要下载的东西。

设置config路径

控制台输入
sudo gedit /etc/ld.so.conf.d/opencv.conf
打开该文件加入下面的内容:
/usr/local/opencv/lib
保存后,再在控制台输入
sudo ldconfig /etc/ld.so.conf

设置环境变量

控制台输入sudo gedit /etc/bash.bashrc
在文件末尾加上
export PKG_CONFIG_PATH=/usr/local/opencv/lib/pkgconfig export
LD_LIBRARY_PATH=/usr/local/opencv/lib
保存之后,再使用命令
source /etc/bash.bashrc sudo updatedb
安装错了,就得卸载了重新安装
进入到build文件夹,控制台输入以下项
sudo make uninstall cd .. sudo rm -r release sudo rm -r /usr/local/include
/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2
/usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv
/usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv
-3修改与PCL冲突的flann文件

若先安装opencv,则需修改与opencv冲突的flann文件夹名称。
修改opencv下flann文件夹名为flann2,并查找所有引用该文件夹的文件,都修改为flann2。
控制台输入
cd /usr/local/opencv find . -type f -name '*' | xargs grep 'opencv2/flann/'
结果为
./opencv2/flann.hpp:#include "opencv2/flann/miniflann.hpp"
./opencv2/flann.hpp:#include "opencv2/flann/flann_base.hpp"
./opencv2/features2d.hpp:#include "opencv2/flann/miniflann.hpp"
./opencv2/flann2/miniflann.hpp:#include "opencv2/flann/defines.h"
分别输入
sudo gedit ./opencv2/flann.hpp sudo gedit ./opencv2/features2d.hpp sudo gedit
./opencv2/flann2/miniflann.hpp
将其中的flann改为flann2,然后
cd /usr/local/opencv/include/opencv2 sudo mv flann flann2
把flann文件夹名字改为flann2。

安装PCL

-1外网安装法

如果能上外网,恭喜你,安装方式非常简单,直接输入
sudo add-apt-repository ppa:v-launchpad-jochen-sprickerhof-de/pcl sudo apt-get
update sudo apt-get install libpcl-dev
就装好了。

-2源码安装法

很不幸啊,如果你只能在内网上自己下载源文件
git clone https://github.com/PointCloudLibrary/pcl.git
,就只能摸爬滚打地安装了。本人在此处趟雷无数,耗费了大量时间。

安装依赖库

PCL依赖的库随着PCL版本和Ubuntu版本而变化,最好去
https://github.com/PointCloudLibrary/pcl/blob/master/.travis.yml
<https://github.com/PointCloudLibrary/pcl/blob/master/.travis.yml>
中查一下。没有绝对的正确,本人推荐
sudo apt-get install linux-libc-dev 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 libpcap-dev libboost1.58-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
libproj-dev sudo updatedb
源码编译安装

进入PCL源码文件夹,控制台输入
mkdir build && cd build cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX
=/usr -DBUILD_GPU=ON -DBUILD_apps=ON -DCMAKE_INSTALL_PREFIX=/usr .. sudo make
-j3 sudo make install -j3
出错解决法

此处出错的概率是极大的,在运行程序时cmake可能会出现”/usr/bin/ld:cannot find-lxxx”,
参考https://blog.csdn.net/yiliang_/article/details/68928387
<https://blog.csdn.net/yiliang_/article/details/68928387>。
你可以去路径下以先
cd /usr/lib/ locate xxx
再ll libxxx.so libxxx*.so
若有该库,肯定是软链接的问题,通过
sudo ln -s libxxx*.so libxxx.so来解决
如果没有就sudo apt-get install libxxx.so,回头再来安装一下,就能通过了。

需要安装的软件包名字也可在Synaptic查询一下,可通过输入 boost, vtk, pcl等关键词来查询。

SLAM相关库安装

SLAM十四讲相关代码git clone https://github.com/gaoxiang12/slambook
,其中的3rdparty文件夹中有我们可以用的相关库源码。

-1源码安装Sophus

Sophus库为李群李代数的库,用于前端视觉里程计VO,相关源码在SLAM的3rdLibrary里面,
也可从git中下载
git clone https://github.com/strasdat/Sophus.git cd Sophus git checkout a621ff
然后进入源码文件夹
mkdir build && cd build cmake .. make -j3 sudo make install -j3
-2源码安装Ceres

Ceres主要用于最小二乘法求解,用于后端优化(与g2o功能相同),源码可通过git clone
https://github.com/ceres-solver/ceres-solver下载,也在SLAM的3rdLibrary里面。

安装依赖项
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3.1.4
libgflags-dev libgoogle-glog-dev libgtest-dev
编译安装
mkdir build && cd build cmake .. make -j3 sudo make install -j2
-3源码安装g2o

g2o为非线性优化的库,用于后端优化(与Ceres功能相同),相关源码在SLAM的3rdLibrary里面。

安装依赖项
sudo apt-get install libqt4-dev qt4-qmake libqglviewer-dev libsuitesparse-dev
libcxsparse3.1.4 libcholmod3.0.6
编译安装

进入源码文件夹
mkdir build && cd build cmake .. make -j3 sudo make install -j3
设置环境变量

控制台输入sudo gedit /etc/ld.so.conf.d/g2o.conf
打开该文件加入下面的内容:
/usr/local/lib
然后
sudo ldconfig /etc/ld.so.conf sudo updatedb
一般来说,g2o与Ceres没必要同时都安装。

-4源码安装DBoW3

DBoW3为词袋库,用于回环检测,相关源码在SLAM的3rdLibrary里面。控制台进入源码文件夹输入
sudo apt-get install libboost-dev mkdir build && cd build cmake .. make -j3
sudo make install-j3
相关工具安装

IDE

推荐Kdevelop + Qt 组合。程序使用Kdevelop,界面使用Qt。
Kdevelop可以使用


sudo apt-get install phonon-backend-gstreamer phonon4qt5-backend-gstreamer
phonon-backend-vlc
sudo apt-get install kdevelop
直接下载使用。

看笔记

同步Github上,主要使用.markdown 文件来记录。
推荐安装Typora,因为它显示效果快,还有查找功能。
参考 https://typora.io/#linux <https://typora.io/#linux>
个人感觉比remarkable好。

opencv源码文件夹下doc/tutorials下的.markdown文件中,其中的公式标记为 [\f 和\f],其对应代表的应是 $$

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信