视觉SLAM技术应用

·
SLAM技术背景

SLAM技术全称Simultaneous localization and mapping,中文为“同时定位与地图构建”。SLAM可以在未知的环境中实时定位自身的位置,并同时构建环境三维地图,是计算机视觉领域以及机器人领域中非常关键的一项技术,有着非常广泛的应用,例如VR、AR、机器人、自动驾驶等领域。

SLAM技术在机器人领域应用广泛,可以采用各种各样的传感器,例如激光雷达,深度摄像头,单目、双目、多目摄像头,惯性传感器等等。

根据传感器的信息,SLAM可以实时计算自身位置(在空间中的位置和朝向),并同时恢复场景的三维结构,构建环境三维地图。根据这个三维结构恢复的稀疏程度,可以分为稀疏SLAM和稠密SLAM,其中稠密SLAM是把场景的三维几何结构都恢复出来。

SLAM技术经过多年的发展,整体框架相对稳定,目前主流SLAM系统采用的是2007年牛津大学提出的并行跟踪与建图框架。首先,前台线程根据输入的传感器信息,实时计算设备位姿。同时后台线程持续构建地图,并对三维点云进行优化,以减少实时计算带来的误差累积。一旦存在回路,需要把回路检测出来并进行闭合。

PTAM是第一个真正接近实际应用的技术,后面的SLAM系统基本延续这个框架,像DTAM主要是做小场景比较稠密的几何重建,ORB-SLAM对PTAM框架做了进一步改进,包括自动初始化,采用ORB特征,以及有回路闭合功能。有一些直接法(例如DSO)还能够做到大场景半稠密的重建。

·
视觉SLAM的技术挑战

视觉SLAM,主要使用单目、双目或多目摄像头。从广义上讲,也可以以视觉传感器为主,加上其他传感器作为辅助。视觉SLAM最主要的优势是成本比较低廉,目前已经被证明至少在小范围内可以实现较高的定位精度,可以满足AR的应用要求。

视觉SLAM的基本原理是多视图几何。空间上的三维点,如果从某个视角看不被遮挡,那就有对应的投影点。另外,它有对应的二维观测点,理论上三维点的投影点跟二维的观测点应该是重合的,但实际上由于噪声等原因不会严格重合,这时通过最小化目标函数,可以把这里的投影矩阵P和三维点X都解出来。

在实际应用中,视觉SLAM面临精度和稳定性,以及实时性这两大关键挑战。精度和稳定性方面,因为环境往往是动态变化的,弱纹理和重复纹理问题很容易造成视觉特征匹配不准确,从而导致优化计算不稳定。实时性方面,主要是在大规模场景下,SLAM计算复杂度高,而低功耗设备的计算能力有限,如何做到实时计算。

关键思路在于,对SLAM稳定求解,这可以从约束的正确性和约束的稳定性这两个方面考虑。SLAM本质上就是一个目标函数构造和优化问题。为此,我们要保证目标函数里的约束项都是正确的,这就需要尽可能把错误的匹配剔除掉。在弱纹理情况下,匹配点过少使得约束项不足,优化求解不稳定。解决这个问题一般有两方面的思路,一个是可以通过添加一些运动先验的约束,使约束方程变得比较稳定。另一个是添加场景的先验结构约束,比如一些平面结构约束,把这样的先验结构约束加入到这个目标函数里,也会使得它变得稳定。

基于这两个思路,我们开展了面向复杂场景的视觉SLAM技术的研究工作。比如在2013年的RDSLAM这个工作,我们会在线地检测哪些特征点发生了改变,同时排除遮挡造成的情况。通过在线持续的检测变化,及时更新地图,使得地图里的三维点都是有效的,从而能够处理场景动态变化甚至逐渐改变的情况。2016年,我们提出的RKSLAM工作,能够在移动设备做到实时。它主要是通过视觉方法估计出连续帧之间的运动角度得到角速度的估计,然后把这些运动约束加入到目标函数里进行优化求解,从而大大提升了位姿估计的稳定性,即使在晃动比较剧烈的情况下依然比较稳定。另外,从速度上来看,我们的RKSLAM速度是ORB-SLAM的将近五倍。

