0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

高翔博士分享:单目SLAM在移动端应用的实现难点有哪些?

QQ475400555 来源:zhihu 2023-06-07 15:02 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

提纲如下:

单目SLAM难点

视觉SLAM难点

可能的解决思路

图片中非原创部分均已加引用,请勿盗图,转载请私信告知。

单目slam的障碍来自于理论和实践两个方面。理论障碍可以看做是固有的,无法通过硬件选型或软件算法来解决的,例如单目初始化和尺度问题。实践问题包括计算量,视野等,可以依靠选型、算法、软件设计等方法来优化。不过在同等硬件水平下,优化也存在极限的。比如对O(1)的算法不满意从而设计O(1/n)的算法似乎是不可能的……

单目SLAM难点

单目的优点是成本低,最大的局限性是测不到空间物体的距离,只有一个图像。所以早期视觉SLAM也被称为“只有角度的SLAM”(Bearing Only)。距离在定位中至关重要,双目和RGBD相机的使用就是为了能够计算(或测量)这个距离。上一个图你们直观体会一下距离的重要性:

5f33adca-04e7-11ee-90ce-dac502259ad0.jpg

很显然,没有距离信息,我们不知道一个东西的远近——所以也不知道它的大小。它可能是一个近处但很小的东西,也可能是一个远处但很大的东西。只有一张图像时,你没法知道物体的实际大小——我们称之为尺度(Scale)。

可以说,单目的局限性主要在于我们没法确定尺度,而在双目视觉、RGBD相机中,距离是可以被测量到的(当然测量也有一定的量程和精度限制)。双目视觉和人眼类似,通过左右眼图像的差异来计算距离——也就是所谓的立体视觉(Stereo)。RGBD则是把(通常是红外)光投射到物体表面,再测量反射的信息来计算距离的。具体原理分结构光和ToF两种,在此不多做解释,还是上图直观感受一下。

5f3cc356-04e7-11ee-90ce-dac502259ad0.png

5f481864-04e7-11ee-90ce-dac502259ad0.png

距离未知导致单目SLAM存在以下问题:

需要初始化

尺度不确定

尺度漂移

而一旦我们拥有了距离信息,上述几条就都不是问题,这也是双目和RGBD存在的意义。下面分别讲一下以上几条。

---------------我是分割线-----------------

1.1 初始化

单目SLAM刚开始时,只有图像间的信息,没有三维空间的信息。于是一个基本问题就是:怎么通过两张图像确定相机自身运动,并且确定像素点的距离。这个问题称为单目SLAM初始化问题。一般是通过匹配图像特征来完成的。

5f59d522-04e7-11ee-90ce-dac502259ad0.png

匹配好的特征点给出了一组2D-2D像素点的对应关系,但由于是单目,没有距离信息。初始化的意义是求取两个图像间的运动和特征点距离,所以初始化完毕后你就知道这些特征点的3D位置了。后续的相机运动就可以通过3D点-2D点的匹配信息来估计。后续的问题叫PnP(Perspective n Point)。

对,你想的没错,单目的流程就是:初始化——PnP——PnP——……

初始化的运动是通过对极几何来求解的,结构是由三角测量得到的。初始化问题是一个2D-2D求运动和结构的问题,比3D-2D的PnP要难(信息更少,更不确定)。我不展开对极几何求运动的原理,但是理解它,对理解单目局限性是很有帮助的。如题主感兴趣,请看Multiple View Geometry第8章。如果在知乎上写,会占掉很大的篇幅。

对极几何最终会分解一个本质矩阵(Essential Matrix)(或基本矩阵(Fundametal Matrix))来得到相机运动。但分解的结果中,你会发现对平移量乘以任意非零常数,仍满足对极约束。直观地说,把运动和场景同时放大任意倍数,单目相机仍会观察到同样的图像!这种做法在电影里很常见。例用用相机近距离拍摄建筑模型,影片看起来就像在真实的高楼大厦一样(比如奥特曼打怪兽实际是两个穿着特摄服装的演员,多么无情的现实)。

这个事实称为单目的尺度不确定性(Scale Ambiguity)。所以,我们会把初始化的平移当作单位1,而之后的运动和场景,都将以初始化时的平移为单位。然而这个单位具体是多少,我们不知道(摊手)。并且,在初始化分解本质矩阵时,平移和旋转是乘在一起的。如果初始化时只有旋转而没有平移,初始化就失败了——所以业界有种说法,叫做“看着一个人端相机的方式,就知道这个人有没有研究过SLAM”。有经验的人会尽量带平移,没经验的都是原地打转……

所以,从应用上来说,单目需要一个带平移的初始化过程,且存在尺度不确定问题,这是它理论上的障碍。

员工:老板你这样移动相机不行啊,要有平移的……

老板:我花20k请你来做slam,一个初始化都搞不定?

1.2 结构问题

由于单目没有距离信息,所有特征点在第一次出现时都只有一个2d投影,实际的位置可能出现在光心与投影连线的任意一处。只有在相机运动起来以后,才可能通过三角测量,估计特征点的距离。

