本周计划:
今天和几个小伙伴们一起被老师叫去办公室谈论人生理想,老师惯常套路,想一下十年后要做什么?你到时候的毕业论文写什么?你的小论文要写什么,顿时感觉心慌意乱,好多事情要做的样子。只是赶鸭子上架了
得想好一个方向做下去,但是具体做哪个还没考虑清楚,做视觉slam,做雷达slam,做视觉+雷达slam得融合,都要想清楚具体想要解决什么问题,是想解决视觉slam中 如果遇到类似场景不能判断回环,异或是想解决特征点匹配不足得问题,还是想解决什么?
感觉对具体现在视觉slam存在的一些问题的了解程度还不是太深,有点儿陷进学技术,调库,不能直达slam算法的核心,还是得多看些论文来确定下接下来做什么事情,在今年要做到什么效果,具体得实施方案是什么?
与师兄师姐聊了一下,大家都是赶鸭子上架,做深度学习VO还有深度学习回环检测。
交流后听说现在的回环检测其实用深度学习的效果会更好,采用别人训练好的网络,进行特征提取,然后换另外一种思路做降维…
深度学习VO好像效果也不错,不过单独用VO的话,效果不是太好,使用VIO的深度学习框架效果就不错了。。
看了一下深蓝学院的一篇文章
章国锋给出了发论文的两个方向:1.slam结合深度学习 2.使用新的传感器,例如现在的全景Event Camera,融合多种传感器是比较容易发论文的方向。
沈劭劼:我非常同意申老师所说的做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系统,如何把挖掘到的问题解决好。以问题为导向,可以更好地解决工程实际的问题。
几位大牛们都提出了比较中肯的意见
接下来的大计划是:
训练自己手写一个BA
本周计划是:
1.查找阅读相关文献,找到一个比较合适的应用场景,发现现有算法在该场景中有什么局限性,然后选定方向做下去
2.撸完14讲