ORB_SLAM2基础知识
ORB_SLAM2框架简介
- Tracking-跟踪
- Local Mapping-地图
- Loop Closing-回环
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'
解决办法,找到下面共享库的目录
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