干货丨视觉SLAM开源方案汇总及设备选型建议

article/2025/10/14 8:25:39

作者 | INDEMIND  编辑 | 汽车人

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心技术交流群

后台回复【SLAM综述】获取视觉SLAM、激光SLAM、RGBD-SLAM等多篇综述!

01

SLAM的引入

1.1定义

SLAM 是 Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建立环境的模型,同时估计自己的运动。如果这里的传感器主要为相机,那就称为“视觉 SLAM”。

1.2开发背景

c435cd76da7cde5919837d937eb9fb71.png 图1-1 SLAM中建图的分类与作用

 引入SLAM的主要目的如下:

 1)建图 

使用SLAM可在传感器具有良好表现的环境下建立精度较高的全局地图,建立好的地图会为后面的定位、导航等功能提供服务。

 2)定位

视觉SLAM中可通过帧间数据匹配计算相机的相对变换,对应的就是机器人的位姿信息,不过该计算结果中存在累计误差的影响;利用SLAM建立的全局地图,通过相机采集到的环境信息与地图进行匹配可以减小累积误差的影响,获得更加精准的机器人位姿。

 3)导航

如果我们建立的地图中包含了“哪些地方可以通过,哪些地方不能通过”的信息,那么我们可以以此实现机器人在地图中从某一起点到某一终点的路径规划与跟踪,并能够对地图中固定障碍物实现避障。但这对我们能够建立的地图有要求,需要是“稠密”地图。

02

视觉SLAM

2.1 经典视觉SLAM框架

SLAM至今已历经三十多年的研究,这里给出经典视觉SLAM框架,这个框架本身及其包含的算法已经基本定型,并且已经在许多视觉程序库和机器人程序库中提供。

1b2f3ded4dccb9dfb91bf40ed1b22468.png

图2-1 经典视觉SLAM框架

我们把整个视觉 SLAM 流程分为以下几步:

1)传感器信息读取,在视觉 SLAM 中主要为相机图像信息的读取和预处理。如果在机器人中,还可能有码盘、惯性传感器等信息的读取和同步。

2)视觉里程计 (Visual Odometry, VO),视觉里程计任务是估算相邻图像间相机的运动,以及局部地图的样子,VO 又称为前端(Front End)。

3)后端优化(Optimization),后端接受不同时刻视觉里程计测量的相机位姿,以及回环检测的信息,对它们进行优化,得到全局一致的轨迹和地图。由于接在 VO 之后,又称为后端(Back End)。

4)回环检测(Loop Closing),回环检测判断机器人是否曾经到达过先前的位置。如果检测到回环,它会把信息提供给后端进行处理。

5)建图(Mapping),它根据估计的轨迹,建立与任务要求对应的地图。

某些使用场合中,我们只截取SLAM的部分功能应用到实际场景中。举例来说只使用VO部分我们可以得到连续的相机相对运动信息,虽然该运动信息存在累计误差,但应用中对此要求不高甚至不做要求,譬如VR头显中计算头显设备运动时的位姿。

不过一般在机器人应用场景中,个人认为建图功能也是不可或缺的。因为前端包括后端优化得到的运动信息始终包含累积误差,该累积误差在SLAM中只能通过回环检测(机器人回到某一处曾经经过的地方且系统识别出来)或者与事先建立好的具有较高精度的全局地图匹配来消除。但是机器人在实际运动中,不能保证全局路径一定会有重叠处,也就是说在SLAM计算中很可能出现不存在回环的情况,此时累积误差只能通过与全局地图匹配来消除,因此SLAM的建图功能也不可或缺。

 78a31e68a544783d08ece1d7e48886c4.png

图2-2 回环检测消除累积误差

这一点在VINS开源项目(香港科技大学团队基于单目+IMU开发的开源SLAM方案)中的测试视频(见“视频/VINS/[Open Source] VINS-Mono_ Monocular Visual-Inertial System in EuRoC MAV Dataset (MH_05 V1_03).mp4”)中也有体现。在回环检测前,SLAM计算得到的位姿与真实位姿之间已经产生了很大的偏差,如图2-3所示;该偏差只有在相机回到了曾经经过的地方且SLAM成功执行了回环检测后才得到了消除,如图2-4所示。

 fdcd800ba6c1b37c1d69e9393f7509d6.png

图2-3 未进行回环检测前的位姿累积误差

fa06e9200b26e414e20d5fd4bf46f3c7.png 图2-4 回环检测消除累计误差

2.2视觉SLAM方案的分类

视觉SLAM方案可按照传感器的不同(单目、双目、RGBD、与IMU的组合等)、前端方法的不同(主要分为直接法和特征点法)、后端优化方案的不同(滤波或者非线性优化)、生成地图形式的不同(稀疏地图、稠密地图等)具有不同的划分。这里主要以传感器的不同对slam方案进行简单的介绍。

1)单目slam

只使用一个摄像头采集信息,在尺度完成初始化的情况下(即相机初始阶段进行了一段位移且确定了该段位移的实际大小作为参考),能够完成连续图像间相机位姿的计算与建图。优点在于设备简单,成本低。缺点在于存在尺度漂移现象;图像的深度信息只能通过三角测量计算得到,对环境适应性差;在相机位移较小时计算误差较大,建图精度不高。

2)双目slam

使用双目相机采集信息,双目相机可以通过立体视觉原理计算得到像素深度,这样就不存在单目slam中深度未知的情况。优点在于对环境的适应性要高于单目slam,且能够计算得到像素真实深度;缺点在于像素深度计算量较大,一般通过FPGA或者GPU加速实现实时计算输出。

3)RGBD SLAM  

RGBD相机是指能够同时输出RGB图像和对应的深度图的相机,其测量像素深度不再通过耗时的被动双目匹配计算,而是通过激光散斑增加图像纹理加速计算或者硬件测量(结构光、TOF等)实现。因此它可以看做减小了计算量的双目SLAM,但是RGBD相机普遍在室外表现效果不佳,更多用于室内环境。

4)近年来有学者提出单目/双目+IMU的slam方案,其中IMU主要起到的作用包括:

(1)解决单目slam的初始化尺度问题

(2)追踪中提供较好的初始位姿

(3)提供重力方向

(4)提供一个时间误差项以供优化。理论上来说IMU提供了冗余的运动信息,通过数据融合可以得到更加精确的运动估计。

从实现难度上来看:单目SLAM>双目SLAM>RGBD SLAM。

2.3 开源视觉SLAM方案汇总

目前比较流行的开源视觉SLAM方案如表2-1所示:

方案名称

传感器形式

地址

MonoSLAM

单目

https://github.com/hanmekim/SceneLib2

PTAM

单目

http://www.robots.ox.ac.uk/~gk/PTAM/

ORB-SLAM2

单目/双目/RGBD

https://github.com/raulmur/ORB_SLAM2

LSD-SLAM

单目为主

http://vision.in.tum.de/research/vslam/lsdslam

SVO

单目

https://github.com/uzh-rpg/rpg_svo

DTAM

RGB-D

https://github.com/anuranbaka/OpenDTAM

DVO

RGB-D

https://github.com/tum-vision/dvo_slam

DSO

单目

https://github.com/JakobEngel/dso

RTAB-MAP

双目/RGB-D

https://github.com/introlab/rtabmap

RGBD-SLAM-V2

RGB-D

https://github.com/felixendres/rgbdslam_v2

Elastic Fusion

RGB-D

https://github.com/mp3guy/ElasticFusion

OKVIS

多目+IMU

https://github.com/ethz-asl/okvis

ROVIO

单目+IMU

https://github.com/ethz-asl/rovio

VINS

单目+IMU

https://github.com/HKUST-Aerial-Robotics/VINS-Mono

表2-1 开源SLAM方案汇总

03

视觉SLAM设备选型

3.1 设备选型的重要性

设备选型的重要性不言而喻,毕竟“好模型架不住坏数据”,SLAM模型建立得再好,如果设备采集的数据本身误差过大,计算结果必定也不够理想。先以VINS项目为例,根据论文内容他们的设备型号和具体信息如下。

相机模块:单目相机,型号为MatrixVision的mvBlueFOX-MLC200w,具有全局快门;cmos型号为MT9V034,单色,分辨率为752X480,帧率20Hz。

IMU:该模块使用的是大疆的集成飞控模块A3的内置IMU模块,芯片型号为ADXL278和ADXRS290(都为工业级IMU芯片);可以确定A3内置对IMU的校准去躁等处理算法。

 d5c4ba57e4d2358b5b5d9fd580bdc631.png

 图3-1 VINS中设备型号

由此看来VINS选用的硬件是具有一定要求的,其采集数据的精度也对SLAM算法最终的效果产生正向作用。

