pl_slam配置、运行过程

源码下载链接

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 DATASET_DIR环境变量,但是在执行时依旧无法定位路径,需要打开一下该路径即可解决该问题。
  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值