是的ORB_SLAM3 来了,时隔五年,它来带的惊喜到底是啥呢?
- 一个完全依赖于最大后验估计(MAP)的单/双目惯导融合系统
- 高回召的地点识别功能(High-recall place recognition)
- 第一个完整的多地图系统(multi-map)
- 一个抽象的相机模型表示
论文地址
论文细节今天不说,今天主要先拿到代码,并且用自己的传感器试试实际效果
编译
终端拉代码
记得提前安装好OpenCV,Eigen,和Pangolin
git clone https://github.com/UZ-SLAMLab/ORB_SLAM3.git
cd ORB_SLAM3
chmod +x build.sh
./build.sh
chmod +x build_ros.sh
./build_ros.sh
编译时可能出现的错误
- [rosbuild] rospack found package “ORB_SLAM3” at “”, but the current
directory is “/home/damon/catkin_ws/src/ORB_SLAM3/Examples/ROS/ORB_SLAM3”.
解决如下
gedit ~/.bashrc
export ROS_PACKAGE_PATH=${ROS_PACKAGE_PATH}:/home/damon/catkin_ws/src/ORB_SLAM3/Examples/ROS/
- 还可能报错 fatal error: GeometricCamera.h: No such file or directory
找到以下文件:
ORB_SLAM3/include/KeyFrame.h
ORB_SLAM3/include/Atlas.h
ORB_SLAM3/include/Tracking.h
中作如下修改
#include "CameraModels/GeometricCamera.h"
ORB_SLAM3/include/Atlas.h 中还需要这些修改
#include "CameraModels/Pinhole.h"
//#include "KannalaBrandt8.h"
#include "CameraModels/KannalaBrandt8.h"
修改之后编译出现一堆错误,大致如下:
打开一个终端
sed -i "s/ORB_SLAM2/ORB_SLAM3/g" `grep -rl "ORB_SLAM2"`
修改之后刚才的错误没了。
但是出现一个boost链接错误:
在ROS中的CMakeLists.txt里添加
gedit ORB_SLAM3/Examples/ROS/ORB_SLAM3/CMakeLists.txt
然后ctrl+F
搜索set(LIBS
添加
-lboost_system
然后编译就成功了
用realsense 跑ORB_SLAM3
首先realsense 需要安装驱动和标定,具体看这里
得到标定结果之后,由于ros版的topic是写死在代码里的,所以首先修改Example/ROS/ORB_SLAM3/src/ros_mono.cc (这里以mono为例,其他也差不多):
然后重新编译。。。
cd ORB_SLAM3/Examples/Monocular
cp EuRoC.yaml d435i.yaml
gedit d435i.yaml
将d435i标定结果填到d435i.yaml 中
余下部分保持默认。
最终效果
启动roscore
打开一个终端,启动OBR_SLAM3
source ORB_SLAM3/Examples/ROS/ORB_SLAM3/build/devel/setup.bash
rosrun ORB_SLAM3 Mono /home/damon/catkin_ws/src/ORB_SLAM3/Vocabulary/ORBvoc.txt /home/damon/catkin_ws/src/ORB_SLAM3/Examples/Monocular/d435i.yaml
等到以下界面出现,继续下一步
再打开一个终端启动realsense_ros
roslaunch realsense2_camera rs_camera.launch
然后发现:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)