三角测量的应用范围很广,传说高斯在十几岁的时候就已经用最小二乘法测量山的距离,来吊打这些二十大几还在水paper的博士们。现代天文学测星星的距离也使用三角测量。

5f9c2fd0-04e7-11ee-90ce-dac502259ad0.png

然而三角测量的前提是——你得有三角啊。

高斯用三角测量是站在两座山上去量另一座,这就构成了三角。双目视觉左右两个相机,存在一定的平移,和目标点也构成了三角。但在单目情形下,你必须移动相机之后,才可能去估计空间点的3D位置。换句话说,如果相机摆在那儿不动——就没有三角了。这导致单目在机器人避障中应用存在困难,不过既然在谈AR我们就先不说机器人吧。

1.3 尺度漂移

用单目估计出来的位移,与真实世界相差一个比例,叫做尺度。这个比例在初始化时确定,但单纯靠视觉无法确定这个比例到底有多大。进而,由于SLAM过程中噪声的影响,这个比例还不是固定不变的。当你用单目SLAM,会发现,咦怎么跑着跑着地图越来越小了……

5fb0b266-04e7-11ee-90ce-dac502259ad0.png

这种现象在当前state-of-the-art的单目开源方案出亦会出现,修正方法是通过回环检测。但是有没有出现回环,则要看实际的运动方式。所以……

员工:老板你这样移动相机不行啊,要经常把它移回去……

老板:我花20k请你来做slam,怎么搞的地图一会儿大一会儿小,这怎么用?

---------------我是分割线-----------------

视觉SLAM的困难

双目相机和RGBD相机能够测量深度数据,于是就不存在初始化和尺度上的问题了。但是,整个视觉SLAM的应用中,存在一些共同的困难,主要包括以下几条:

相机运动太快

相机视野不够

计算量太大

遮挡

特征缺失

动态物体或光源干扰

2.1 运动太快

运动太快可能导致相机图像出现运动模糊,成像质量下降。传统卷帘快门式的相机,在运动较快时将产生明显的模糊现象。不过现在我们有全局快门的相机了,即使动起来也不会模糊的相机,只是价格贵一些。

5fc83152-04e7-11ee-90ce-dac502259ad0.png

(你真以为啥图都可以用来SLAM吗?拿衣服啊,图片来自TUM数据集)

5fd7282e-04e7-11ee-90ce-dac502259ad0.png

(全局快门相机在拍摄高速运动的物体仍是清晰的,图片来自网络)

运动过快的另一个结果就是两个图像的重叠区(Overlap)不够,导致没法匹配上特征。所以视觉SLAM中都会选用广角、鱼眼、全景相机,或者干脆多放几个相机。

2.2 相机视野不够

如前所述,视野不够可能导致算法易丢失。毕竟特征匹配的前提是图像间真的存在共有的特征。

2.3 计算量太大

基于特征点的SLAM大部分时间会花在特征提取和匹配上,所以把这部分代码写得非常高效是很有帮助的。这里就有很多奇技淫巧可以用了,比如选择一些容易计算的特征/并行化/利用指令集/放到硬件上计算等等,当然最直接的就是减少特征点啦。这部分很需要工程上的测试和经验。总而言之特征点的计算仍然是主要瓶颈所在。要是哪天相机直接输出特征点就更好了。

2.4 遮挡

相机可能运动到一个墙角,还存在一些邪恶的开发者刻意地用手去挡住你的相机。他们认为你的视觉SLAM即使不靠图像也能顺利地工作。这些观念是毫无道理的,所以直接无视他们即可。

2.5 特征缺失、动态光源和人物的干扰

老实说SLAM应用还没有走到这一步,这些多数是研究论文关心的话题(比如直接法)。现在AR能够稳定地在室内运行就已经很了不起了。

---------------我是分割线-----------------

可能的解决思路

前边总结了一些单目视觉可能碰到的困难。我们发现大部分问题并不能在当下的视觉方案能够解决的。你或许可以通过一些工程技巧加速特征匹配的过程,但像尺度、遮挡之类的问题,明显无法通过设计软件来解决。

所以怎么办呢?——既然视觉解决不了,那就靠别的来解决吧。毕竟一台设备上又不是只有一块单目相机。更常见的方案是,用视觉+IMU的方式做SLAM。

当前广角单目+IMU被认为是一种很好的解决方案。它价格比较低廉,IMU能在以下几点很好地帮助视觉SLAM:

IMU能帮单目确定尺度

IMU能测量快速的运动

IMU在相机被遮挡时亦能提供短时间的位姿估计

所以不管在理论还是应用上,都出现了一些单目+IMU的方案[2,3,4]。众所周知的Tango和Hololens亦是IMU+单目/多目的定位方式。

5fe1d6ac-04e7-11ee-90ce-dac502259ad0.png

(用Tango玩MC,缺点是盖的房子尺寸和真实世界一样。盖二楼你就得真跑到楼上去盖——这怎么造圆明园?)

