Ubuntu16.04下快速安装 OpenCV 和 PCL 用于搭建SLAM环境

本文详细介绍了如何在 Ubuntu 16.04.04 上安装 OpenCV 和 PCL 库,以及如何解决安装过程中可能出现的问题。此外,还提供了 Sophus、Ceres 和 g2o 等 SLAM 相关库的安装指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

最近要在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.youkuaiyun.com/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.youkuaiyun.com/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/,放入路径中。
因为可能需要联合编译,最好用最新版本,要图简单就直接sudo apt-get install cmake cmake-gui 。控制台输入:

./bootstrap
make -j3
sudo make install

重启
shutdown -r now

安装OpenCV

参考https://blog.youkuaiyun.com/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,放入路径中。
进入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,将其中文件解压到.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中查一下。没有绝对的正确,本人推荐

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.youkuaiyun.com/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
个人感觉比remarkable好。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值