在学习高博的《视觉SLAM十四讲》的过程中,遇到了各种问题。虽说在网上都能找到对应的解决方案,但没有一篇是详细列尽遇到的问题的文章。于是,打算自己写一篇记录学习过程中遇到的一系列问题。希望能为后续的学习提供一点帮助!(自己也是新手小白,还是有很多不懂的地方。)
目录
一、git clone代码不完全
视觉SLAM十四讲中所涉及到的示例的源代码链接:https://github.com/gaoxiang12/slambook2
在ubuntu18.04系统下,打开终端在自己指定的目录下,执行以下命令:
git clone https://github.com/gaoxiang12/slambook2.git
然后,发现3rdparty里面的文件夹(例:g2o、Pangolin等)内什么都没有。而在高博的github里面能看到是有文件的。执行以下命令,即可解决:
git clone --recursive https://github.com/gaoxiang12/slambook2.git
这样克隆下来的内容就是完整的了。
二、CH2
1、安装gcc和g++编码器
终端执行以下命令安装gcc和g++:
sudo apt-get update
sudo apt-get install gcc
sudo apt-get install g++
2、cmake的安装
终端输入以下命令安装cmake:
sudo apt-get install cmake
3、实践部分
打开终端在slambook2/ch2目录下执行以下命令:
mkdir build && cd build
cmake ..
make
编译通过。
终端输入:
./helloSLAM
示例如下:
三、CH3
1、Eigen库的安装
终端执行以下命令进行Eigen库的安装:
sudo apt-get install libeigen3-dev
2、Pangolin库的安装
终端执行以下命令,安装依赖:
sudo apt-get install libxkbcommon-dev
sudo apt-get install wayland-protocols
sudo apt install libglew-dev
在 slambook2/3rdparty/Pangolin目录下,终端执行以下命令安装Pangolin库:
mkdir build && cd build
cmake ..
make
sudo make install
3、实践部分
实践3.2:Eigen
终端在slambook2/ch3/useEigen目录下执行以下命令:
mkdir build && cd build
cmake ..
make
在编译过程中出现以下报错:
fatal error::Eigen/Core:没有那个文件或目录。
执行以下命令,即可解决:
sudo ln -s /usr/include/eigen3/Eigen /usr/include/Eigen
然后重新进行编译,就能正常编译通过了。
终端输入:
./eigenMatrix
运行示例:
实践3.6:Eigen几何模块
3.6.1:Eigen几何模块的数据演示
终端在slambook2/ch3/useGeometry目录下执行以下命令:
mkdir build && cd build
cmake ..
make
build目录下,终端输入:
./eigenGeometry
这个程序运行没什么问题,这里就不展示示例了。
3.6.2:实际的坐标变换例子
终端在slambook2/ch3/examples目录下执行以下命令:
mkdir build && cd build
cmake ..
make
build目录下,终端输入:
./coordinateTransform
这个程序运行没什么问题,这里就不展示示例了。
实践3.7:可视化演示
3.7.1:显示运动轨迹
终端在slambook2/ch3/examples目录下,执行以下命令:
mkdir build && cd build
cmake ..
make
build目录下,终端输入:
./plotTrajectory
此时出现以下错误:
将plotTrajectory.cpp文件中的代码:
string trajectory_file = "./examples/trajectory.txt";
更改为:
string trajectory_file = "../../examples/trajectory.txt";
将文件重新编译执行。
示例如下:
3.7.2:显示相机的位姿
终端在slambook2/ch3/visualizeGeometry目录下,执行以下命令:
mkdir build && cd build
cmake ..
make
build目录下,终端输入:
./visualizeGeometry
示例如下:
四、CH4
1、Sophus库的安装
在 slambook2/3rdparty/Sophus目录下,终端输入以下命令安装Sophus库:
mkdir build
cd build
cmake ..
make
sudo make install
2、实践部分
实践4.4:Sophus
4.4.1:Sophus的基本使用方法
终端在slambook2/ch4目录下,执行以下命令:
mkdir build && cd build
cmake ..
make
build目录下,终端输入:
./useSophus
这个程序运行没什么问题,这里就不展示示例了。
4.4.2:评估轨迹的误差
终端在slambook2/ch4/example目录下,执行以下命令:
mkdir build && cd build
cmake ..
make
此时出现以下错误:
将trajectoryError.cpp文件中的代码:
string groundtruth_file = "./example/groundtruth.txt";
string estimated_file = "./example/estimated.txt";
改为:
string groundtruth_file = "../../example/groundtruth.txt";
string estimated_file = "../../example/estimated.txt";
将文件重新编译执行。build目录下,终端输入:
./trajectoryError
示例如下:
五、CH5
1、安装OpenCV
如果之前安装了ROS,则OpenCV也被自动地安装了。安装ROS后,ubuntu系统会自动安装OpenCV 3.2.0。
终端输入以下命令查看OpenCV版本:
pkg-config opencv --modversion
由于OpenCV的安装过程较复杂,若没有安装OpenCV,我这里不作说明了。请参考以下文章: