2018年7月,深蓝学院发起并承办的“第一届全国SLAM技术论坛”,举行了“SLAM技术的产业化应用”的圆桌对话,邀请镭神智能的雷祖芳、图森未来的王乃岩、纵目科技的宋宇、地平线的杨德刚4位重量级嘉宾参与分享。现将内容整理公布,希望更多SLAMer受益。
刘越:在近一天半的论坛中,来自学术界和企业界的多位专家向我们介绍了SLAM技术及其在无人驾驶、无人车等领域的应用。今天上午的圆桌论坛,我们希望利用一个小时左右的时间,一起来探讨SLAM技术产业化应用方面的话题。今天所探讨的话题都是由会务组在论坛中征集到的,也都是比较开放的问题。我对这样的问题非常感兴趣,非常高兴有这样的机会可以跟各位嘉宾探讨。
问题1:SLAM技术可以在未知的环境中构建地图,通过所构建的地图可以实现无人车和无人机的自主导航和自主定位等应用。那么,SLAM技术在无人车和无人机的应用中目前主要的技术有哪些?未来发展的趋势是怎样的?
宋宇:我是来自纵目科技的宋宇,很高兴能和大家分享。
首先,我来回答第一个问题,SLAM技术在无人车和无人机的应用。SLAM这个词最早出现在机器人领域,意思是同时定位与地图创建。它包含两个部分,一部分是localization,另一部分是mapping。
对于无人机来讲,它主要是用Localization。由于我以前是做无人机方面研究的,在无人机上我们主要运用多传感器信息融合技术,包括视觉传感器、视觉惯导、气压计、罗盘、GPS等低成本的传感器。在无人机的应用中,比如无人机的室内旋停和自主飞行等应用,都需要用到VIO技术。VIO相对于SLAM来说缺少了loop closure这一步。
其次,在无人车这一领域,我认为SLAM技术还难以达到产业化的要求。但是,在特殊场景下的无人车的SLAM已经可以实现。我认为视觉SLAM在无人车领域的应用中,主要是用于定位。在已经建立好地图的情况下,用于localization。在建立地图的过程中,我认为使用激光雷达来建立地图是更好的选择。而对于视觉的应用,我认为视觉更多、更可能的应用应该是用来做视觉惯性里程计,然后结合地图做低频的校正,这是一种可实现的方式。因为,视觉SLAM建的地图和激光雷达SLAM建的地图是不一样的。
激光雷达SLAM所建的地图是稠密地图,除了能用于定位,还可以用于路径规划,包括全局的路径规划。但是,视觉SLAM建立的地图只是稀疏地图。如果想要通过视觉SLAM建立稠密地图有两种方式,一种就是利用立体视觉技术来恢复深度信息;另外一种方式就是像沈老师(沈劭劼)介绍的单目恢复深度信息的方式。这种方式目前仍处于研究阶段,这种技术能否应用于无人车还有待于探讨。
虽然在无人车上使用视觉SLAM和激光SLAM都可以,但是我认为对于视觉的应用,更多来自于它的重定位技术,也就是视觉里程计。比如,在已知地图的情况下,通过视觉对无人车进行定位。
最后,关于未来发展趋势,我认为有两点可以说。
第一点是关于建图的。利用激光雷达建立地图,现在已经相对成熟。但是该技术目前也面临一些挑战,所有激光雷达SLAM的难点在于激光雷达传感器不是全局快门。这会导致地图的distortion。只有消除地图的distortion,才能建立出较高质量的地图。我认为将来在无人车的应用中绝对不仅仅只用这两种传感器,未来需要结合其他的传感器,比如低成本的惯性传感器、轮子编码器、甚至低精度的GPS。利用多传感信息融合技术,获得更好的表现。
第二点是关于SLAM技术在应用中的一些问题。首先,虽然SLAM技术中有闭环检测,但是在无人车的控制中不能做闭环检测,因为状态是不能突变的。另外,在SLAM做状态融合的时候,昨天沈老师和李名扬博士都已经介绍了,需要注意到它的XYZ和yaw是不可观测的,需要维护好协方差。那么,这里面包含了一个值得探讨的问题,那就是视觉里程计的误差应该如何科学定义。例如,当使用GPS对机器人的位置进行纠正时,GPS是绝对sensor,而SLAM也被当作绝对sensor。将两个绝对sensor的信息做融合时,如果SLAM的误差已经足够小,那么系统就会被SLAM绑架,GPS 就起不到任何作用。这种多传感器融合机制是否合理,也是未来值得探讨的一个方向。
问题2:为了使无人驾驶系统有更好的鲁棒性,我们希望使用多种传感器,包括视觉传感器、激光雷达、惯导等。我想请教在座的各位专家,在无人驾驶领域的多传感器融合中,我们应该如何配置各传感器?因为各传感器要完成的工作是不同的,有的用于定位,有的用于感知环境。我想知道各位专家对于未来的无人驾驶的多传感器配置方案有什么想法?另外,对于多传感器信息的处理,目前还有哪些关键问题需要解决?
王乃岩:关于这个问题,我在报告里已经介绍了很多。另外,我认为比较重要一个问题是多传感器的同步。沈老师(沈劭劼)在报告中也讲了很多关于多传感器同步的内容。其实,多种异构传感器的同步以及在系统中时间戳的对齐是一个很大的问题,尤其是在各种传感器的频率不一致的情况下,这是一个很大的挑战。
问题3:我们提到多传感器的融合,目前各传感器各有优劣。随着激光雷达的发展,它的价格将会急剧降低。我想问雷总(雷祖芳),如果激光雷达的价格降低到目前视觉传感器的价格,那么是否意味着将来激光SLAM将会取代目前鲁棒性较差的视觉SLAM?
雷祖芳:我们做激光雷达的愿景就是希望激光雷达的价格可以更亲民。当然是在保证性能的前提下,尽量将价格降低。但是,激光雷达也有技术问题需要解决。
在视频中大家也可以看到,当我们用比较低线数的激光雷达与视觉传感器做融合的时候,比如16线,我们还是用到了很多视觉传感器的优点。例如,在车道线和信号灯的检测中,用激光雷达检测车道线和信号灯的效果并不好。因此,我们还是在用摄像头做相关的检测工作。但是在目标的探测、识别和高精度方面,激光雷达的优势还是非常明显的。
随着多线数激光雷的研发,比如业内已经有上百线数的激光雷达,它的信息就变得非常强大。它使得激光扫描获得的点云能够直接和视觉中每个像素进行匹配。在这种情况下,目前视觉传感器在自动驾驶中能做的工作它都能做。目前主要是受制于成本的问题,才没有被广泛使用。如果将来高线数激光雷达的成本能够降低到摄像头的价格水平,那也许就可以替代摄像头了。当然这是非常困难的,但是它的效果也是非常好的。
问题4:我们目前在很多机器人的导航和定位中,主要还是使用纯视觉的SLAM,包括增强现实,目前主流做法也是仅仅依靠视觉SLAM来解决实时的导航和定位问题。这样做的主要好处在于它的体积较小、功耗较低和价格较低。那么,目前在地面机器人的路径规划中,如果使用纯视觉的SLAM,那么它的优点和缺点有哪些?以及如何通过视觉SLAM高效构建稠密的地图?
杨德刚:如果用视觉SLAM做实时的建图和定位的话,其实有一个前提条件,那就是这个SLAM的姿态要准确,对环境的感知也要准确。
这里有一个约束条件,那就是车速要比较低。因此,常见的扫地机器人或者是送货的机器人可以用实时的SLAM完成导航的任务。但是,如果你是有大范围的场景和明确的目的地的需求,那么还是需要有地图的。这样就不单单是一个纯粹的SLAM的问题了,还有重定位和匹配的过程。其中,路径规划除了有低速的限制,还有对于实时计算能力的更高要求,还有对SLAM的精度和效率的更高要求。如果提前有高精度地图的话,你可以做这方面的冗余备份和补偿,比如用高精度地图可以提前获得弯道信息。当环境感知不准确的时候,你可以获得可行区域。当定位不匹配的时候,比如SLAM失效的时候,你可以通过与已有的高精地图进行匹配来重新初始化。因此,在自动驾驶这种场景下,多年的实践说明高精地图是一个必备要素。
当然,高精地图也有不同的做法。比如,目前大家普遍做都是重高精地图。这种高精度地图对地图的完整性,包括元素的完整性和逻辑关系的完整性,要求都非常高。因此,高精地图的生产是非常昂贵的,这是现状。如果真的要把无人驾驶技术落地,这是必须要解决一个痛点。
解决的方向是什么呢?因为目前所有的模块都依赖于高精定位,所以解决办法就是降低对高精定位的依赖。降低这部分的依赖,这部分的计算性能就要转移到感知上面。当然现在感知上面也有不错的进展。那这就相当于做局部的实时传感建模,局部传感建模需要用到SLAM技术,需要同时跟云端的高精地图做全局匹配。这样做相当于在中间插入局部地图的模块。在这种情况下,整体的代价就会降低一个程度,也就更容易推广。
问题5:在同步的定位与地图构建的技术中,地图是非常关键的内容。那么在做无人车的路径规划的时候,我们所依赖的地图要如何解决呢?未来有哪些发展方向?
王乃岩:我认为地图不一定是强依赖于高精地图的。
我从两方面来说。一方面,基于已经建立好的高精地图做路径规划,这是最简单、最方便、也是最偷懒的方式,因为高精地图可以提供所有需要的信息。但是,当我们人类在开车的时候,我们需要在出发之前就想清楚整个地图的样子吗?答案当然是否定的。因此,更关键的问题,我认为是如何构建一个相对地图,就是以局部感知为基础的相对地图的构建。
另一方面,我认为路径规划也是同样道理,高精地图可以只提供一些基本的信息,对于路面上更丰富的信息,还是需要感知去补充。我认为这是一个可能的发展方向。
问题6:环境中物体的检测和识别是非常关键的技术。特斯拉出车祸的原因就是错误地把货车识别为天上的云彩,从而造成了非常严重的车祸。目前已有的物体检测识别中,二维的比较多,三维比较少。我想请教各位专家,二维物体的检测识别与三维物体的检测识别会有哪些不同?目前我们广泛使用的还是机器学习、深度学习的方法,因此我们必然要面临数据集的准备和网络的训练等问题,那么在这些方面我们需要做哪些转变?
王乃岩:我认为从二维到三维的转变是目前视觉面临的最大问题。在算法的转变方面,我认为不能把深度学习当成个黑盒子,把数据扔进去就直接输出你想要的东西。不能把深度学习当成一个黑盒子,当成一个复杂的函数映射。在这里面,我们一定要利用一些先验知识和约束,3D信息是有很丰富的先验知识和约束的。
如果用视觉的话,需要利用几何约束。如果用激光雷达的话,直接有3D点云信息。我们怎么能够把几何约束对于场景的先验信息放入到深度学习中。例如,自动驾驶的主要场景是路面,我们怎样把这个先验信息放到深度学习当中去,我认为是非常关键、非常重要的问题,也是能够解决好2D到3D转变的核心问题。
雷祖芳:3D的激光点云是可以被用于做物体检测的。但是对于物体识别,它有一定的难度,这方面也是我们正在研究的一个领域。
以前,我们对激光点云纯做聚类,然后再做识别。随着技术的发展,我们正在尝试用多线的激光雷达做汽车、行人和非机动车的标注。在完成标注以后,我们用视觉训练的方式训练激光点云的特征。我认为这也是一种趋势,由于视觉检测有时会遇到强光和信号的干扰,而激光雷达没有这些干扰,数据一般也不会丢失。另外,由于目前视觉的训练方法,比如深度学习的方法是比较前沿的,做得也比较深入,所以我们就想到把激光点云用视觉的方式来训练,以完成物体的识别和探测。
王乃岩:如果大家关注视觉的会议的话,比如说CVPR,可以发现CVPR最近刊登了非常多的有关用深度学习处理3D点云的工作,而且也取得了非常不错的成果。以Uber为代表,他们做了相当不错的工作。在点云感知和点云检测方面我们内部也都使用了深度学习的方法。这应该是一个趋势。
问题7:目前通过视觉和惯导的组合,我们是如何提高无人车的定位精度的?刚刚宋总(宋宇)提到,在无人机中使用了VIO算法。下一个问题是,如果把VIO算法迁移到车平台上是否有更好的应用?
宋宇:我认为视觉有视觉的缺点,惯导有惯导的问题。在无机人的视觉和惯导的融合中,可以采用松耦合的方式,也可以采用紧耦合的方式。松耦合的优点在于它的鲁棒性。一个传感器坏了,而其它的传感器不坏,整个系统就不会出问题。而紧耦合中,如果有一个传感器坏了,那么整个系统将不能工作。但是,紧耦合的运算量相对大一些,精度高一些。这是两者的优缺点。
对于无人机而言,惯性信息对VIO(没有loop closure的SLAM)的前端和后端都有帮助。对前端的帮助主要是引导特征匹配。在无人机的应用中,如果强制增加匹配,增加运动恒速模型或者是运动恒加速模型,那么你假设的RT可能是不对的。你的3D特征点可能在上一帧的投影就不对了。当投影面扩大后,搜索面就会扩大。当搜索面变大之后,计算量就会上升。如果计算量上升,那么误匹配就会增加。所以,惯性信息,特别是陀螺的旋转信息是非常关键的。它可以对SLAM的前端有非常大的帮助。另外,加速度信息同样是非常重要的。同时,VIO也可以修正陀螺仪和加速度的信息,两者是相辅相成的。
另外,我认为无人机和无人车是不一样的。无人机是空中飞行的6自由度机器人,而无人车是一种受非完整性运动约束的3自由度机器人。因此,研究无人车的性质可以考虑运动性约束。比如,无人车不能同时前进和侧移,它只能在一个平面上运动。它不会发生很大的roll和pitch,除非出现翻车事故。在无人车上面也许可以做更好的简化,比如在无人机上面的VIO不能跑大规模的BA,因为所有的算法都是在一个芯片中实现的。而且做无人机的时候,所有的代码都要自己写,不能用第三方库。矩阵求逆和QR分解都要自己实现。我们做好一个产品后,就要交给测试部进行测试。测试部从南测到北,从-20度测到30度,在各种场景下测试产品。然后,各种bug会反馈回来,我们再做修改。无人车SLAM的应用,我认为目前全路况大规模的应用还是有一定问题的。
无人机已经商业化了,而无人车还远远没有达到商业化的要求。但是对于特殊场景的应用还是大有可为的,比如纵目科技做的自主泊车,或者是图森未来做的货车在码头上的自动驾驶,但是,全路况的无人驾驶还是有一定的距离。例如,我在卡耐基梅隆的时候,我见到Uber在卡耐基梅隆建的研发中心。他们挖走了卡耐基梅隆计算中心一半的研究员,甚至连匹兹堡的美国国家计算机中心的总监都被挖走了。但是,现在Uber已经是分崩离析的状态了。因此,自动驾驶的挑战和难度是很大的。因为这不仅是自动驾驶的问题,还是人工智能的问题,还是Visual SLAM的问题,还是deep learning的问题,这里面涉及到传统机器人学的方方面面的问题,甚至包括结构和控制等问题。因此,大家要做好长期奋斗的心里准备。
问题8:如何提高目前算法的匹配速度以及准确性?如何减少相似条件的误匹配?例如,当进行实时的定位和导航的时候,我们会碰到很多相似建筑物、植被和路标等,如何减少相似条件的误匹配?另外,在视觉SLAM当中图像增强是非常关键的一个技术,我想请教各位专家目前在视觉SLAM中哪一种图像增强技术的适用性更好?
杨德刚:我来回答第一个问题。首先是加快匹配速度的问题,这里面的关键点在于匹配的时候有多少个计算的点。
因此,一种解决方法是减少匹配的参考物的数量。减少参考物数量有一个隐忧,那就是可能导致最终的匹配会出现一定的误差,导致最终结果变差。这就引出了第二个问题,怎么减少这样的误配。例如,在做定位的时候,我们可以使用当前时刻的传感器的输入数据跟全局地图或局部地图进行匹配做定位,这是一种常见的计算思路。在这样的形式下,我们只用当前帧的信息做匹配。由此引申出来了减少误配的方法,例如,当局部里程计的精度为千分之一时,我们可以累计一千米的局部地图跟全局地图进行匹配,这样误匹配就会降低很多。
另外一种方法是,在地图中为参考元素增加更多的特征或者是区分性。例如,只计算一个物体的位置,xy,它的区分性肯定不如加上朝向等信息的区分性。这也是一种减少误配的思路。
在图像增强这方面,我们在实践过程当中,我们很少在SLAM端直接做这件事,我们主要还是在传感器端做这个事情。
宋宇:我认为在图像匹配的问题上,现在确实有在视觉SLAM中究竟是前端重要还是后端重要的这样一个问题。我的个人理解是前端更重要。因为视觉SLAM从一个概念发展至今,理论上已经成熟完备了。当初EKF_SLAM就已经解决SLAM的问题。
虽然现在有了滤波器,但是前端对整个SLAM系统的影响还是很大。大家可以思考一个问题,你们认为是feature matching好还是feature tracking好呢?每一种方式都有自己的优势。比如tracking是不需要descriptor的,但是它的帧率要求很高。那么,可能就做不了loop closure,做不了BA。
但是对于做全局的匹配,视觉里程计里有一个问题就是它没有一个初始的定位基准。起始位置就是坐标系的零点。另外,全局定位其实是一个很难的问题。例如,扫地机器人先在某一位置工作,然后人为地把它搬到另一位置,它还能不能顺利定位?这个问题还是很难解决的。因此,现在Visual SLAM中做loop closure或者重定位中都要用BOW。但是,它也有局限性。在无人驾驶中,可以考虑加入场景的标志,比如交通标志。
王乃岩:我也认为前端更加重要。
举个例子,我是以前是做视觉方面研究的。我以前一直在做追踪,关注了很多单目追踪的相关研究。我发现在做追踪过程中,只要把detection做得准确,后面的匹配和跟踪就可以做得非常好。我认为前端和后端的关系也是这样的,如果你前端做得非常好,后端可以做得非常简单。至于怎样把前端做好,我认为很重要的问题是descriptor这个问题。大家可以关注一些运用deep learning做descriptor的工作。我认为这方面大有可为,还处于非常早期的状态。我们之前做双目视觉的时候,尝试过一些类似的方法,结果都相当好,而且运算速度我认为也不是太大的问题。因为现在有非常多的方法可以加速。比如,descriptor不会是一个很复杂的网络,可能就是几层浅一点的网络,如果说把它二值化,或者是用一些别的手段,是可以使它在CPU上运算得很快的。这是一个很好的研究方向和热点。
注:文章由深蓝学院第二期视觉SLAM课程优秀学员郑浩整理,未经允许,禁止以任何形式转载。
『三维视觉前沿进展与应用』讲习班
由中国图象图形学学会主办的『三维视觉前沿进展与应用』讲习班将于10月13日-14日在北京大学举办,由北京大学的陈宝权教授担任学术主任,邀请8位领域内专家学者作报告和分享。讲习班限报150人,更多详情:『三维视觉前沿进展与应用』