6075d852-04e7-11ee-90ce-dac502259ad0.png

(这货就是靠后边这鱼眼+IMU做跟踪的)

(Hololens图就不上了吧……横竖也不是自己的)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4760

    浏览量

    97136
  • 图像
    +关注

    关注

    2

    文章

    1095

    浏览量

    42154
  • SLAM
    +关注

    关注

    24

    文章

    456

    浏览量

    33185
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    从基本原理到应用的SLAM技术深度解析

    LSD-SLAM 即 Large-Scale Direct SLAM,兼容相机和双目相机。LSD-SLAM是一种基于光流跟踪的直接法
    发表于 02-26 09:41 1.5w次阅读
    从基本原理到应用的<b class='flag-5'>SLAM</b>技术深度解析

    SLAM技术的应用及发展现状

    )、无人机、自动驾驶等都有应用,大疆位工程师甚至说过“所有关于无人机的梦想都建立SLAM之上”,可见SLAM技术的关键性。 工业用途主要是集中
    发表于 12-06 10:25

    让机器人完美建图的SLAM 3.0到底是何方神圣?

    ,控制与建图中心断开连接时地图数据不会丢失,移动没有断电的情况下地图数据不会丢失。    最后,看一下SLAM 3.0的实际建图效果吧
    发表于 01-21 10:57

    激光SLAM与视觉SLAM什么区别?

    机器人运动控制系统架构中,可分为最底层、中间通信层和决策层三大层面,最底层包含了机器人本身的电机驱动和控制部分,中间通信层是底层部分和决策层的通信通路,而决策层则是实现机器人的定位建图及导航。
    发表于 07-05 06:41

    SLAM的相关知识点分享

    小小的雀跃,千里之行始于足下,但愿能够一步一个脚印的走下去!感谢公司实验室Leonardo博士的大力支持和指导,出学校后遇到的一位良心导师,萌萌的,很负责任的领导!另外感谢来自意大...
    发表于 08-30 06:13

    基于SLAM移动机器人设计

    题目:基于SLAM移动机器人设计嵌入式PPT应具有的几个部分1、哪些硬件  1)小车  2)STM32F429开发板  3)树莓派3b+开发板  4)4g通信模块  5)GPS模块  6
    发表于 11-08 06:17

    目视觉SLAM仿真系统的设计与实现

    实现目视觉同时定位与建图(SLAM)仿真系统,描述其设计过程。该系统工作性能良好,其SLAM算法可扩展性强,可以精确逼近真实目视觉
    发表于 04-15 08:50 82次下载

    WebServer的嵌入式实现与交互式设计_高翔

    WebServer的嵌入式实现与交互式设计_高翔
    发表于 03-19 11:28 1次下载

    激光SLAM与视觉SLAM必将融合 移动机器人核心技术将不断升级

    近年来,伴随移动机器人在各行各业的广泛应用,SLAM这个“名字”逐渐被更多的人所熟悉,但是SLAM具体是什么、SLAM哪些应用领域、激光
    发表于 01-18 17:43 3638次阅读

    实际应用中,SLAM技术是如何实现

    SLAM作为机器人自主定位导航的重要突破口正不断引起业内重视,它是实现机器人自主行走的关键技术,可帮助机器人实现即时定位与地图构建,实际应用中,S
    的头像 发表于 12-26 09:23 1282次阅读

    密集SLAM的概率体积融合概述

    我们提出了一种利用深度密集 SLAM 和快速不确定性传播从图像重建 3D 场景的新方法。所提出的方法能够密集、准确、实时地 3D 重建场景,同时对来自密集
    的头像 发表于 01-30 11:34 1175次阅读

    立体视觉:我用相机求了个体积!

    一般而言,是无法依靠自身来完成测量的,企业选择让相机动起来,但是一旦动起来实际上也是双目,不再是
    的头像 发表于 03-01 11:19 2088次阅读

    使用python和opencv实现摄像机测距

    我的论文方向目前是使用摄像头实现机器人对人的跟随,首先摄像头与kinect等深度摄像头最大的区别是无法有效获取深度信息,那就首先从这
    的头像 发表于 07-03 10:01 4090次阅读
    使用python和opencv<b class='flag-5'>实现</b><b class='flag-5'>单</b><b class='flag-5'>目</b>摄像机测距

    探头的应用范围哪些?

    探头的应用范围哪些? 探头是一种常用的测量仪器,广泛应用于工业、科研、医疗等领域。下面将详细介绍
    的头像 发表于 01-08 11:19 1174次阅读

    一种基于点、线和消失点特征的SLAM系统设计

    本文提出了一种稳健的目视觉SLAM系统,该系统同时利用点、线和消失点特征来进行精确的相机位姿估计和地图构建,有效解决了传统基于点特征的SLAM的局限性。
    的头像 发表于 03-21 17:07 833次阅读
    一种基于点、线和消失点特征的<b class='flag-5'>单</b><b class='flag-5'>目</b><b class='flag-5'>SLAM</b>系统设计