视觉slam开源方案对比(ORB-SLAM2,ORB-SLAM3,VINS)

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

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工具

  • 11
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: b'vins-fusion'和'orb-slam'都是视觉SLAM算法,但它们的原理和实现略有不同。'vins-fusion'能够更好地处理动态环境和IMU的数据,而'orb-slam'在处理静态场景时更稳定和效果更好。具体使用哪种算法要根据自身的应用场景和需求来选择。 ### 回答2: Vins-fusionorb-slam是两种经典的视觉SLAM方法。其主要区别在于它们的架构和实现方式,下面将分别对它们进行简单的介绍和比较。 Vins-fusion是由加拿大滑铁卢大学的研究团队开发的一种基于视觉和惯性传感器融合的SLAM方法。该算法采用了双目相机和惯性测量单元(IMU)的信息,结合非线性优化方法,实现了建立基于特征点的稠密地图和相机位置、速度估计。该算法的优点在于其能够从多个传感器中融合不同类型的数据,提高了相机位置估计精度和鲁棒性。 相比之下,ORB-SLAM则是一种使用单目相机的基于特征点匹配的SLAM方法。它基于FAST角点检测和ORB特征描述子,采用优化方法求解相机位姿和地图点,从而实现对相机的位姿估计和地图构建。该算法的优点在于其实现简单,适用于不同场景下的运动物体跟踪和建图。 总体而言,Vins-fusion相比ORB-SLAM在鲁棒性和精度上有所提高,但是需要使用双目相机和IMU等多种传感器,实现相应的硬件条件和算法复杂度也较高。而ORB-SLAM则存在对特定场景下角点检测和匹配的敏感性问题,但是其实现方式较为简单,适用范围广泛,更容易被广泛采用。因此,在实际应用中,需要根据具体的场景和需求来选择适合的SLAM方法。 ### 回答3: Vins-FusionORB-SLAM都是常用的视觉惯性里程计(Visual-Inertial Odometry,VIO)算法,它们都基于姿态估计和特征匹配,实现了同时定位与建图(SLAM)的功能。 比较Vins-FusionORB-SLAM,可以从以下几个方面入手: 1. 精度:Vins-Fusion采用深度学习和卡曼滤波等技术,能够达到较高的精度,尤其是在动态环境下的鲁棒性更强;而ORB-SLAM则采用了优化方法和关键帧选择等技术,也有一定的精度,但在动态环境下易出现漂移等问题。 2. 稳定性:Vins-Fusion对光照变化、拍摄角度变化等有一定的鲁棒性,能够在复杂环境下保持较好的稳定性;而ORB-SLAM对光照变化等敏感,稳定性稍逊。 3. 实时性:Vins-Fusion具有较高的实时性,能够在移动设备等资源有限的场景下工作;而ORB-SLAM对计算资源要求较高,适合在较为强大的计算设备上工作。 4. 易用性:ORB-SLAM具有较好的开源生态,有丰富的文档和代码示例,对开发者较为友好;而Vins-Fusion的开发和使用相对较为复杂,需要掌握深度学习和卡曼滤波等专业知识。 综合来看,Vins-FusionORB-SLAM各有优劣,适用于不同的场景和需求。开发者可以根据项目要求选择适合自己的算法,并结合实际情况进行优化和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值