作者:张长鸿 湖南大学
校稿:董亚微
编辑:郑欣欣 @一点人工一点智能
入群邀请: 7 个业余方向交换群 + 1 个材料需要群
原文地址:视觉 SLAM:模型介绍、算法框架及利用场景
本文次要想应用尽量少的业余词汇来解释分明视觉 SLAM 是如何进行定位的(在某些表述上可能并不谨严),心愿对视觉 SLAM 有趣味的搭档能在刚接触 SLAM 时有个根本的理解,本文同时介绍了视觉 SLAM 的经典框架和利用场景。想要深刻学习的搭档,还请参考更业余更零碎的书籍和文献。
01 什么是 SLAM
SLAM(Simultaneous Localization and Mapping),也就是同时定位与地图构建,它是指搭载特定传感器的车辆、无人机等移动机器人,在没有环境先验信息(什么是先验信息?能够本人查一下)的状况下,在静止过程中,预计本人的静止状态,同时建设环境模型的一系列工作。
目前大家接触比拟多的,曾经将 SLAM 技术利用于理论生存中的,就是扫地机器人了。咱们来想一下:扫地机器人来到一个生疏的环境后,是怎么去打扫一个垃圾呢?一个直观的想法就是机器人先确定本人的地位,而后确定垃圾绝对于本身的地位,这样就有了一个终点和起点,机器人只须要从终点挪动到起点就能打扫这个垃圾了。然而这是很直观的想法,而这个想法的前提是:咱们分明房间的地图结构,这样咱们能力更好地实现垃圾打扫的工作。所以扫地机器人须要实现的流程应该是:理解本人四周的环境,构建房间地图,确认本人与垃圾的地位,而后布局路线,挪动过来,实现打扫。而这整个流程中,构建地图、进行本身的定位,就是咱们 SLAM 的次要工作了。
通过这样一个小例子,就能够体现出 SLAM 的作用,艰深地讲,SLAM 要解决的次要是两个问题:
- 我在什么中央?—- 定位
- 周围环境是什么样?—- 建图
而依据传感器类型的不同,SLAM 能够分为不同的类型,如表 1 所示
本文次要介绍的就是以相机为传感器的视觉 SLAM。视觉 SLAM 是依据一张张间断输出的图像,从中推断相机的静止,以及周围环境的状况。接下来将介绍相机模型和相机静止,咱们将看到相机模型是如何利用已知的图像信息结构观测方程,并从观测方程解出相机静止,而获取相机静止后,到此也就实现了定位。咱们先从相机模型开始,一步步推导到最初实现定位。
1.1 相机模型
相机的成像模型表示的是一个真实世界中的三维点到图像二维像素点的对应关系,即相机视线中的三维点能够在图像上找到对应的像素点,在不思考畸变的状况下,单目相机成像的现实模型为针孔模型,如图 1 所示,光心 \(O\)即镜头的核心,光轴即通过光心与物理成像立体垂直的直线,\(f \)代表焦距,即针孔到物理成像立体的间隔,代表在相机坐标系下任意的三维空间点,通过光心,投影到二维物理成像立体中点,每个三维空间点对应物理成像立体上的一个像素。
针孔模型通过成像过程中的几何关系建设三维世界到二维像素立体的映射关系,在数学上的形容就是一个函数关系式,即,也称之为观测方程,其中,二维像素坐标,三维空间点坐标 P,K 为相机内参矩阵,由相机本身的个性决定。
1.2 相机静止
理解相机静止之前,须要先理解几个基本概念:
世界坐标系: 在视觉 SLAM 中,通常把拍摄第一张图像时的相机坐标系指定为世界坐标系,在被指定后不变且惟一,能够将世界坐标系了解为笛卡尔坐标系中的原点。
相机坐标系: 以相机的光心(小孔)作为原点的坐标系,其随相机的挪动而发生变化。
相机的静止是刚体静止,刚体静止的坐标变换可由一个旋转矩阵(\(R\))和一个平移向量(\(t\))示意,思考一个三维空间点 \(P\),\(P\)点在世界坐标系下的观测值为,在相机坐标系下的观测值为,点 P 在不同坐标系下的观测值转换关系如下所示:
(1)视觉 SLAM 零碎输出的信息是不同时刻的相机图像,咱们所要利用的就是图像的像素信息,假如在第一帧坐标系下,已知某一个空间点 \(P(X,Y,Z)\),\(P\)在第一帧图像和第二帧图像上的成像点别离是 \(p_1\),\(p_2\)。
(2)通过相机模型,能够失去如下两个观测方程,\(R\)和 \(t\)代表着第一帧坐标系到第二帧坐标系的旋转和平移 \(p_1=\frac{1}{Z_1}KP,p_2=\frac{1}{Z_2}K(RP+t)\)。
(3)能够依据 8 个这样的匹配点对 \((p_1,p_2)\),求解上述方程,失去 \((R,t)\)。
(4)\((R,t)\)即代表着两个坐标系的转换关系,通常状况下,第一帧坐标系将被定为世界坐标系,因为世界坐标系是固定不变的,因而就能够失去第二帧相机坐标系的地位和姿势,也即实现了定位,定位也就是取得任意时刻的相机坐标系绝对于世界坐标系的地位和姿势。
以上的几个步骤是对问题做了很多简化才失去的,理论状况下思考的因素要多得多,如相机类型的差别,相机静止示意办法的不同,对应的具体的求解过程都是不同的,须要更深刻的钻研和学习。
1.3 建图
建图是指构建地图的过程。地图是对环境的形容,这种形容有很多种形式,要依据需要的不同构建相应的地图,地图的表现形式,次要被分为度量地图和拓扑地图两类。在 SLAM 畛域,研究者更关注度量地图。
度量地图强调准确地示意地图中物体的地位关系。度量地图又分为浓密地图和稠密地图两类,其中,稠密地图仅示意环境中有代表性的空间点,如桌子的边缘等较容易从图像中辨认的点,而其它不具备代表意义的点则被疏忽,稠密地图次要用于 SLAM 的定位。绝对于稠密地图,浓密地图则重建环境中所有的空间点,如桌子的整个立体,二维的浓密地图由正方形的网格组成,三维的浓密地图由立方体的网格组成。通常,一个小块含有占据、闲暇、未知三个状态,以表白该网格内是否有物体,浓密地图次要用于机器人或智能汽车的导航和避障。
02 SLAM 算法框架
经典的视觉 SLAM 算法框架如图 3 所示,次要包含:传感器信息读取,前端(里程计),后端,回环检测和建图。须要阐明的是,不同类型的 SLAM 技术仅在前端的解决有所不同,后端所采纳的优化算法都是通用的。本节中呈现的专业名词会略多,如果不分明的话,须要急躁的多读几遍,波及到前沿的钻研方向如果感兴趣的话,能够找到原文理解一下。
输出: 采集相机图像,并进行预处理。
前端(视觉里程计): 依据短时间内采集到的相机图像,计算相机的在移动机器人坐标系中的地位和姿势,也就是位姿,并建设部分地图。
前端的支流办法有特色点法(间接法)和间接法两种。特色点由关键点和形容子两局部组成,关键点是指该特色点在图像中的地位,它能够在多帧图像中被检测到,并通过比拟形容子来建设配对关系,通过最小化重投影误差来优化相机位姿,最经典的间接法是 orb-SLAM2。间接法没有特征提取的步骤,间接利用像素的灰度信息,通过最小化像素的光度误差来优化位姿,最经典的间接法是 DSO。
间接法和间接法的实践根底曾经较为欠缺,目前的改良方向就是在已有的实践框架中减少先验束缚如:尺度束缚,立体特色束缚,平行线特色束缚等,2022 年美团在 ICRA 学术会议上发表的工作《EDPLVO:Efficient Direct Point-Line Visual Odometry》即对前端做了改良,将线特色扩大到间接法中,取得了最佳导航论文奖。
后端: 依据不同时刻视觉里程计计算的相机位姿,3维地图点和回环检测信息,对位姿和3维地图点进行全局的优化,后端解决的是 SLAM 过程中的噪声问题,在数学上被建模为最大后验概率预计问题来解决,支流的办法有以扩大卡尔曼滤波为代表的滤波器办法和非线性优化办法。滤波器办法模式更简洁,实用于计算资源受限的场景。非线性优化办法能更准确的优化相机位姿和地图点地位,但计算工夫更长,所需计算资源更多。
回环检测: 判断机器人是否达到过先前的地位,如果检测到回环,能够提供时隔更加长远的束缚,能够打消累积误差,次要是通过图像之间的相似性来判断,最经典的办法是词袋模型。随着深度学习的疾速倒退,基于 CNN(卷积神经网络)和 RNN(循环神经网络)的办法能够无效进步回环检测的效率。
建图: 依据预计的轨迹,建设与工作要求对应的地图。对于 SLAM 来说,地图是用来辅助定位的,但对于导航、避障和三维重建等工作来说,地图在其中扮演着更重要的角色,为了实现不同的工作,地图的模式也是不同的,常见的地图类型包含占据网格地图、八叉树地图、语义地图等
以上是视觉 SLAM 倒退近 20 年所造成的经典框架,是研究者们多年工作的结晶,也是咱们发展本人钻研的根底,对于视觉 SLAM 这个畛域来说,目前越来越多的工作是联合深度学习发展的,包含语义宰割网络、深度预计网络、注意力机制等,这些网络能够与视觉 SLAM 的许多环节相结合,如特征提取和匹配、深度预计、姿势预计和重定位等,来进步视觉 SLAM 的整体性能,当然联合深度学习的视觉 SLAM 技术当初还不够成熟,确定做视觉 SLAM 的搭档,不妨一试哦~
03 SLAM 的利用场景
这部分将次要介绍 SLAM 的三大利用场景:主动驾驶的高精度定位、自主移动机器人和室内场景的三维重建。在不同场景下,对算法的精度,计算资源和计算速度的需要是不一样的。针对不同的场景,要抉择适合的算法。
3.1 主动驾驶的高精度定位
定位是高阶主动驾驶的要害一环,目前高速场景下的主动驾驶定位次要依赖于组合导航技术,高速场景下路况简略,车辆交互少,也无需频繁换道,在该场景下达到车道级 / 分米级的定位精度即可,组合导航(GNSS/INS)技术就能够满足该场景下的精度要求。
在低速城区场景中,车道较窄,车流量大,尤其在十字路口这样简单的场景下,还会呈现车道变动,为了防止车辆变道压线或车辆碰撞,这时就须要车辆达到厘米级的定位精度,在该场景下,通常须要组合导航、视觉 SLAM、激光 SLAM 等多种技术进行交融定位,来达到厘米级的定位精度。
在没有 GNSS 信号的公开车库,隧道等场景,此时组合导航(GNSS/INS)算法生效,就必须依赖于视觉 SLAM 或激光 SLAM 进行定位。
3.2 自主移动机器人
随着移动机器人的智能化水平逐步晋升,主动移动机器人曾经开始呈现在家庭服务、物流仓储与搬运、故障检测等畛域当中,已经只存在于工业特种场景下的移动机器人,正逐步走进咱们的日常生活中。
不同场景下的机器人须要执行不同的简单工作,但良好的自主导航是实现绝大多数简单工作的前提要求,导航是指机器人可能从以后地位行驶至指定指标点,而精确的实现定位是自主导航的要害,如果谬误的预计了本身的地位,最初导航的后果可能就会差十万八千里,机器人天然就不可能实现指定的工作。
SLAM 技术就能够满足机器人定位的需要,能够使机器人在未知环境下,在前进过程中同时实现本身的定位与建图,当确定了机器人在地图中的地位以及周围环境后,便能够设计门路布局算法,计算出机器人达到指定地位的轨迹,而后管制机器人沿着指定的轨迹静止,即实现了导航工作。目前视觉 SLAM 和激光 SLAM 技术在移动机器人上都有利用,因为激光传感器受环境影响较小,并且激光 SLAM 倒退技术较早,目前曾经能够大规模商用落地。相较于激光 SLAM 算法,因为相机易受光照和环境构造的影响,视觉 SLAM 算法的鲁棒性还无奈和激光 SLAM 达到同一水准,因而须要借助和 IMU 的联合,实现更好的鲁棒性和更高的精度。
对于 SLAM 技术来说,要实现导航工作,构建地图是必要的,地图能够实现路标以及环境的可视化,此外,地图能够辅助机器人进行更优的定位以及失落地位后的从新定位,移动机器人须要的是 3D 浓密地图,而地图的规模是随着场景的增大而增大的,地图越大就意味着咱们须要更多的内存资源去存储地图,因而如何判断是否更新地图,如何高效存储、表征和更新地图是值得咱们钻研的。
常识扩大:
除了 SLAM,目前支流的移动机器人定位技术还有组合导航(GPS/INS)、二维码导航 / 磁导航。
组合导航(GNSS/INS)
GNSS 技术是指通过观测 GNSS 卫星取得坐标系内相对定位坐标的测量技术,中国的北斗导航系统和美国的 GPS 都属于 GNSS 技术,在空阔处繁多的 GNSS 的定位误差小于 5 米,在城市环境下 GNSS 信号易被遮挡,此时 GNSS 的定位误差可能会达到几十米。因而当初大多采纳组合导航(GNSS/INS)的形式,能极大的进步组合导航的鲁棒性,当然其利用场景次要还是在空阔的室外。
二维码导航 / 磁导航
AGV 最后是用来运输港口的集装箱,AGV 最后是采纳磁导航的,这种形式须要依照肯定的距离,在机器人行驶路线上提前埋上磁钉,AGV 小车通过本身装置的磁导航传感器接管磁钉信息,从而实现本身的定位,其静止门路也就是由磁钉的安排决定,升高了门路布局技术的要求,该技术实用于港口,工厂主动搬运这类关闭且有固定行驶门路的机器人。而这种技术的毛病在于:磁钉会呈现老化的问题,更换磁钉的代价很大,不能轻易变更机器人经营路线,这个毛病很大水平上制约了 AGV 技术更大范畴的使用。当然 AGV 倒退到当初,也呈现了采纳二维码导航的形式,通过 AGV 小车扫描天花板或者地板上二维码的形式获取以后地位信息,在仓储物流行业和服务送餐机器人都有使用。
3.3 室内场景的三维重建:AR(加强事实技术)等
AR 能够被了解为这样一项技术:通过图像和其余传感器信息计算相机的地位和三维环境构造,并联合 3D 渲染提供更天然的人机交互能力。举一个简略的场景,你能够在 VR 设施中领有一只虚构的小猫,在一个周末的午后,它会懒洋洋的躺在你的脚边,并不断打着哈欠。要实现这样的一个场景,AR 设施须要具备以下三个性能:
· 自我定位: 指定位出 AR 设施在空间中的地位,这样 AR 设施能力将虚构物体渲染在适合的地位上,将“小猫”渲染在脚边就须要晓得本身在空间的地位。
· 环境感知: 指感知到周围环境的三维几何信息,这样能力让虚构物体和真实世界产生交互,如果想让“小猫”跳到桌子上,就必须晓得桌子的空间地位和形态。
· 人机交互: 要了解来自周围环境的输出,如人类的语言、手势,并给出反馈。
而想要实现自我定位和环境感知的性能就须要 SLAM 技术,具体而言,须要的是视觉惯导 SLAM 技术,视觉惯导 SLAM 也是以后实现 AR 的支流计划,相比于单纯依附相机的纯视觉 SLAM 计划,视觉惯导 SLAM 通过从相机输出的图像信息和 IMU 的速度、加速度信息实现更精确的定位,同时图像信息能提供更丰盛的环境信息,更有利于后续算法了解环境,以实现人机交互。再加上因为制作工艺的成熟,MIU 和相机设施体积更小分量更轻,价格也绝对便宜,综合以上因素思考,视觉惯导 SLAM 技术要更为符合 AR 设施的需要。那么,最为经典的视觉惯导 SLAM 算法是 vins-mono 算法。
当然,目前的视觉惯导 SLAM 算法只能说根本满足了 AR 设施的需要,但为了让消费者取得更好的体验,AR 设施必然会往更小,更轻的方向上倒退,实际上,硬件的小型化和轻量化的确也是更为迫切的需要。当然,并不是说算法就不重要了,相比于主动驾驶汽车和移动机器人,AR 设施对 SLAM 算法的要求要更高。
首先,SLAM 算法的计算效率要更高,小的设施往往意味着更少的计算资源,如何应用更少的计算量实现同样的成果是一个能够长期钻研的方向;
其次,相比于主动驾驶汽车和机器人,AR 设施要更容易呈现一些极其状况,比方你的身材忽然转动了 180°,这对于佩戴 AR 设施的你来说是失常的,但 AR 设施可能因为这样强烈的旋转呈现定位失败的状况,这就对 SLAM 算法的鲁棒性提出了更高的要求;
最初,如何应用更短的工夫和更少的动作来疾速实现初始化也是很重要的,就如同你心愿你的笔记本电脑的开机速度越快越好一样,你也不想在穿戴好 AR 设施后,要期待 30s 并且实现某些动作后能力开始应用你的设施。
04 结语
整体而言,SLAM 波及的知识面很多,前端包含相机图像处理、激光雷达点云解决、IMU 数据处理,后端的优化算法包含卡尔曼滤波、非线性优化,回环检测更多的属于机器学习的领域以及各类的建图算法,更进一步的还须要深度学习的常识。如果想要理解或者入行 SLAM 的话,首先举荐高翔博士的视觉 SLAM 十四讲,在第一遍学习的过程中,能够快一些,疾速把握 SLAM 由哪些局部组成,每一部分的目标是什么,第一遍学完后,能够将综述性的论文、经典论文、十四讲的代码和理论知识联合起来学习。在根底打好后,就可以看一下前沿的学术论文,选定其中一个方向进行钻研,这里要留神的是,钻研方向是偏差待业还是偏差做学术,须要视集体状况而定。同时不要放过每一次和同行交换的机会,能够是师兄、论坛、交换群等等,SLAM 波及的技术太多,要宽阔本人的视线,一直地刷新本人的学习路线。
参考文献:
[1] 视觉 SLAM14 讲:从实践到实际 第 2 版
[2] An Overview on Visual SLAM: From Tradition to Semantic
[3] https://mp.weixin.qq.com/s/3YRQMAk6eaqBCQSLkxWjKQ
[4] A Comprehensive Survey of Visual SLAM Algorithms
- 综述:深度学习驱动下的相机标定技术
- 基于多传感器交融的定位和建图零碎
- 基于全局特征描述子的激光 SLAM 回环检测办法
- 书籍举荐 -《简单地形中,SLAM 技术在移动机器人中的利用》
- 两万字长文 | 面向不确定性环境的主动驾驶静止布局:时机与挑战