3.2 设备类型选择

以RGBD相机为例,很多基于结构光或者ToF方案的深度摄像头在室外表现不佳,主要原因是室外自然光的影响。个人初步倾向于选用双目或者RGBD(双目某些情况下可视为RGBD)+IMU的方案,主要理由如下:

1)双目/RGBD+IMU的硬件,可在此基础上尝试基于单目/双目/RGBD/单目+IMU/双目+IMU等多种开源SLAM方案;反之单目+IMU的设备对开源方案的限制较大(只能是单目/单目+IMU)。

72af459697e27adbc1ea716bb036d5a8.png

INDEMIND双目惯性模组(点击原文链接了解详情)

2)单目SLAM在建图方面,尤其是深度估计方面,对场景适应性不好且精度较差。双目/RGBD因为可以计算得到深度,在建图方面相对具有优势,更容易建立“稠密”地图。

3)SLAM定位实现中,基于单目的方案其计算量也要比基于双目/RGBD要大,且因为引入了三角测量部分,对于环境适应性较差。

所以在选型方面,可主要聚焦在双目/RGBD类型;同时为了加快开发进程,可选择类似INDEMIND双目惯性模组提供开发SDK等工具的产品,可以省去对于相机的标定、数据同步等开发工作。

本文仅做学术分享,如有侵权,请联系删除

-END-

视频课程来了!

自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)

82b0109e92cb0839181c958187af0ad9.png

(扫码学习最新视频)

国内首个自动驾驶学习社区

近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!

bf4bd109fdf4335bc045e881503bdb46.jpeg

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;

e177f95c4a918798e07483d4bb8e938d.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称


http://chatgpt.dhexx.cn/article/8WckuZV2.shtml

相关文章

设备类型

1.GPIO或门电路类 ,串口等协议类接口,i2c等是通过内存控制器被CPU操控的,cpu通过发地址给内存控制器,然后内存控制器根据不同的地址去 选择对应的寄存器 2.norflash、SDRAM、网卡,是cup直接操作的,他们的原理图上有地…

视觉SLAM开源方案汇总及设备选型建议

作者I Mega_LiCSDN 编辑I 3D视觉开发者社区 点击进入—>3D视觉工坊学习交流群 一、SLAM的引入 1.1定义 SLAM 是 Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况…

数据中心电气设计怎么做?丨规范、负荷计算、设备选型、微模块/液冷机房…...

在“互联网”、大数据战略、数字经济等国家政策的指引驱动下,各地都在完善大数据体系相关内容的建设,其中数据中心是数字经济运行的底座。 “十四五”期间,数据中心投资将以每年超过20%的速度增长,累计带动各方面投资将超过3万亿元…

【学习笔记】硬件设备选型

——学习笔记摘自阅读学习《IT基础架构:系统运维实践》章节 【序言】 硬件平台是支撑生产系统运行的基础设施。随着企业的不断发展,应用负载和数据量在日益增加,只有搭建一套性能优良、稳定可靠的硬件平台,才能保障生产系统高效…

数据中心末端配电的数字化方案及设备选型

普通PDU和智能PDU有什么区别? 机架安装配电盘或机架配电单元 (PDU) 是一种配备许多插座的设备,可将电力分配给位于数据中心机架或机柜内的服务器、存储设备和网络设备。领先的分析公司 IHS 将它们分为两大类: 1) 基本 PDU 提供可靠的配电。 2…

Linux虚拟机IP地址查询

查询IP地址: 在终端输入ifconfig查询IP地址: ifconfig输出上图结果,地址是10.0.2.15。我想,IP地址应该就是这个吧,结果我去FileZilla连接时连不上。 然后去百度“虚拟机IP地址10.0.2.15”,说是需要把Vir…

Linux查询ip地址ens33没有inet这个属性

首先输入用户名和密码登录CentOS7虚拟机; 输入ip addr 这是会发现ens33是没有inet属性的; 然后输入:cd /etc/sysconfig/network-scripts/ 找到ifcfg-enc33这个文件进行编辑 输入 vi ifcfg-ens33 也可以直接输入: vi /etc/sysconfi…

linux查询ip命令

摘要: 1、ifconfig 查看ip 2、vi 编辑 /etc/sysconfig/network-scripts 下的配置文件,设置动态分配IP有效 一、查看ip命令:ifconfig (ip add 命令也行,推荐使用这个命令) 如果没有红框中的inet 图一 查看…

