关心SLAM技术的人有两种。一是像我这样的研究者,为了了解其中各种方法和模块的原理。二是机器人技术的开发者,旨在将SLAM技术用到他们自己的机器人上。从数量上来说,第二类人数远多于第一类,他们的需求也日益迫切。SLAM是许多机器人技术的基础。没有预计的位姿和地图,大部分任务都无法完成。这种需求,也是我们研究者应当认真思考、正面对待的,也是SLAM从实验室走向市场应用的第一步。

  那么,阻碍这种应用的困难在哪儿呢?是SLAM原理还不够明确吗?是视觉里程计、特征匹配、回环检测的技术不够先进吗?事实上,有一个很重要的东西,是应用者们很关心,但研究者们经常忽视的:那就是SLAM方案的易用性。

  反观当前多数开源SLAM方案,它们几乎都是研究者提出的。研究者做这些方案的目的,往往是为了实现自己某些新颖(但不一定可靠)的想法。实现出来之后,做几个实验,挑一部分漂亮的结果放在论文里去。这当然是无可厚非,甚至可以说,做研究本来就是如此的。但从应用者的角度去考虑,他们会花大量的时间配置程序的运行环境,为了看看效果是否和论文里相符(但通常失望的居多)。然后,他们会发现各式各样的问题。摄像头一快,匹配就跟不上了;地图里重复的东西一多,回环就测不对了;走廊的长度往往比真实的要短,等等。许多开发者都有这种经历,然而怎么办呢?只好去看源代码。接着他们又发现,一个实际的工程项目代码很庞大,阅读一遍还不如自己从头实现一遍。

  这就是所谓的易用性问题。

  为何要单独提这个问题呢?SLAM是众多机器人技术的基础。基础是什么?简而言之,“没有它不行,光有它没用”。试问现在为什么大家都想用SLAM?他们有各种不同的目的:想要机器人在房里自主运动啦,想要按顺序清扫整个地图啦,想要听到人的命令就跑去某个屋啦。如果机器人是一幢楼,开发者们更关心的是,如何在SLAM这个地基上建出高楼大厦。

  对于地基,我们有什么要求?无非是:简单、有效、坚实。一个符合这样条件的SLAM方案是什么样子?它是不是像现在开源方案那样,应用一些先进的技术,(有时)跑出了华丽的效果?似乎不是这样的。我们应该把易用性加到设计SLAM方案的考虑中来。甚至,我们还应该设计一个极端强调易用性的方案:

  • 请问你有什么传感器?       ——激光/单目/双目/RGBD/IMU等等。更可能同时有多个。它们应该是一种优雅地方式集成起来,容易配置。
  • 你的位姿和地图需要什么形式?       ——2D/3D位姿,栅格图/拓扑图/路标图等。

  然后,SLAM程序就自动决定用什么图像特征、闭环检测方法等等的东西,哗啦哗啦地运行起来了。开发者可以直接使用这些结果,也可以更进一步地调整:

  • 偏向于速度还是精度?
  • 是否使用GPU?
  • 匹配丢失后如何处置?

  当然,这些应该是有预设的。至于这个SLAM里头的参数,应该是由研究者事先调节好的。应用开发人员不需要,也不应该关心它们的具体的值。

  如果做一个强调易用性的SLAM,会不会有吸引力呢?

