关心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. 获取 graphql schema 信息

    模块 npm install -g get-graphql-schema get-graphql-schema GRAPHQL_URL > schema.graphql 简单使用 使用prism ...

  2. Android开发入门

    教我徒弟Android开发入门(一) 教我徒弟Android开发入门(二) 教我徒弟Android开发入门(三) 出处:http://www.cnblogs.com/kexing/tag/Androi ...

  3. Windows 10 上的 Git 如何清除密码? Git Credential Manager for Windows

    Windows 10 上的 Git 如何清除密码? 因为一台新的电脑是 Windows 10 在第一次使用 Git 要求输入密码时把密码给输错了. 之前提交都是说 Token 错了,不再出现提示密码. ...

  4. application项目获取bean

    对于web项目,编程方式获取bean如下: WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext(); C ...

  5. C++等语言中整型int等的取值范围计算方式

    举short为例说明 如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767.最小为1111111111111111=-2的15次方减1=-32767此时 ...

  6. hudson插件说明

    Artifactory Plugin:maven仓库管理工具 Backup plugin 可以备份hudson_home下所有文件,除了svncode.这个插件有问题,不能使用. Build Publ ...

  7. 单链表LRU

    单链表实现lru 越靠近链表尾部的节点是越早之前访问的 当有一个新的数据被访问时,从链表头开始顺序遍历链表 1.如果此数据之前已经被缓存在链表中 遍历得到这个数据对应的节点,并将其从原来的位置删除,然 ...

  8. LR-IE录制设置

    ie浏览器去掉启用第三方浏览器扩展,路径. ie浏览器-工具-internet选项-高级,在列表中找到“启用第三方浏览器扩展” 把钩去掉 .   启动loadrunner11,按键盘F4,在brows ...

  9. SSH&SFTP服务分离+家目录锁定

    Step 1 在root用户下创建维护账号的家目录,此处以创建userftp帐号的家目录为例. mkdir -p /chroot/home/user Step 2 在root用户根目录下执行以下命令设 ...

  10. sqlnet.ora限制客户端IP访问

    实现功能: 只允许某几个IP访问数据库服务端(白名单): $ORACLE_HOME/network/admin/sqlnet.ora 添加2个主要参数 TCP.VALIDNODE_CHECKING=y ...