这是一个学习笔记回顾记录,主要是18年的SLAM技术论坛的老师说的方向点子,作为slam研究工作者希望对大家有用!
目录
四个教授的见解
章国峰教授:
申抒含教授:
沈劭劼教授:
邹丹平教授:
SLAM的相关理论已经发展得比较成熟。但是,在实际应用中,问题还相当复杂。
我认为目前有两个趋势可以把握,一个趋势是将SLAM与深度学习相结合。而且,我也认为将SLAM与深度学习结合更容易有创新性,同时也符合现在的发展趋势。因此,我认为结合深度学习和SLAM可以发表一些论文。另一个趋势是,要使用新的传感器,比如最近新出现的Event Camera。使用Event Camera做SLAM近年来也取得了很多成果。因此,我认为使用新型传感器或者是研究原来没有被用于SLAM的多传感器的融合,是一个很好的研究方向,也相对容易发论文。
从做研究的角度出发,我认为做SLAM和三维重建这些几何视觉方向的研究是非常难入门的。相对于研究deep learning,研究几何视觉会比较难发论文。例如我们课题组的学生,一般要到博士三年级或四年级才能开始写论文,前面几年都是在打基础。
从应用角度出发,我们当然希望基于视觉的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系统,如何把挖掘到的问题解决好。以问题为导向,可以更好地解决工程实际的问题。
转载来源:人工智能博士https://blog.csdn.net/qq_15698613/article/details/102928884