pl_slam配置、运行过程

  • Post author:
  • Post category:其他




源码下载链接


pl_slam源码下载链接



各种库的安装以及常见问题解决

根据github中的要求依次安装系统在运行过程中哦所用的一系列库

(尽可能保持介绍的库安装顺序进行安装,因为很多库之间会有依赖关系。)



各种库的安装

  1. OpenCV 3.x.x
  2. Eigen3(3.2.92或者3.2.10)
  3. Boost
  4. YAML
  5. stvo-pl
  6. 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")
  • 已经设置了



    D

    A

    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 版权协议,转载请附上原文出处链接和本声明。