第二个关键思路是如何解决计算效率的问题。这里非常关键的技术就是集束调整,通过最小化一个目标函数来对所有相机的参数和三维点进行同时优化。相机参数和三维点数目可能非常多,复杂度非常高,非线性优化的每次迭代都是在求解一个线性方程组。我们发现这个Hessian矩阵是高度稀疏的,如果充分利用这个稀疏性来求解,效率会高很多。

但即使充分利用了稀疏性,求解效率依然是集束调整的一大挑战。对于大尺度三维场景重建,无论是内存、效率都会遇到这样的瓶颈,而采用局部优化策略很容易陷入局部最优解。对于实时SLAM来说,还面临功耗问题以及如何在精度和效率之间取舍的问题。

可以从分治求解和增量式计算这两个思路对集束调整进行加速。

分治求解主要有两类方式,一类是基于分段的BA,比如将一个长序切分为若干段短序列,每段序列整体做一个7DoF的相似变换。如果优化后误差大于阈值,则继续分裂再优化。通过这样的由粗到细的优化策略,来实现累积误差的快速分散和优化。另一类思路是分布式BA,将整体切分成若干个子地图,各地图独立优化,然后通过共享变量的方式来实现整体的优化。

很多时候SLAM往往是新来一个关键帧就要BA优化一下。增量式BA的代表性方法有iSAM、iSAM2,以后我们提出的EIBA、ICE-BA。增量式BA方法的主要思想是充分利用前面构造好的信息,仅对新加入的变量或需要更新的变量所对应的矩阵元素进行更新计算,这可以大幅降低计算复杂度。可以说,增量式BA在很多时候其计算复杂度跟局部BA差不多,但精度是跟全局BA几乎是一样的。

这是ICE-BA跟传统的BA方法的效率对比。分为局部BA(固定帧数)和全局BA(帧数随时间增长)两类。可以看到,无论是局部BA还是全局BA,ICE-BA都比传统的方法快一个数量级,甚至更多。这部分工作的代码已经开源。

·
视觉SLAM应用落地

我们和商汤科技合作开发的SenseAR平台,能够方便实现各种AR应用。今年新推出的SenseAR 2.0主要是在1.0的基础上增加了云-端结合的功能,并融合了AI能力,而且一些模块的性能也有明显的提升。通过结合云端的高精度地图,可以实现比如室内外定位与AR导航,以及AR多人共享。比如,几个玩家拿着各自的手机,可以在真实的场景下玩设定的游戏,这对SLAM的跟踪精度以及重定位能力要求很高。

AR的应用场景复杂多变,由于用户拿着手机,其运动类型非常复杂,而且场景有动态物体,并存在遮挡、弱纹理以及重复纹理等问题。因此,要保证良好的AR用户体验,就需要保证精确且一致的跟踪注册,而且尽量保证跟踪成功率高,若跟踪失败,需要能够快速恢复正常状态。

为了解决这个问题,我们构建了一个面向AR的单目视觉惯性数据集。我们用两款手机拍摄数据,一个是iPhone X,还有一个是小米8,这是它们的图像和分辨率的参数。我们采用VICON运动捕捉系统来获得手机的运动轨迹真值。

为了模拟AR运动的情况我们选了五种运动类型。我们分别用小米8手机录了A系列序列,iPhone X录了B系列序列。

我们来看一下这些序列的情况。A系列序列还是属于比较正常的运动类型,就是我刚才说的几种常规的运动,主要是用来测试跟踪精度的;而B系列序列是测试鲁棒性的,相对来说比较极端,比如说突然手去挡住相机,或者突然把图像变成黑色,强迫SLAM系统跟踪丢失进入重定位状态。

