文章目录
本文参考链接:https://zhuanlan.zhihu.com/p/452256687
详细内容请参考链接,相比原文,本文更加的简洁明了一点。
安装前提(建议先换源)
# 1 安装CMake
sudo apt-get install cmake
# 2 安装Git
sudo apt-get install git
# 3 更新
sudo apt-get upgrade
1 下载slam14讲配套源码
这里提供两种方案
第一种: 下载slam14讲作者的
git clone https://github.com/gaoxiang12/slambook2.git
然后应该会发现 slambook2/3rdparty下的文件夹内容为空
如果为空,则执行以下语句。(速度比较慢)
cd slambook2/
git submodule update --init --recursive
不推荐这种,这种似乎版本容易出问题,建议自己去下载这六种包安装。
根据这个链接的内容进行跳转到相应的地方下载即可。
https://github.com/gaoxiang12/slambook2/tree/master/3rdparty
第二种:
我已上传gitee,你可以下载我的(这样速度相比上一种快许多)
版本方面我自己是没有问题的。
git clone https://gitee.com/diyugreat/slambook2.git
2 安装Eigen
sudo apt-get install libeigen3-dev
3 安装Pangolin
先安装依赖环境,终端输入:
sudo apt-get install libglew-dev libboost-dev libboost-thread-dev libboost-filesystem-dev libpython3.8-dev python3-pip
在slambook2/3rdparty/Pangolin文件夹下打开终端并依次输入:
mkdir build
cd build/
cmake ..
make -j4
sudo make install
4 安装Sophus
在slambook2/3rdparty/Sophus文件夹下打开终端并输入:
mkdir build
cd build/
cmake ..
make -j4
如果你下载的是作者的源码,之后可能会报错,需要在CMakeLists.txt文件中添加以下内容:(我是在第30行已添加了)
set(CMAKE_CXX_FLAGS"-Wno-error=deprecated-declarations-Wno-deprecated-declarations ")
然后执行
sudo make install
5 安装OpenCV
这里自行安装,因为我以前安装过了,我的是 opencv 3.4.15。
注意最好使用opencv 3以上版本。
6 安装Ceres
先安装依赖环境,终端输入:
sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev
在slambook2/3rdparty/ceres-solver文件夹下打开终端并依次输入:
mkdir build
cd build/
cmake ..
make -j4
sudo make install
7 安装g2o
先安装依赖环境,终端输入:
sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3
在slambook2/3rdparty/g2o文件夹下打开终端并依次输入:
mkdir build
cd build/
cmake ..
make -j4
sudo make install
8 安装DBoW3
在slambook2/3rdparty/DBoW3文件夹下打开终端并依次输入:
mkdir build
cd build/
cmake ..
make -j4
sudo make install
9 安装PCL
终端输入:
sudo apt-get install libpcl-dev pcl-tools
10 安装octomap
终端输入:
sudo apt-get install liboctomap-dev octovis
实验验证
ch5点云拼接
点云拼接实验 。编译运行 slambook2/ch5/rgbd/joinMap.cpp
首先在slambook2/ch5/rgbd/的CMakeLists.txt中添加opencv路径
#opencv
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
然后在slambook2/ch5/rgbd文件夹下右键进入终端,依次执行下面命令
也可以不创建build,直接cmake、make,只是cmake产生的文件多,因此创建了bulid文件夹用于保存
# 编译代码
mkdir build
cd build/
cmake ..
make -j4
由图生成了joinMap文件,然后运行它即可。
./joinMap
如果出现下面这个情况,将bulid文件夹下生成的 joinMap文件移到上级目录(即 rgbd/ 文件夹下)
因为post.txt在rgbd/文件夹下
然后在运行 ./joinMap
ch8 直接法与光流法
这个实验由于代码使用的是opencv2,而cmkelists.txt文件中是opencv4
如果不修改,则会报下面错:
error: ‘CV_GRAY2BGR’ was not declared in this scope
这是opencv2的用法,现在是COLOR_GRAY2BGR
因此有两种选择
- 要么将代码中opencv2的用法改成opencv3或者4的用法
- 要么将cmakelists文件中的opencv4改成opencv2。
这里选择第2个做法。
后面就是编译过程了
# 编译代码
mkdir build
cd build/
cmake ..
make -j4
然后如ch5一样,将生成的两个目标文件(optical_flow 和 direct_method)移到上级目录
然后在ch8文件夹中打开终端运行
- 光流法
./optical_flow
- 直接法
./direct_method
图片就略去了。
完成。后续运行其它实验,如果还差什么包或依赖的,补充安装即可。
感谢参考链接:https://zhuanlan.zhihu.com/p/452256687