SLAM应用的一些思考的更多相关文章

  1. SLAM前端技术选择思考

    以前是专门做室内定位技术研究的,先后学习和分析了多种基于电磁的室内定位技术,如WiFi指纹定位(先后出现过RSSI.CTF.CIR多种指纹特征).WiFi ToF定位.低功耗蓝牙BLE以及iBeaco ...

  2. SLAM产品化的一些思考

    这两年一直在做SLAM产品化的一些工作,有些感触,想和大家分享一下.很多想法只是个人浅见,不当之处还望大家指正. 我这两年分别做了AR眼镜和辅助驾驶方向的开发,说实话,挫折大于成果.SLAM产品化之难 ...

  3. 分享| 语义SLAM的未来与思考(泡泡机器人)

    相比典型的点云地图,语义地图能够很好的表示出机器人到的地方是什么,机器人“看”到的东西是什么.比如进入到一个房间,点云地图中,机器人并不能识别显示出来的一块块的点云到底是什么,但是语义地图的构建可以分 ...

  4. SLAM for dummies中文翻译

    1.简介 本文的主要目的是简单介绍移动机器人领域中广泛应用的技术SLAM(同步定位与地图绘制)的理论基础以及应用细节.虽然目前存在很多关于SLAM技术的方方面面的论文,但是对于一个新手来说,仍然需要花 ...

  5. 高翔《视觉SLAM十四讲》从理论到实践

    目录 第1讲 前言:本书讲什么:如何使用本书: 第2讲 初始SLAM:引子-小萝卜的例子:经典视觉SLAM框架:SLAM问题的数学表述:实践-编程基础: 第3讲 三维空间刚体运动 旋转矩阵:实践-Ei ...

  6. 浅谈SLAM的回环检测技术

    什么是回环检测? 在讲解回环检测前,我们先来了解下回环的概念.在视觉SLAM问题中,位姿的估计往往是一个递推的过程,即由上一帧位姿解算当前帧位姿,因此其中的误差便这样一帧一帧的传递下去,也就是我们所说 ...

  7. 领域驱动和MVVM应用于UWP开发的一些思考

    领域驱动和MVVM应用于UWP开发的一些思考 0x00 起因 有段时间没写博客了,其实最近本来是根据梳理的MSDN上的资料(UWP开发目录整理)有条不紊的进行UWP学习的.学习中有了心得体会或遇到了问 ...

  8. 关于面试题 Array.indexof() 方法的实现及思考

    这是我在面试大公司时碰到的一个笔试题,当时自己云里雾里的胡写了一番,回头也曾思考过,最终没实现也就不了了之了. 昨天看到有网友说面试中也碰到过这个问题,我就重新思考了这个问题的实现方法. 对于想进大公 ...

  9. 关于 CSS 反射倒影的研究思考

    原文地址:https://css-tricks.com/state-css-reflections 译者:nzbin 友情提示:由于演示 demo 的兼容性,推荐火狐浏览.该文章篇幅较长,内容庞杂,有 ...

随机推荐

  1. [C#] DataTable转成List集合

    项目开发中,经常会获取到DataTable对象,如何把它转化成一个List对象呢?前几天就碰到这个问题,网上搜索整理了一个万能类,用了泛型和反射的知识.共享如下: public class Model ...

  2. 使用ajax提交form表单,包括ajax文件上传 转http://www.cnblogs.com/zhuxiaojie/p/4783939.html

    使用ajax提交form表单,包括ajax文件上传 前言 使用ajax请求数据,很多人都会,比如说: $.post(path,{data:data},function(data){ ... },&qu ...

  3. Excel图片调整大小

    Excel图片调整大小 Sub 图片调整合适大小() ' Debug.Print ActiveWorkbook.Name 图片显示比例 = 0.9 '1为顶满单元格 Dim wb As Workboo ...

  4. mysql 计算经纬度函数(米)

    ) CHARSET utf8mb4 begin return ROUND( * ASIN( SQRT( POW( SIN( ( lat1 ) ), ) ) ) * POW( SIN( ( lon1 ) ...

  5. git grade 版本下载及安装

    Git 2.11.1x64下载 gradle各版本下载地址 1. Git安装与配置 Gradle 用法总结

  6. 关于ROS证书导入的步骤

    在群里的vibbow大神指点下,做了一个ROS证书导入的步骤 1.到阿里云申请的免费证书清单如下:(如果你准备的自签名证书,那么在客户端也需要安装证书才行,否则就要到网上去申请真实的,或者花钱买的证书 ...

  7. 【洛谷】P1247 取火柴游戏(Nim)

    题目 传送门:QWQ 分析 蒟蒻根本不会博弈论..... 只知道异或和判断Nim游戏.. 不是很懂输出的选择,所以发一篇博客以待复习 代码 #include <bits/stdc++.h> ...

  8. 【POJ】1935 Journey(树形dp)

    题目 传送门:QWQ 分析 凉凉. 答案是所有要经过的点到根所经过的边权和减去最大的边权. 代码 vector好慢啊 #include <cstdio> #include <vect ...

  9. 传统项目利用Hystrix实现热点接口的服务隔离

    这段时间接了个需求,需要在我目前负责的数据系统上加个接口,主要是实现用户行为的记录.前端对接的项目主要有公司的PC,WAP,WEIXIN,APP等,每个端大概有两台左右的负载.因为目前我的这个项目主要 ...

  10. django-模板,过滤器

    for…in…:跟python中的for…in…是一样的用法 {% for m in modules %} {{ forloop.cpunter }} {{ m }} {% end %} forloo ...