最早的SLAM雏形是在军事(核潜艇的海底定位)上的应用,主要传感器是军用雷达。SLAM技术发展到如今已经几十年,目前以激光雷达作为主传感器的SLAM技术比较稳定、可靠,仍然是主流的技术方案。但随着最近几年计算机视觉技术的快速发展,SLAM技术越来越多的应用于家用机器人、无人机、AR设备,基于视觉的Visual SLAM(简称VSLAM)逐渐开始崭露头角。今天就来帮大家普及下VSLAM的技术框架。

 

VSLAM技术架构

VSLAM的技术框架主要包括传感器数据预处理、前端、后端、回环检测、建图。

 

1、传感器数据

传感器数据预处理。这里的传感器包括摄像头、惯性测量单元(Inertial measurement unit,简称IMU)等,涉及传感器选型、标定、多传感器数据同步等技术。

2、前端

又称为视觉里程计(visual odometry,简称VO)。主要是研究如何根据相邻帧图像定量估算帧间相机的运动。通过把相邻帧的运动轨迹串起来,就构成了相机载体(如机器人)的运动轨迹,解决了定位的问题。然后根据估算的每个时刻相机的位置,计算出各像素的空间点的位置,就得到了地图。

VSLAM中,前端主要涉及计算机视觉相关的算法。典型做法一般是:首先提取每帧图像特征点,对相邻帧进行特征点粗匹配,然后利用RANSAC(随机抽样一致)算法去除不合理的匹配对,然后得到位置和姿态信息。整个过程涉及到特征提取、特征匹配、对极几何、PnP、刚体运动、李代数等多视图几何知识。

相邻图像特征点匹配

前面说视觉里程计只计算相邻帧的运动,进行局部估计,这会不可避免的出现累积漂移,这是因为每次估计两个图像间的运动时都有一定的误差,经过相邻帧多次传递,前面的误差会逐渐累积,轨迹漂移(drift)的越来越厉害。

轨迹漂移现象

解决轨迹漂移的方法有两个:后端优化、回环检测。

3、后端

主要是对前端的结果进行优化,得到最优的位姿估计。主要有两种方法:

一种是基于滤波理论的优化,主要有 EKF, PF, RBPF, UKF等方法,其中EKF(扩展卡尔曼滤波)在早期是主流的方法。它的思路是将状态估计模型线性化,并用高斯分布近似其噪声,然后按照卡尔曼滤波进行预测来更新。但是实际上,这种对噪声的高斯分布大部分情况下是不成立的,此外,线性化过程中丢失了高阶项。

另一种就是非线性优化(图优化)。它的基本思想是将优化的变量作为图的节点,误差项作为图的边,在给定初值后,就可以迭代优化更新。由于图优化的稀疏性,可以在保证精度的同时,降低计算量。

后端优化涉及到的数学知识比较多,具有较高的难度。总的来说,从状态估计的角度来讲,SLAM是一个非线性非高斯系统。因此传统的滤波理论已经逐渐被抛弃,而图优化已经成为主流方法。

 

4、回环检测

主要目的是让机器人能够认识自己曾经去过的地方,从而解决位置随时间漂移的问题。视觉回环检测一般通过判断图像之间的相似性完成,这和我们人类用眼睛来判断两个相同的地点是一样的道理。因为图像信息丰富,因此VSLAM在回环检测中具有很大的优势。

回环检测效果

当回环检测成功后,就会建立现在的图像和过去曾经见过图像的对应关系,后端优化算法可以根据这些信息来重新调整轨迹和地图,从而最大限度地消除累积误差。

5、建立地图

SLAM根据不同的传感器类型和应用需求建立不同的地图。常见的有2D栅格地图、2D拓扑地图、3D点云地图等。

比如前面提到过的扫地机器人,它只需要知道房屋内部的简单二维地图就可以了,不需要知道房屋到底有多高;它只需要知道哪里可以通过,哪里是障碍物,而不需要知道这个障碍物到底是什么,长什么样子;因此目前大部分具有SLAM功能的扫地机器人几乎都是采用廉价的消费级激光雷达方案,很少采用视觉SLAM方案(VSLAM也不够稳定)。

扫地机器人建立的2D地图

2D拓扑地图更强调地图元素之间的连通关系,而对精确的位置要求不高,去掉了大量地图的细节,是一种非常紧凑的地图表达方式。如下所示:

2D拓扑地图

3D点云地图在VSLAM中用的比较多,主要用于真实场景的视觉重建,重建的地图非常直观漂亮。但是点云地图通常规模很大,比如一张VGA分辨率(640 x 480)的点云图像,就会产生30万个空间点,这会占据非常大的存储空间,而且存在很多冗余信息。

3D点云地图

总结

前面介绍了VSLAM的典型技术框架。我们可以看到,将SLAM算法拆解后,用到的技术多是传统的计算机视觉算法,尤其是多视角几何相关知识。与当前大热的深度学习“黑箱模型”不同,SLAM的各个环节基本都是白箱,能够解释得非常清楚。但SLAM算法并不是上述各种算法的简单叠加,而是一个需要相互折中、密切配合的复杂系统工程。