关于Linux查询ip地址时出现乱码

前段时间学习Linux,想通过xshell远程连接Linux进行操作,在查询Linux地址时地址却出现乱码,如图 后来自己查了很多资料都没有搞定,就暂时跳过了。 然后今天又找资料学,查ip又出现这个问题了,查了半天才发现是…

linux 查询ip没有显示IPv4

没有IPv4的地址显示 解决: 1.跳转到目录到network-scripts cd etc/sysconfig/network-scripts 查看当前目录下的文件 使用 vi 命令修改目录下的修改ifcfg-eth0文件 vi ifcfg-eth0 进入文件后按 i 键进行编辑文件 编辑完成,按 esc 退出&#xff0c…

Linux查询IP失败

linux执行命令ip addr时返回: 执行命令: sudo dhclient ens33即可解决

Linux命令:查看服务器IP地址

文章目录 一、 hostname -i二、ifconfig三、ip addr四、ip a | more五、总结 查看 Linux 服务器的 IP 地址的命令大体上有以下几种。 一、 hostname -i 查看当前登录的服务器的ip地址: hostname -i如果你网上搜索,会有很多种命令,实际上在…

在 Linux 中查找 IP 地址的 3 种简单方法

在 Linux 系统中,经常需要查找 IP 地址以进行网络配置、故障排除或安全管理。无论是查找本地主机的 IP 地址还是查找其他设备的 IP 地址,本文将介绍三种简单的方法,帮助你在 Linux 中轻松找到所需的 IP 地址。 方法一:使用 ifconf…

英1数1专业课408计算机考研312分,408计算机考研复习经验:各个突破全面掌握

计算机考研复习经验:各个突破全面掌握 2009-06-22 来源:万学海文 我的计算机分数是133分,算下来还是考得不错的。现在把我的考研经验写下来,主要是计算机专业课的经验,供学弟学妹们参考,希望能给大家一些帮…

计组 | 2020年 408计算机统考 计算机组成原理 真题解析

【答案】B 【解析】基础概念题 机器字长:是指计算机进行一次整数运算所能处理的二进制的位数,通常与CPU的寄存器位数,加法器有关。 ALU:算术逻辑单元:实现算术运算和逻辑运算的组合逻辑电路。 指令寄存器:暂存当前正在执行的指令。单字长/多字长。 通用寄存器:用于传送…

2022年硕士研究生408计算机学科考试大纲原文(手动整理版含pdf下载)

2022年硕士研究生408计算机学科考试大纲原文 (含pdf文件下载) 自己手动整理的,方便大家学习!冲!网盘链接: 2022-408考试大纲 提取码:s2oe I 考试性质 ​ 计算机学科专业基础综合考试是为高等院校…

【408计算机考研】操作系统——第一章 计算机系统概述

文章目录 第一章 计算机系统概述1.1操作系统的基本概念1.1.1操作系统的概念1.1.2操作系统的特征1.1.3操作系统的目的和功能 1.2操作系统发展历程1.2.1手工操作阶段(此阶段无操作系统)1.2.2批处理阶段(操作系统开始出现)1.2.3分时操作系统1.2.4实时操作系统1.2.5网络操作系统和分…

【408计算机考研】计算机组成原理——第一章 计算机网络体系结构

计算机组成原理 第一章 计算机网络体系结构1.1 计算机网络概述1.1.1 计算机网络的概念1.1.2 计算机网络的组成1.1.3 计算机网络的功能1.1.4 计算机网络的分类*1.1.5 计算机网络的标准化工作1.1.6 计算机网络的性能指标 1.2 计算机网络体系结构与参考模型1.2.1 计算机网络分层结…

408计算机学科专业综合参考书目

一、考试分析 1、考察学科范围 《数据结构》——45分,约30% 《计算机组成原理》——45分,约30% 《操作系统》——35分,23.3% 《计算机网络》——25分,约16.7% 2、试卷题型及分值 选择题(1-40题) 1-…

2024年408 计算机考研 学习视频集

王道计算机考研 计算机组成原理 王道计算机考研 计算机组成原理_哔哩哔哩_bilibili 王道计算机考研 数据结构算法题讲解 王道计算机教育的个人空间-王道计算机教育个人主页-哔哩哔哩视频 王道计算机考研 数据结构 王道计算机考研 数据结构_哔哩哔哩_bilibili 王道计算机考研 计…