杂文散谈:SLAM的未来与发展趋势_slam算法在控制工程应用及发展趋势-程序员宅基地

技术标签: 杂文散谈  SLAM  slam未来  

作者:深蓝学院
链接:https://zhuanlan.zhihu.com/p/44938806
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

2018年7月底,深蓝学院发起并承办了“第一届全国SLAM技术论坛”。浙江大学章国锋老师、香港科技大学沈劭劼老师、上海交通大学邹丹平老师、中科院自动化所申抒含老师在“圆桌论坛:SLAM技术发展趋势”上分享了SLAM技术的趋势,现将内容整理公布,希望更多SLAMer受益。

章国锋:由于我的研究方向更偏向于视觉SLAM,所以我会从我的角度来讲一讲SLAM技术的发展趋势。

首先,我认为无论是视觉SLAM、视觉惯导SLAM、还是其他多传感信息融合SLAM,相关理论目前都已经发展到了一定的成熟度。之所以近年来SLAM被广泛关注,也是因为它已经在某些领域得到了应用。比如AR领域,Google和苹果分别推出的ARCore和ARKit。另外,SLAM技术也被应用于自动驾驶领域。因此,我认为SLAM的相关理论已经发展得比较成熟但是,在实际应用中,问题还相当复杂。因此,我们做了很多工程实际中的系统优化和打磨的相关工作。

另外,从做研究角度来讲,很多老师和同学比较关心的是:“我做SLAM,那么论文该怎么发?”我认为目前有两个趋势可以把握,一个趋势是将SLAM与深度学习相结合。而且,我也认为将SLAM与深度学习结合更容易有创新性,同时也符合现在的发展趋势。因此,我认为结合深度学习和SLAM可以发表一些论文。另一个趋势是,要使用新的传感器,比如最近新出现的Event Camera。使用Event Camera做SLAM近年来也取得了很多成果。因此,我认为使用新型传感器或者是研究原来没有被用于SLAM的多传感器的融合,是一个很好的研究方向,也相对容易发论文。

最后,从产业应用的角度来讲,我认为还是存在很多问题的。因为,目前很多结合深度学习的SLAM系统仍然处于研究阶段,距离工程实际应用还有一定的距离,需要我们做更多的研究。

申抒含:我从我的角度出发来讲一讲SLAM技术的发展趋势。

首先,从做研究的角度出发,我认为做SLAM和三维重建这些几何视觉方向的研究是非常难入门的。相对于研究deep learning,研究几何视觉会比较难发论文。例如我们课题组的学生,一般要到博士三年级或四年级才能开始写论文,前面几年都是在打基础。从发表论文的角度来说,做三维视觉相对来说确实难一些、慢一些。但是,我认为这也是一个机遇。这意味着在这个领域,想要很深入的理解SLAM是有一定的门槛的,而一旦你通过了这个门槛,你就达到了一定的认知高度,你就拥有了自己的独门绝技,未来无论是就业还是做研究,都有比较强的竞争力。因此,既然大家今天来参加这个论坛,那么一定是对三维几何视觉这个论题感兴趣的,我建议大家执著地坚持下去,会有好的结果的。

其次,从应用角度出发,我们当然希望基于视觉的SLAM和三维重建可以尽快落地、尽快产品化。但是,基于视觉传感器的SLAM和三维重建有一个很大的问题,那就是视觉传感器相对于高精度IMU、差分GPS和高分辨率的激光雷达等传感器来说精度不够高。同时,随着无人驾驶汽车、智能机器人等应用的不断推进,使得高精度的IMU、差分GPS和高分辨率的激光雷达等以前价格昂贵、产量很小、很难商用推广的传感器,正逐渐变得越来越便宜、越来越容易获取。在这种情况下,视觉传感器所能起到的作用会被一定程度的压制。比如做无人车,用激光雷达加高精度的差分GPS来做构图和定位是最传统、最有效的方式,而基于视觉的方式只能作为一个补充。但是,反过来想,这也会促进视觉算法的发展,不断提高视觉算法的鲁棒性,例如运用deep learning来解决传统视觉上的一些瓶颈的问题。目前来讲,基于视觉传感器的SLAM,最大的特点是价格便宜。图像传感器相对于其他传感器来说,它的价格永远是最低的,因为相机是我们最常见的设备。在这个前提下,如果我们能够让图像传感器在某种程度上替代其它的昂贵设备或者是辅助昂贵的设备来完成工作,那么对于视觉来说也是在未来应用中值得突破的地方。当然,我们还是希望视觉传感器的性能最终能够接近昂贵的激光雷达或者是差分GPS的性能,从而使它能够商用推广。目前来看,这还是有一定距离的,还有很多本质的问题需要我们去努力克服。

