小白教程之开始学习ORB_SLAM2之前的准备工作

ORB_SLAM2基础知识

视觉SLAM十四讲从理论到实践

ORB_SLAM2框架简介

  1. Tracking-跟踪
  2. Local Mapping-地图
  3. Loop Closing-回环
    在这里插入图片描述

ORB_SLAM2与传感器之间是相互独立,提取特征之后,图像不需要被保存而是直接丢弃。

在这里插入图片描述

ORB_SLAM2源码介绍

ORB_SLAM2 官方源码

ORB_SLAM2将编译出libORB_SLAM2.so安装在lib目录中
并且生成可执行的数据集测试样例
mono_tum, mono_kitti, rgbd_tum, stereo_kitti, mono_euroc,stereo_euroc
有19个库文件、6个可执行文件:
分别是 rgbd_tum, stereo_kitti, stereo_euroc, mono_tum,mono_kitti,mono_euroc
/src 中包含的是ORB_SLAM2的SLAM定位建图子程序函数源库文件
/include 中包含的是ORB_SLAM2的SLAM定位建图子程序函数源库文件对应的头文件
/Examples 中的是各个数据集的测试调用程序以及相机标定文件

链接到的内部库

src/System.cc
src/LoopClosing.cc
src/FrameDrawer.cc
src/KeyFrame.cc
src/Optimizer.cc
src/KeyFrameDatabase.cc
src/Viewer.cc

链接到的外部库

${OpenCV_LIBS}
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/Thirdparty/g2o/lib/libg2o.so

ORB_SLAM2源码编译

首先更改 camke 编译文件 CMakeLists.txt

git clone https://github.com/raulmur/ORB_SLAM2
cd /ORB_SLAM2
gedit CMakeLists.txt   
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall   -O3 -march=native")
删除 -march=native 编译环境的优化选项
  
cd /ORB_SLAM2
gedit /Thirdparty/g2o/CMakeLists.txt  
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native") 
SET(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -O3 -march=native")                    
删除“-march=native”  编译环境的优化选项

cd /ORB_SLAM2
gedit /Thirdparty/DBoW2/CMakeLists.txt   
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}  -Wall  -O3 -march=native ")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall  -O3 -march=native")            
删除“-march=native” 编译环境的优化选项

编译过程中可能报错

'_ZN5boost6system15system_categoryEv'

解决办法,找到下面共享库的目录

扫描二维码关注公众号,回复: 11443825 查看本文章
locate  boost_system

/usr/lib/x86_64-linux-gnu/libboost_system.a
/usr/lib/x86_64-linux-gnu/libboost_system.so
/usr/lib/x86_64-linux-gnu/libboost_system.so.1.58.0

locate boost_filesystem
/usr/lib/x86_64-linux-gnu/libboost_filesystem.a
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.58.0

更改 camke 编译文件 CMakeLists.txt

cd /ORB_SLAM2/Examples/ROS/ORB_SLAM2
gedit CMakeLists.txt   

set(LIBS 
${OpenCV_LIBS} 
${EIGEN3_LIBS}
${Pangolin_LIBRARIES}
${PROJECT_SOURCE_DIR}/../../../Thirdparty/DBoW2/lib/libDBoW2.so
${PROJECT_SOURCE_DIR}/../../../Thirdparty/g2o/lib/libg2o.so
${PROJECT_SOURCE_DIR}/../../../lib/libORB_SLAM2.so
/usr/lib/x86_64-linux-gnu/libboost_filesystem.so
/usr/lib/x86_64-linux-gnu/libboost_system.so)

删除下面路径下的 build 目录

Thirdparty/DBoW2/build
Thirdparty/g2o/build
ORB_SLAM2/build
Examples/ROS/ORB_SLAM2/build

添加环境变量

gedit ~/.bashrc
export ORB_SLAM2_ROOT_DIR=/home/q/projects/ORB_SLAM2
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/q/projects/ORB_SLAM2/Examples/ROS/ORB_SLAM2
source ~/.bashrc
sudo updatedb

开始编译

chmod 777 ./build.sh
将 make -j 改成 make -j4 否则编译过程中有可能死机
编译非ROS版本
./build.sh
编译ROS版本
./build_ros.sh

猜你喜欢

转载自blog.csdn.net/qq_21950671/article/details/107041033