第一次写博客,难免有错误,大家多多指正!

ORB-SLAM2:  GitHub - raulmur/ORB_SLAM2: Real-Time SLAM for Monocular, Stereo and RGB-D Cameras, with Loop Detection and Relocalization Capabilities

ORB-SLAM3: GitHub - JKTao/ORB_SLAM3: ORB-SLAM3: An Accurate Open-Source Library for Visual, Visual-Inertial and Multi-Map SLAM

VINS-mono: GitHub - HKUST-Aerial-Robotics/VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator

为了使VINS生成的数据能够用evo评价对其进行了一些改进参考博客见

VINS-Mono运行与评测_熊猫飞天-CSDN博客

也可以下载我改好的百度网盘连接如下:

链接: https://pan.baidu.com/s/1qFCwOXOLNAm-xbL7VbNpdg  密码: upw8
--来自百度网盘超级会员V4的分享

数据集采用Euroc的前三个数据集

kmavvisualinertialdatasets – ASL Datasets

该数据集格式有两种一种为rosbag格式一种为ASL数据集格式。

rosbag 格式数据包直接运行即可

rosbag play *.bag

ASL格式数据为1个文件夹 其中包含如下,ORB-SLAM2和ORB-SLAM3有自己的运行方式下面介绍。

evo安参考

测评工具evo安装与使用_雾雨hub的博客-CSDN博客_evo工具

环境:

ubuntu18.04+ros-melodic+opencv3.4.16

运行:

ORB-SLAM2

进入到ORB-SLAM2文件夹下:

cd ORB_SLAM2
chmod +x build.sh //build.sh可执行权限
./build.sh

若出现如下错误:

对‘cv::Mat::Mat()’未定义的引用

可能是自己的opencv版本和cmake中定义的不一样改一下就行(我的版本是3.4)

查看自己的opencv版本

pkg-config --modversion opencv
find_package(OpenCV 3.4 QUIET)
if(NOT OpenCV_FOUND)
   find_package(OpenCV 2.4.3 QUIET)
   if(NOT OpenCV_FOUND)
      message(FATAL_ERROR "OpenCV > 2.4.3 not found.")
   endif()
endif()

编译成功后可运行代码:

./Examples/Stereo/stereo_euroc Vocabulary/ORBvoc.txt Examples/Stereo/EuRoC.yaml /home/du/work/proslma_ws/MH_01_easy/mav0/cam0/data /home/du/work/proslma_ws/MH_01_easy/mav0/cam1/data Examples/Stereo/EuRoC_TimeStamps/MH01.txt 
./Examples/Stereo/stereo_euroc 指双目的可执行程序 
Vocabulary/ORBvoc.txt 
Examples/Stereo/EuRoC.yaml代表相机的参数
/home/du/work/proslma_ws/MH_01_easy/mav0/cam0/data相机0拍摄的照片路径(换成自己的)
/home/du/work/proslma_ws/MH_01_easy/mav0/cam1/data 相机1拍摄的照片(换成自己的)
Examples/Stereo/EuRoC_TimeStamps/MH01.txt 时间戳(通过时间戳调用照片)
运行完会在ORB-SLAM2文件夹下产生CameraTrajectory.txt文件,
这个文件是用来evo评估时与真实值进行对比。记得复制走不然下次运行会被覆盖

MH_01_easy运行结果

MH_02_easy运行结果

MH_03_medium运行结果

ORB-SLAM3

cd ORB_SLAM3
chmod +x build.sh
./build.sh
./Examples/Stereo/stereo_euroc ./Vocabulary/ORBvoc.txt ./Examples/Stereo/EuRoC.yaml /home/du/work/proslma_ws/MH_01_easy ./Examples/Stereo/EuRoC_TimeStamps/MH01.txt 
./Examples/Stereo/stereo_euroc双目可执行文件 
./Vocabulary/ORBvoc.txt 
./Examples/Stereo/EuRoC.yaml 相机参数
/home/du/work/proslma_ws/MH_01_easy 数据集路径,换成自己的
./Examples/Stereo/EuRoC_TimeStamps/MH01.txt 时间戳