视觉SLAM技术应用相关推荐

  1. 视觉SLAM技术解读

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|新机器视觉 近年来,SLAM技术取得了惊人的发展,领先一 ...

  2. 视觉SLAM技术简述,一文了解视觉SLAM

    如今科技发展日新月异,随着机器人.AR/VR等人工智能领域的不断发展,视觉SLAM也取得了惊人的发展.本文就视觉SLAM的定义.研究分类.模块.工作原理及应用方向等方面做一个视觉SLAM的技术简述. ...

  3. Kinect视觉SLAM技术介绍

    本文介绍SLAM的历史.理论以及实现的方式,且主要介绍基于视觉(Kinect)的实现方式. 前言 开始做SLAM(机器人同时定位与建图)研究已经近一年了.从一年级开始对这个方向产生兴趣,到现在为止,也 ...

  4. 关于视觉SLAM的最先进技术的调查-A survey of state-of-the-art on visual SLAM

    原文见文章末尾: 今天读了一篇视觉slam的综述,真的是读了一天,记录一下.我比较关注的是特征提取和匹配和深度学习有关的章节.好久,但是还算是有收获的吧. 摘要: 本文概述了视觉同步定位和测绘(V-S ...

  5. vins中imu融合_基于非线性优化算法—当视觉SLAM遇到VINS会碰撞出怎样的火花?

    今天来给大家分享一个视觉SLAM中比较综合且复杂的系统-VINS.VINS旨在通过融合两个传感器测量数据获得移动机器人的位姿和特征点在空间中的位置,在现代控制理论学科中属于最优估计问题.在移动智能机器 ...

  6. 全景视觉空间直线检测_视觉SLAM深度解读

    近年来,SLAM技术取得了惊人的发展,领先一步的激光SLAM已成熟的应用于各大场景中,视觉SLAM虽在落地应用上不及激光SLAM,但也是目前研究的一大热点,今天我们就来详细聊聊视觉SLAM的那些事儿. ...

  7. 一夜爆火的SLAM技术即将颠覆哪些领域

    SLAM的英文全程是 Simultaneous Localization and Mapping,中文称作「同时定位与地图创建」.SLAM试图解决这样的问题:一个机器人在未知的环境中运动,如何通过对环 ...

  8. 章国锋:视觉SLAM最新观点分享

    6月20日,图图Seminar学术直播邀请国内视觉SLAM领域首屈一指的专家:浙江大学章国锋教授,带来了题为"视觉SLAM在AR应用上的关键性问题探讨"的精彩直播报告. 直播精彩看 ...

  9. 基于ROS机器人的3D物体识别与三维重建(四)视觉SLAM基础(十四讲学习记录)

    视觉SLAM基础理论 1 引言 2 视觉里程计 2.1 特征点法VO (1)对极几何与三角量测 (2)PnP问题 (3)ICP迭代最近点法 2.2 直接法VO 3 后端优化 3.1 BA与非线性优化 ...

最新文章

  1. MRuby 编译笔记
  2. 什么是Servlet?
  3. 【教程】opencv-python+yolov3实现目标检测
  4. 【时间序列】时间序列建模的时间戳与时序特征衍生思路
  5. html的细节优化,网站页面优化细节详解
  6. mysql 数据库定时备份 增量/全备份
  7. android学习的一点点网站资料
  8. Reservoir Computing: Harnessing a Universal Dynamical System
  9. php 生成器 封装,php生成器
  10. 10折交叉验证深入理解
  11. 《史玉柱自述:我的营销心得》
  12. 机器学习相关问题与资源下载。
  13. Python 之 如何一行输入多个整数
  14. [share]深入探讨PHP中的内存管理问题
  15. layui导出excel动态拆分单元格一个单元格显示多行数据合并单元格
  16. Python大牛用的贼溜,9个实用技巧分享给你
  17. A Pulmonary Nodule Detection Model Based on Progressive Resolution and Hierarchical Saliency
  18. 企业电子文档安全管理
  19. 网页展示水波纹效果 css水波效果
  20. JavaScript 基础教程

热门文章

  1. 不占用多余空间实现值的交换——异或运算
  2. 管理虚拟机的艺术——有备无患
  3. 2022-2028年中国DTRO膜行业市场全景评估及产业前景规划报告
  4. Ajax接收Java异常_java – 处理来自Servlet的Jquery AJAX响应中的异常
  5. Go 学习笔记(76)— Go 标准库 net/http 创建客户端(发送 GET、POST 请求)
  6. 矩阵拼接 cat padding_pytorch
  7. 独家 | TensorFlow 2.0将把Eager Execution变为默认执行模式,你该转向动态计算图了...
  8. PaddlePaddle推理部署
  9. Waymo的自主进化
  10. 2021年大数据Hive(二):Hive的三种安装模式和MySQL搭配使用