orbslam2+kitti数据集序列图像

发布于:2024-04-26 ⋅ 阅读:(30) ⋅ 点赞:(0)

一、下载ORB Slam2依赖

Orb Slam2
需要下载的依赖项:

Pangolin0.5 、Eigen3.1以上、 Sophus、Ceres、OpenCV、g2o、DBoW3
这些依赖项的github地址集成:https://github.com/Gongkaka/slambook2/tree/master/3rdparty

  • Pangolin安装
直接从github下载下来。解压之后进行编译:注意安装0.5版本的,不然会出错
cd Pangolin
mkdir build && cd build
cmake ..
sudo make -j8
  • Eigen、Sophus直接git下来即可
  • Ceres安装
先安装依赖项:sudo apt-get install  liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

git下来

编译:
cd ceres-solver
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
  • OpenCV安装
    可参考以前的博客
  • g2o安装
安装依赖:sudo apt-get install qt5-qmake qt5-default libqglviewer-dev-qt5 libsuitesparse-dev libcxsparse3 libcholmod3

git下来

编译:
cd g2o
mkdir build && cd build
cmake ..
sudo make -j8
sudo make install
  • DBoW3安装
git下来

mkdir build
cd build/
cmake ..
make
sudo make install

二、安装编译ORB_SLAM2

  • 进入你的ROS工作空间的src目录下,下载ORB_SLAM2的安装包
    在这里插入图片描述
    配置环境:
    在控制台输入:export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:你的ORB_SLAM2的目录/Examples/ROS,比如在我的虚拟机就是export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:~/catkin_ws/src/ORB_SLAM2/Examples/ROS
  • 进入ORB_SLAM2文件夹下
cd ~/catkin_ws/src/ORB_SLAM2
sudo chmod +x build.sh
./build.sh
  • 接着使用ROS编译
sudo chmod +x build_ros.sh
./build_ros.sh

成功之后是这样:
请添加图片描述
Example目录下也多了可执行文件:
在这里插入图片描述

三 、运行Kitee数据集

3.1 数据集准备

链接:https://www.cvlibs.net/datasets/kitti/eval_odometry.php
在这里插入图片描述

3.2 启动!!!

执行命令:ORB-SLAM2支持单目、双目和RGBD数据,这里选择mono_kitti的单目数据集来运行和调试。
运行命令格式为:
./mono_kitti path_to_vocabulary path_to_settings path_to_sequence
该命令共有4个参数:

  • mono_kitti:为ORB-SLAM2编译生成的针对MONO_KITTI数据集的可执行文件,一般路径为ORB-SLAM2工程目录下Examples/Monocular/mono_kitti;

  • path_to_vocabulary为所选词典的路径,路径为ORB_SLAM2/Vocabulary/ORBvoc.txt;

  • path_to_settings为配置文件,存放在ORB-SLAM2/Examples/Monocular下,运行时选择了KITTI00-02.yaml(可选择别的),该配置文件中存放的相机的内参和外参,提取特征时候图像金字塔相关参数,可视化过程中用到的参数;

  • path_to_sequence为数据集路径,这个根据自己下载的kitti数据集路径来指定。这里在工作空间中建立文件夹dataset来存放数据集00,故目录为 …/dataset/sequences/00/ (…/表示上层目录,./表示当前目录)
    我的执行,如下:在ORB_Slam2目录下,开启终端,输入:
    ./Examples/Monocular/mono_kitti Vocabulary/ORBvoc.txt Examples/Monocular/KITTI00-02.yaml ../dataset/sequences/00/
    请添加图片描述
    请添加图片描述

安装ORB Slam2遇到的问题

  • 1.static错误在这里插入图片描述
    解决方法参考资料
    ORB_SLAM2/include/LoopClosing.h文件中的:
    在这里插入图片描述
    修改为:
    在这里插入图片描述
  • 2、"not a std"错误
    在这里插入图片描述
    解决方法:修改CMakeLists.txt文件 参考资料
    在这里插入图片描述
  • 3、Pangolin_FOUND to FALSE so package “Pangolin“ is considered to be NOT FOUND.错误
    解决方法:修改CMakeLists.txt文件 参考资料
    在这里插入图片描述
  • 4、usleep错误
    请添加图片描述
    解决方法就是在对应文件里加#include <unistd.h>,比如我上面那个错误是发生在mono_kitti.cc文件里,就去这里面添加即可
  • 5、找不到../../config.h
    这个错误的原因是没有先运行./build.sh而直接运行build_ros.sh
    请添加图片描述
    解决办法就是先./build.sh编译成功后再build_ros.sh。
  • 6、ros的opencv版本和本地opencv版本矛盾问题。请添加图片描述
    参考的这个
    在这里插入图片描述

总结

经过本次实验,了解了ORB_SLAM2的调用方法,进一步见识到了SLAM的魅力,同时在实验过程中,遇到特别多的bug,最终还是解决了。一定要多尝试,学会搜索,学好English。

参考资料

orb Slam2安装1
orb Slam2安装2
Orb_SLAM+Kitti
依赖项安装