• orbslam2 安装过程记录


    目录

    一、更新apt库,更新软件列表

    二、安装git,用于从Github上克隆项目到本地

    三、下载orbslam2源码

    四、安装C++11编译器 cmake

    五、安装Pangolin

    六、安装Eigen3

    七、安装opencv

     八、安装运行ORB-SLAM2

    九、ROS环境下运行ORB_SLAM

    9.1 添加环境变量

    9.2 检验 ROS path 是否被识别

    十、官方数据集跑ORB_SLAM2


    一、更新apt库,更新软件列表

    sudo apt-get update

    二、安装git,用于从Github上克隆项目到本地

    sudo apt-get install git

    三、下载orbslam2源码

    git clone https://github.com/raulmur/ORB_SLAM2

    下载orbslam2之后,我们来看看这个文件夹里面有什么:

    四、安装C++11编译器 cmake

    sudo apt-get install cmake

    五、安装Pangolin

    Pangolin是对OpenGL进行封装的轻量级的OpenGL输入/输出和视频显示的库。可以用于3D视觉和3D导航的视觉图,可以输入各种类型的视频、并且可以保留视频和输入数据用于debug。

    在安装pangolin之前,先安装依赖项

    1. sudo apt-get install libglew-dev
    2. sudo apt-get install libboost-dev libboost-thread-dev libboost-filesystem-dev
    3. sudo apt-get install libpython2.7-dev

    Pangolin下载链接:https://github.com/stevenlovegrove/Pangolin

    使用版本建议为V0.5,这样可以避免Eigen3报错。

    1. cd Pangolin
    2. mkdir build
    3. cd build
    4. cmake ..
    5. make –j
    6. sudo make install
    • cmake .. 的作用: ../CMakeLists.txt 文件作为起始点在当前目录中生成makefile
    • make 命令,在此之后执行,使用生成的makefile作为输入构建程序
    • make install:将程序安装至系统中。如果原始码编译无误,且执行结果正确,便可以把程序安装至系统预设的可执行文件存放路径。默认/usr/local/bin

    报错解决:

    ORB-SLAM2的安装与运行_ydongy的博客-CSDN博客_orbslam2安装运行

    1、找到FindEigen3.cmake文件,/usr/share/cmake2.8/Modules
    2、复制到自己这个的工程下
    3、在工程的CMakeLists.txt里面。添加这句话:

     set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})

    参考链接:https://blog.51cto.com/u_15127644/3362825

    1. set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})*******就是这句,加上就行了。这样cmake就会到你自己工程目录下去找FindEigen3.cmake了。
    2. find_package(Eigen3)
    3. if(NOT EIGEN3_FOUND)
    4. # Fallback to cmake_modules
    5. find_package(cmake_modules REQUIRED)
    6. find_package(Eigen REQUIRED)
    7. set(EIGEN3_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS})
    8. set(EIGEN3_LIBRARIES ${EIGEN_LIBRARIES}) # Not strictly necessary as Eigen is head only
    9. # Possibly map additional variables to the EIGEN3_ prefix.
    10. else()
    11. set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
    12. endif()
    13. -----------------------------------
    14. CMake Error: not providing "FindEigen3.cmake" in CMAKE_MODULE_PATH
    15. https://blog.51cto.com/u_15127644/3362825

    使用低版本的Pangolin库出现的问题:

    make -j  出现终端闪退问题  

    解决办法: make -j4 ,4是自己电脑cpu线程数

    make -j4后报错:

    在Pangolin文件夹CMakeLists.txt中添加设置 

    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}-pthread")

    成功!!

    六、安装Eigen3

    sudo apt-get install libeigen3-dev

    七、安装opencv

    opencv官方下载地址:Releases - OpenCV

    选择版本3.4.0,下载并解压

    安装opencv之前必须安装libgtk2.0-dev and pkg-config后安装或者没有安装都会报错

    1. sudo apt-get install libgtk2.0-dev
    2. sudo apt-get install pkg-config
    1. cd ~/opencv
    2. mkdir build
    3. cd build
    4. cmake -D CMAKE_BUILD_TYPE=Release –D CMAKE_INSTALL_PREFIX=/usr/local ..
    5. make
    6. sudo make install

    在安装opencv的时候,会用:

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
    这这句话什么意思!
    在build文件中输入:cmake -D CMAKE_BUILD_TYPE=RELEASE 
    这样产生的makefile文件make生成的可执行文件就带有调试信息,供gdb和gdbserver使用了。CMAKE_BUILD_TYPE的值可以为Release或者Debug。
    
    CMAKE_INSTALL_PREFIX=/usr/local ..
    INSTALL 指令用于定义安装规则,安装的内容可以包括目标二进制、动态库、静态库以及
    文件、目录、脚本等。 这里就是提前设置好编译到的路径!

     八、安装运行ORB-SLAM2

    1. cd ORB_SLAM2
    2. chmod +x build.sh
    3. ./build.sh

    报错1:

    根据报错信息, 在 gapi_async_tesr.cpp 中添加:

    #include

    报错2:

    参考:

    https://blog.csdn.net/u014717398/article/details/110356066?ops_request_misc=&request_id=&biz_id=102&utm_term=OpenCV%20%3E%202.4.3%20not%20found.&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-110356066.142%5Ev47%5Epc_rank_34_default_2,201%5Ev3%5Eadd_ask&spm=1018.2226.3001.4187

    报错3:

    1. darren@PTY:~/ORB_SLAM2/build$ make -j4
    2. [ 6%] Building CXX object CMakeFiles/ORB_SLAM2.dir/src/LocalMapping.cc.o
    3. [ 6%] Building CXX object CMakeFiles/ORB_SLAM2.dir/src/System.cc.o
    4. [ 9%] Building CXX object CMakeFiles/ORB_SLAM2.dir/src/Tracking.cc.o
    5. [ 12%] Building CXX object CMakeFiles/ORB_SLAM2.dir/src/LoopClosing.cc.o
    6. In file included from /home/darren/ORB_SLAM2/include/Frame.h:31,
    7. from /home/darren/ORB_SLAM2/include/MapPoint.h:25,
    8. from /home/darren/ORB_SLAM2/include/KeyFrame.h:24,
    9. from /home/darren/ORB_SLAM2/include/LoopClosing.h:24,
    10. from /home/darren/ORB_SLAM2/src/LoopClosing.cc:21:
    11. /home/darren/ORB_SLAM2/include/ORBextractor.h:26:10: fatal error: opencv/cv.h: 没有那个文件或目录
    12. 26 | #include
    13. | ^~~~~~~~~~~~~
    14. In file included from /home/darren/ORB_SLAM2/include/Frame.h:31,
    15. from /home/darren/ORB_SLAM2/include/MapPoint.h:25,
    16. from /home/darren/ORB_SLAM2/include/KeyFrame.h:24,
    17. from /home/darren/ORB_SLAM2/include/LocalMapping.h:24,
    18. from /home/darren/ORB_SLAM2/src/LocalMapping.cc:21:
    19. /home/darren/ORB_SLAM2/include/ORBextractor.h:26:10: fatal error: opencv/cv.h: 没有那个文件或目录
    20. 26 | #include
    21. | ^~~~~~~~~~~~~
    22. compilation terminated.
    23. compilation terminated.
    24. make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:104:CMakeFiles/ORB_SLAM2.dir/src/LocalMapping.cc.o] 错误 1
    25. make[2]: *** 正在等待未完成的任务....
    26. make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:118:CMakeFiles/ORB_SLAM2.dir/src/LoopClosing.cc.o] 错误 1
    27. In file included from /home/darren/ORB_SLAM2/include/KeyFrame.h:28,
    28. from /home/darren/ORB_SLAM2/include/MapPoint.h:24,
    29. from /home/darren/ORB_SLAM2/include/FrameDrawer.h:25,
    30. from /home/darren/ORB_SLAM2/include/Viewer.h:25,
    31. from /home/darren/ORB_SLAM2/include/Tracking.h:28,
    32. from /home/darren/ORB_SLAM2/src/Tracking.cc:22:
    33. /home/darren/ORB_SLAM2/include/ORBextractor.h:26:10: fatal error: opencv/cv.h: 没有那个文件或目录
    34. 26 | #include
    35. | ^~~~~~~~~~~~~
    36. compilation terminated.
    37. In file included from /home/darren/ORB_SLAM2/include/KeyFrame.h:28,
    38. from /home/darren/ORB_SLAM2/include/MapPoint.h:24,
    39. from /home/darren/ORB_SLAM2/include/FrameDrawer.h:25,
    40. from /home/darren/ORB_SLAM2/include/Viewer.h:25,
    41. from /home/darren/ORB_SLAM2/include/Tracking.h:28,
    42. from /home/darren/ORB_SLAM2/include/System.h:29,
    43. from /home/darren/ORB_SLAM2/src/System.cc:23:
    44. /home/darren/ORB_SLAM2/include/ORBextractor.h:26:10: fatal error: opencv/cv.h: 没有那个文件或目录
    45. 26 | #include
    46. | ^~~~~~~~~~~~~
    47. compilation terminated.
    48. make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:90:CMakeFiles/ORB_SLAM2.dir/src/Tracking.cc.o] 错误 1
    49. make[2]: *** [CMakeFiles/ORB_SLAM2.dir/build.make:76:CMakeFiles/ORB_SLAM2.dir/src/System.cc.o] 错误 1
    50. make[1]: *** [CMakeFiles/Makefile2:95:CMakeFiles/ORB_SLAM2.dir/all] 错误 2
    51. make: *** [Makefile:91:all] 错误 2
    52. darren@PTY:~/ORB_SLAM2/build$

     参考: 

    https://blog.csdn.net/u014717398/article/details/110356066?ops_request_misc=&request_id=&biz_id=102&utm_term=OpenCV%20%3E%202.4.3%20not%20found.&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-3-110356066.142%5Ev47%5Epc_rank_34_default_2,201%5Ev3%5Eadd_ask&spm=1018.2226.3001.4187

    报错4:

    在出错程序的头文件中加入

     #include 

    报错5:

    ORB-SLAM2编译错误_嵙杰的博客-CSDN博客

    报错6:

    这是由于opencv高版本弃用CV_LOAD_IMAGE_UNCHANGED这一参数导致的
    解决方法:
    CV_LOAD_IMAGE_UNCHANGED换成IMREAD_UNCHANGED
    并在代码头文件下面添加命名空间using namespace cv;

    九、ROS环境下运行ORB_SLAM

    9.1 添加环境变量

    sudo gedit ~/.bashrc   //查看bashrc文件

    在bashrc文件后后面加这句:

    export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/darren/ORB_SLAM2/Examples/ROS/ORB_SLAM2

    source ~/.bashrc   //使环境变量生效

    9.2 检验 ROS path 是否被识别

    echo $ROS_PACKAGE_PATH

     然后执行下列三条命令:

    1. chmod +x build_ros.sh
    2. ./build_ros.sh

    报错1:

    /usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol '_ZN5boost6system15system_categoryEv' /usr/lib/x86_64-linux-gnu/libboost_system.so: 无法添加符号: DSO missing from command line collect2: error: ld returned 1 exit status CM

    解决办法:

    /usr/bin/ld: CMakeFiles/RGBD.dir/src/ros_rgbd.cc.o: undefined reference to symbol ‘_ZN5boost6system1_人生不过一闭一睁的博客-CSDN博客

    十、官方数据集跑ORB_SLAM2

    数据集:Computer Vision Group - Dataset Download

    下载rgbd_dataset_freiburg1_xyz即可,解压

    1. ./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUMX.yaml PATH_TO_SEQUENCE_FOLDER

    问题1: 

    解决方法:

    https://blog.csdn.net/hy13684802853/article/details/83343093

    https://blog.csdn.net/weixin_38493195/article/details/117454809


     

    问题2:画面出来之后2s左右突然闪退

    New Map created with 86 points
    double free or corruption (out)
    已放弃 (核心已转储)

    解决方法:

    高翔slam14 project 出现double free or corruption (out)问题解决 - 走看看
    Ubuntu18.04下运行ORB-SLAM2踩坑记_梧桐雪的博客-CSDN博客

    删除掉ORBSLAM的cmakelists中的 -march=native 以及 g2o 的cmakelists中的-march=native重新执行ORBSLAM目录下的./build.sh 后就可以正常跑了。

    运行成功:

    如果运行rgbd模式,需要用 associate.py 脚本手动对齐depth和rgbd时间戳

    python associate.py PATH_TO_SEQUENCE/rgb.txt PATH_TO_SEQUENCE/depth.txt > associations.txt
  • 相关阅读:
    【c语言基础题】— —第六版,可当作日常练习和期末复习,有奇效哟!
    SpringBoot整合redis与缓存使用
    相交链表+判断环型链表+求环型链表的入口节点
    【Ubuntu 终端终结者Ctrl shift e无法垂直分页解决办法】
    IDEA创建Sping项目只能勾选17和21,却无法使用Java8
    技术管理进阶——跨级管理/汇报
    torch-geometric(PYG) 环境配置
    开源视频监控服务器Shinobi
    <线性回归算法(Linear regression)>——《机器学习算法初识》
    2022年第一界HiPChips解读
  • 原文地址:https://blog.csdn.net/peng_258/article/details/126725770