转载于:https://www.cnblogs.com/slamtec/p/9706557.html

VSLAM技术框架详述相关推荐

  1. vslam流程框架介绍

    平常扫地机产品上经常听说使用了vslam技术,那么这个vslam到底是什么呢,我们下面一起来看看. vslam是什么? VSLAM 即 Visual Simultaneous Localization ...

  2. 产品经理必了解的3个app技术框架

    在现在越来越多的app,你可以看到有一些app中是混着网页加载的(我们俗称的为H5)但要注意的web 前端开发是包含着h5的.web前端开发还包括了许多内容,比如说后台html,css,div等都是属 ...

  3. 微软一站式开发技术框架解决方案 年内展望

    微软一站式开发技术框架解决方案 (CodeFx) 自成立至今已有半年.在这半年里,我们完成了130个代码示例,主要覆盖了COM.数据访问.库加载.进程间通信.Office开发.WinForms等技术. ...

  4. XBodhi(技术框架)——序

    XBodhi 的起源 是由本人2013年编写,名字经过 OOEF,System等等变更,在代码急剧缩减和优化最后经过4年时间确定了名字为 QiaoHY.XBodhi 随着时间的关系并没有进行完善,也只 ...

  5. 创业互联网公司如何搭建自己的技术框架

    创业互联网公司如何搭建自己的技术框架 适用范围 本文主要针对小型互联网公司,特别适用于手机APP的后台架构,基本可以支撑5万日活 本文会对可能用到的相关技术进行技术选型的说明,以及相对应的设备的采购. ...

  6. CodeFx: 微软一站式开发技术框架解决方案 2009-7-30 新增sample code简介

    微软一站式开发技术框架解决方案 2009年7月30号更新: http://cfx.codeplex.com/Wiki/View.aspx?title=All-In-One%20Code%20Frame ...

  7. 强烈推荐——微软一站式开发技术框架 All-In-One Code Framework (CodeFx)

    如果您是第一次听说All-In-One Code Framework这个项目,请参阅主页上的相关介绍http://cfx.codeplex.com/,以及这两篇blog CodeFx:一站式微软开发技 ...

  8. forager有多少个机器人_诠视科技:VSLAM技术进展让移动机器人自主行驶有了更广阔的空间...

    图:诠视科技CEO 林琼 在移动机器人领域,2018年最大的技术进展莫过于VSLAM技术在该领域的应用突破了,它将让移动机器人自主行驶有更广阔的空间. 目前市面上移动机器人自主行驶都是以激光雷达导航为 ...

  9. 耗时1年的前端技术框架切换之旅

    本文分享自华为云社区<记一次难忘的前端技术框架切换之旅[WEB前端大作战]>,原文作者:一颗白菜 . 一.旅行之始 2020年初,某个普通的工作日,正在聚精会神"搞事情" ...

最新文章

  1. 压力测试对于BCH真的有意义吗?
  2. 计算机考试金麦圈编号教程,计算机二级:数据处理.doc
  3. 李宏毅机器学习课程10~~~卷积神经网络
  4. 你可能需要了解一下的中台
  5. AtomicStampedReference源码分析
  6. java extends原则_Java泛型extends及super区别实例解析
  7. java获取年份getyear_Java LocalDateTime getYear()用法及代码示例
  8. 0代码隐藏GroupedTableView上边多余的间隔
  9. 保存远程图片到本地 同时取得第一张图片并创建缩略图
  10. 利用SusuCMS快速创建网站(一)
  11. 如何使用SPSS进行判别分析
  12. 网页切图div+css命名
  13. PCworld 101个 fabulous Freebies
  14. 【https】对称加密与非对称加密再理解
  15. Android实现校园新闻APP,基于android平台的校园新闻app的开发 大学毕业论文.doc
  16. createjs之easeljs【游戏看你有多色(一)】
  17. excel填充序列_猴哥讲述:excel的自动填充功能——自动填充单元格
  18. MySQL如何备份整个数据库
  19. cs231n笔记--到底什么是梯度消散
  20. IntelliJ IDEA 中如何导入jar包(以引入spring包,构建spring测试环境为例)

热门文章

  1. [Luogu 1730]最小密度路径
  2. C# winFrom窗体设计问题-部分文件打不开窗体设计器 变成类.cs
  3. ajax beforeSend中无效果
  4. Sharepoint学习笔记—Delegate Control--在Sharepoint页面添加jQuery
  5. 数据结构---AVL树调整方法(详)
  6. 选择多级分类_商用车齿轮油的选择与运用!!
  7. ipad air屏幕不能滑动,无法解锁怎么处理
  8. 为什么现在又流行服务端渲染html?
  9. 虽说下班时间自己说了算
  10. 每天看到那么徒步直播的朋友,他们靠什么生活呢?