MH_01_easy运行结果

MH_02_easy运行结果

 MH_03_medium运行结果

 VINS

mkdir vins_ws
mkdir src
catkin_init_workspace 
cd ..
catkin_make
cd src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Mono.git
cd ..
catkin_make
添加环境变量
echo "source ~/vins_ws/devel/setup.bash" >> ~/.bashrc
让环境变量生效
source ~/.bashrc

 编译好添加好环境变量后即可运行数据集

cd vins_ws(自己的vins工作空间)
分别在三个终端运行以下命令
roslaunch vins_estimator euroc.launch
roslaunch vins_estimator vins_rviz.launch
rosbag play MH_01_easy.bag

MH_01_easy运行结果

MH_02_easy

MH_03_meldium

evo安装

参考博客:

测评工具evo安装与使用_雾雨hub的博客-CSDN博客_evo工具

真实轨迹储存在下载的数据集如下路径

MH_01_easy/mav0/state_groundtruth_estimate0

 其中包含data.csv文件,为了进行evo测评需要将其转换为tum格式,转换后第一个第一列为时间戳信息。第二到第四列为位置信息,后四列为四元数表示旋转信息。转换方式如下:

evo_traj euroc data.csv --save_as_tum

 用EVO评价绝对位姿误差(APE)和相对位姿误差(PRE)

输入如下指令进行绝对位姿误差测评

 evo_ape data.tum  ./ORB-2/1/CameraTrajectory.txt -r angle_deg --delta 1 --delta_unit m -va --plot --plot_mode xz --save_plot ./orbslam_MH01plot --save_results ./ORB-2/1/orbslam_MH01.zip
./ORB-2/1/CameraTrajectory.txt (路径改成自己的.这是ORB-SLAM2运行结束生成的轨迹文件)
--plot_mode xz 划出二维图像若改成xyz则画出三维图像
./orbslam_MH01plot --save_results 保存图片名称(保存在终端运行目录)
./ORB-2/1/orbslam_MH01.zip(保存在和轨迹文件同级目录,后期比较三个算法需要用到,可以把所有压缩文件放到统一文件夹)改成自己的!!!

ORB-SLAM2

APE

MH_01

MH_02

MH_03(丢了一张尴尬哈哈哈哈)

PRE

evo_rpe data.tum  ./ORB-2/1/CameraTrajectory.txt -r angle_deg --delta 1 --delta_unit m -va --plot --plot_mode xz --save_plot ./orbslam_MH01plot --save_results ./ORB-2/1/orbslam_MH01.zip
./ORB-2/1/CameraTrajectory.txt (运行生成的相机轨迹文件)
./orbslam_MH01plot --save_results(结果图片保存名称前缀)
./ORB-2/1/orbslam_MH01.zip(结果的压缩文件)

MH_02

MH_03

 

ORB-SLAM3

图太多了,每个放一张示意:

APE

输入命令和ORB-SLAM2一样(只需要改路径就行)

MH_01

MH_02

MH_03

PRE

MH_01

MH_02

MH_03

VINS

APE

MH_01

MH_02

MH_03

PRE

MH_01

MH_02

MH_03

综合比较 三种算法

利用命令行

evo_res *.zip -p --save_table table.csv
进入到zip文件夹目录下,使用该命令
*.zip该文件夹下所有以zip为结尾的文家
table.csv保存文件的名字
生成的table.csv更全面,但放图更加直观

APE

MH_01

 MH_02

MH_03

 

PRE

 MH_01

MH_02

 

MH_03

参考博客

VINS-Mono运行与评测_熊猫飞天-CSDN博客

开源SLAM方案评价与比较_whut_chengjun的博客-CSDN博客

测评工具evo安装与使用_雾雨hub的博客-CSDN博客_evo工具