源码下载链接
各种库的安装以及常见问题解决
根据github中的要求依次安装系统在运行过程中哦所用的一系列库
(尽可能保持介绍的库安装顺序进行安装,因为很多库之间会有依赖关系。)
各种库的安装
- OpenCV 3.x.x
- Eigen3(3.2.92或者3.2.10)
- Boost
- YAML
- stvo-pl
- MRPT
以上所有的库可以直接参考
stvo_pl配置、运行过程
进行配置
如果stvo-pl运行正常,说明相关库已经安装成功。(保证stvo-pl和pl-slam在同一目录下)
g2o库安装配置
g2o
库在安装之前一定保证eigen3(版本一定要对)匹配的库安装成功。
安装依赖
sudo apt-get install libeigen3-dev libsuitesparse-dev qtdeclarative5-dev qt5-qmake libqglviewer-dev
安装g2o
cd g2o
mkdir build
cd build
cmake …/
make
sudo make install
编译运行
./plslam_dataset kitti/00
- 在pl-slam文件夹下创建kitti文件夹,将kitti 数据集中的00数据集复制到该文件夹中;
- 将pl-slam/config/dataset_params/kitti00-02.yaml复制到/00文件中并将文件名称改为dataset_params.yaml并将其中的image2/_image3/改为image0/_image1/;
- 在.bashrc文件最后添加(如果之前的stvo-pl正常运行了就不用再改了)
gedit ~/.bashrc
export DATASETS_DIR=/××××/pl-slam
source ~/.bashrc
- 在执行命令中注意…/config/config/config_kitti.yaml,文件的具体位置。
结果
问题解决方案
-
在执行
./build.sh
时会出现各种和eigen/g2o相关的报错,大概率是库版本匹配的问题,试试重新安装eigen/g2o库; -
报错
/usr/bin/ld: can not find -lg2o_ext_csparse
解决办法
cd /usr/local/lib
sudo ln -sv libg2o_csparse_extension.so libg2o_ext_csparse.so
-
找不到字典
Invalid vocabulary for points
修改/config/config/config_kitti.yaml和src/slamConfig.cpp文件中的 vocabulary_p 和vocabulary_l为自己电脑下的绝对地址; - 当运行时发生内存溢出;重启电脑。
-
在执行系统的时候一直提示找不到g2o库,在确定已经安装g2o的情况下在CmakeList.txt文件中
find_package(G2O REQUIRED)
之前添加以下俩条语句
list(APPEND CMAKE_MODULE_PATH /home/zhang/AllLib/g2o/g2o/cmake_modules)
set(G2O_ROOT /home/zhang/AllLib/g2o/g2o)
或者在CMakeLists.txt文件目录下创建一个cmake_modules文件夹,在将十四讲中ch6中的FindG2O.cmake文件复制进来进行编译。
-
在执行./build.sh时出现g2o函数问题,类似如下
/home/zbs/SLAM/PL_SLAM/PL-SLAM-STEREO/src/mapHandler.cpp:3967:77: error: no matching function for call to ‘g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::BlockSolver(g2o::BlockSolver<g2o::BlockSolverTraits<6, 3> >::LinearSolverType*&)’ g2o::BlockSolver_6_3* solver_ptr = new g2o::BlockSolver_6_3(linearSolver);
解决办法是将出错的这俩个位置
pl-slam/src/mapHandler.cpp:3968:101:
pl-slam/src/mapHandler.cpp:4193:77:
源码换成一下的代码
//g2o::BlockSolver_6_3::LinearSolverType* linearSolver;
//linearSolver = new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>();
//g2o::BlockSolver_6_3* solver_ptr = new g2o::BlockSolver_6_3(linearSolver);
//g2o::OptimizationAlgorithmLevenberg* solver = g2o::OptimizationAlgorithmLevenberg(solver_ptr);
std::unique_ptr<g2o::BlockSolver_6_3::LinearSolverType> linearSolver(new g2o::LinearSolverCholmod<g2o::BlockSolver_6_3::PoseMatrixType>());
std::unique_ptr<g2o::BlockSolver_6_3> solver_ptr(new g2o::BlockSolver_6_3(std::move(linearSolver)));
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::move(solver_ptr));
再次执行
./build.sh
- 运行程序时候MRPT开启之后一段时间发生段错误退出界面,需要修改CmakeList.txt中
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native -march=native")
修改为
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -O3 -mtune=native")
-
已经设置了
DA
T
A
S
E
T
_
D
I
R
DATASET\_DIR
D
A
T
A
S
E
T
_
D
I
R
环境变量,但是在执行时依旧无法定位路径,需要打开一下该路径即可解决该问题。
版权声明:本文为ABC1225741797原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。