沈劭劼:我非常同意申老师所说的做SLAM是非常苦的这个观点。大家可能也都是花了两三年时间来打基础。但是,我认为这是非常值得的。在我自己的研究组里面,每个新进来的学生,我都会让他先手写Bundle Adjustment,最多只能用Eigen库,其它的库都不能用。写了BA之后,再开始看其它的研究内容。总体来说,我认为这个锻炼对他们来说收获还是比较大的。因为在写Bundle Adjustment的过程中,像非线性优化、各种调参技巧、可观测性问题、前端后端的连接问题、工程实践技巧、多传感器同步标定等问题,他们都亲自解决过一遍。在此之后,当他们遇到真实的工程问题时才会比较游刃有余。但是,有这么多知识需要学习,不花这么多时间也比较难实现,所以基本上就是目前这种状态。

首先,关于技术方面,因为我是机器人背景,所以我更倾向于研究如何真实解决工程问题,而不是一定要用某一种传感器、研究某一个问题、或者是一定要基于某一种概念去解决问题。因此,从解决工程问题的角度出发,我更愿意把SLAM问题看作是一个多传感器融合的问题。本质上,我们需要做的就是把多种传感器的model写清楚,然后选用某种类型的最小二乘去求解。至于是用单目相机还是双目相机、还是加GPS、加轮子里程计、加IMU其实并没有问题,因为那些传感器的model都做出来了。

其次,我会倾向于跳出纯SLAM这种比较狭窄的定义,而把SLAM问题当成是一个机器人的环境感知问题。这个问题包括真正意义上的建图,并不是指稀疏建图,也包括对多种不同天气以及动态环境建立真实的model,也就是simulative model方面的问题,而不能直接去掉动态环境这个因素。

最后,在SLAM工程的实际应用中。我认为需要区分清楚我们需要的到底是SLAM,还是L+M。我们需要Localization和Mapping,很多地方都需要这两个内容,但是在很多情况下我们并不需要Simultaneous Localization and Mapping。特别是在自动驾驶领域,绝大多数情况下,我们不需要做到simultaneous。但是在某些应用中,比如在VIO中,我们做的是simultaneous localization and mapping in the local environment。但是,环境的scale的大小需要根据我们的实际应用来确定。总的来说,SLAM是一个跟实际应用连接非常紧密的一个领域。希望大家能够修炼好基本功,在能手写Bundle Adjustment之后,当真正遇到一些特别的问题时,见招拆招去解决问题,不要拘泥于用某种特定形式的方法或者用某种特定的传感器。

邹丹平:我从沈老师这里学到很好的一点,那就是让学生手写Bundle Adjustment。以前我都是让学生调用Ceres,以后我也要让他们手写一个Bundle Adjustment。

关于SLAM,我跟各位老师的观点也是一样的。正如沈老师所说,SLAM要跟实际应用相结合。因为SLAM本身只是一个方法,也是一种技术,虽然它现在可以被应用到各个领域,但是它必须跟具体的应用场景结合才能发挥它的价值。当我与一些同学和朋友讨论时,有些同学提出,当他把一套开源的SLAM代码下载下来后,他发现有的代码在无人机数据集上面表现得很好,但是在小车上面表现得就不好。出现这个问题,就是因为每一套SLAM系统都与它的应用场景特性有关。无人机的VIO算法非常适合无人机这样的应用场景,因为无人机的机动性强,在飞行中加速度变化较大,所以运用了这一特性的无人机VIO算法在这种场景下的表现非常好。但是,如果把这套VIO算法应用到运行非常缓慢、平稳的小车上面,你会面临一个问题,车子在匀速运动下的加速度为零,这就造成了它的尺度的不可观测性,也意味着它失去了加速计的支持。没了加速计的支持,这个SLAM也就只相当于一个纯粹的Visual SLAM。因此,它的性能表现就会很差。

举这样的一个例子,是想说明在具体应用场景里面,我们要先把目标应用搞清楚,然后把后面的问题挖掘好,再去研究如何改进这个SLAM系统,如何把挖掘到的问题解决好。以问题为导向,可以更好地解决工程实际的问题。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_25241325/article/details/82830869

智能推荐

Java并发-理论基础_java 方法单一线程-程序员宅基地

文章浏览阅读70次。用户可以使用参数。_java 方法单一线程

【谷粒学院项目】day01_谷粒学院 时长-程序员宅基地

文章浏览阅读104次。Author:Honey软件工程 工科男CSDN@Honey运行时报错如下:Error : java 不支持发行版本5报错应该是项目编译配置使用的Java版本不对,需要检查一下项目及环境使用的Java编译版本配置。详见门:https://blog.csdn.net/qq_22076345/article/details/82392236Mybatis-Plus:步骤3:引入mybatis-plus-boot-starter、MySQL、lombok等依赖<dependencie._谷粒学院 时长

李宏毅视频整理_最大化散度-程序员宅基地

文章浏览阅读918次,点赞2次,收藏6次。第一节机器学习概述1.机器学习任务梯度下降local minma和global minma不是最大问题复杂的函数是由多个函数相加而成,单个函数可以用激活函数(例如sigmoid)加上不同的参数w,b,c来生成,最后将单个函数相加得到总体函数,这种实现就是线性层(Linear)该节疑问:问什么不把神经网络变宽而是把它变深?反向传播计算参数w对Loss的偏导等于w对该层输出的偏导乘以该层输出对Loss的偏导。forward pass:设当前层输出为z,z = wx+b,则w对于当前层的_最大化散度

中反应器体积_【过程技术】微反应器技术的连续工艺-程序员宅基地

文章浏览阅读542次。精细化工和制药行业中50%的反应都可能受益于主要基于微反应器技术的连续工艺。然而,经常存在的一个固相妨碍了这一技术作为一个多用途解决方案的广泛应用。对于小规模生产,加快研发进度以及避免因扩大生产规模而出现问题是采用这一技术的主要驱动力;另一方面,对于大规模生产来说,采用这一技术的主要动力在于增加产量并确保安全,但是增加的产量收益必须足以平衡用于开发新技术所增加的资本支出。在精细化工和制药行业,生产..._微反应器总传热系数

清北test2+cf547D 点转成边建图_点图 转 边图-程序员宅基地

文章浏览阅读131次。传送门https://www.luogu.org/problemnew/show/CF547D重点!!!!!!!!!!!!dfs过程中,遍历时必须要加取地址符号,这样可以实时的删去边表里的边,防止多次访问超时(有vis数组也不行,因为还会进到循环里判断)!!!!思路点(x,y)可以转化为点x和点y连一条边,这样now边(x,y)表示past点,now点表示past一横行或一竖列..._点图 转 边图

Kafka学习笔记_在kafka ha中,当partition对应的leader宕机时,需要从follower中选举出新-程序员宅基地

文章浏览阅读272次。Kafka介绍Kafka是由LinkedIn开发的一个分布式的消息系统,最初是用作LinkedIn的活动流(Activity Stream)和运营数据处理的基础。活动流数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。这种数据通常的处理方式是先把各种活动以日志的形式写入某种文件,然后周期性地对这些文件进行统计分析。运营数据指的是服务器的性能数据(CPU、I..._在kafka ha中,当partition对应的leader宕机时,需要从follower中选举出新leader,具

随便推点

最近看到茅(于轼)老头就生气_讨茅贼于轼檄-程序员宅基地

文章浏览阅读2k次。Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE _讨茅贼于轼檄

.NET 学习笔记——委托_.net 委托-程序员宅基地

文章浏览阅读194次。.NET 学习笔记——委托一、委托委托是引用类型,因此委托有引用和对象。(1) 从数据结构来讲,委托是和类一样是一种用户自定义类型。(2) 从设计模式来讲,委托(类)提供了方法(对象)的抽象。委托是方法的抽象,它存储的就是一系列具有相同签名和返回回类型的方法的地址。调用委托的时候,委托包含的所有方法将被执行。delegate void Mydel(int x)Mydel mydel;mydel = new Mydel(demo.printlow) //创建委托并保存使用mydel _.net 委托

安卓实战中防止Button的频繁点击多次执行点击事件和点击切换文字_vs button執行多次-程序员宅基地

文章浏览阅读6.7k次,点赞2次,收藏9次。哈哈,今天来写两种button在安卓开发实战的对应效果处理,也是对button的点击事件触发过程的处理。 开发实战中button事件处理3种情况:情况一:button点击触发倒计时情况二:button频繁点击(特别是触发网络请求),本人公司是金融公司很容易产生两笔交易的情况。情况三:button点击时不断轮流切换文字 看效果: 情况一:button触发倒计时请移步我的:频繁点击 安卓_vs button執行多次

旅行照片剪辑--北京篇_怎样剪辑家人旅游照片-程序员宅基地

文章浏览阅读1.9k次。喧嚣京华,宁静后海摄于北京后海 2011-07-12国产程序员圣地之一:CAS ICT国产程序员圣地之二 ISCAS以上设于 中关村中科院 2011-07-13危险的杀器和快乐的孩子们军事_怎样剪辑家人旅游照片

day11-Elasticsearch_day11.elasticsearch-程序员宅基地

文章浏览阅读459次。Elasticsearch0.学习目标1.Elasticsearch介绍和安装1.1.简介1.1.1.Elastic1.1.2.Elasticsearch1.1.3.版本1.2.安装和配置1.2.1.新建一个用户leyou1.2.2.上传安装包,并解压1.2.3.修改配置1.3.运行1.3.1.错误1:内核过低1.3.2.错误2:文件权限不足1.3.3.错误3:线程数不够1.3.4.错误4:进程虚拟内存1.3.5.重启终端窗口1.3.6.启动1.4.安装kibana1.4.1.什么是Kibana?1.4.2_day11.elasticsearch

java web开发的mvc_java的web开发中的mvc模式-程序员宅基地

文章浏览阅读125次。mvc 1,什么是mvc? model,view,controller 是一种软件架构模式,其基本思想是:将一个软件的组成部分划分成三部分,即: 模型:封装业务逻辑 视图:数据展现,也就是表示逻辑(即将模型中提供的数据以合适的方法展示出来), 另外还提供UI(用户接口),用户通过视图向系统发送请求。 控制器:将视图与模型的关系解耦,即视图与模型的调用要通过..._java web开发mvc