买特斯拉可以,为什么不能完全相信自动驾驶?
共 4953字,需浏览 10分钟
·
2021-03-20 15:11
点击上方蓝字,关注并星标,和我一起学技术。
大家好,前几天的时候写过一篇滴滴和自动驾驶的文章,大家反响很好。有些小伙伴在后台给我留言说让我详细讲讲自动驾驶,倒不是我不想讲,而是确实没干过。好在我虽然没吃过猪肉,但之前听过很多大佬的内部分享,也算是看过猪跑了,就把我了解到的结合一些我自己的思考分享给大家。
不过首先声明,这只是我个人了解消化到的信息,可能和实际情况有所出入。有所谬误是正常现象,大家去芜存菁,选择性地吸收即可。
什么是自动驾驶?
说到自动驾驶,不明就里的人以为就是AI或者是电脑自己开车,人往里面一坐什么都不用管就完了。这也不能说不对, 只能说是我们的终极追求。显然我们距离这个追求还有很长很长的一段路要走,所以为了让这个目标看起来不是那么遥不可及,人类发挥想象力和归纳能力,对自动驾驶技术进行了分级,将它分成了几个阶段,让这件事情看起来不再是那么不靠谱。
目前比较公认的标准是国际自动机工程师学会,英文全称是Society of Automotive Engineers,简称SAE。SAE将自动驾驶分为从L0到L5一共六个等级,不得不说SAE是老法师,这个分级分得实在是太有水平了。我们一起来看下,原文是英文比较晦涩,我做了人话处理:
L0:无自动化,所有一切皆人力。 L1:驾驶支援,对驾驶员的驾驶有所辅助 L2:部分自动化,算法可以短暂接管车辆,驾驶员的眼睛和手可以短暂休息 L3:有条件自动化,车辆可以独立完成驾驶,但需要驾驶员盯着 L4:高度自动化,真正意义上自动驾驶,驾驶员不一定要盯着 L5:完全自动化,驾驶员都不需要了
大家拿着这个标准对比一下特斯拉的所谓的自动驾驶的功能就能很明显地知道,马斯克是个大忽悠,特斯拉并不能自动驾驶。它顶多顶多只能做到L2,也就是在一些场景当中可以让驾驶员稍微休息一下。比如说高速上,大家可以松手,让车辆自动行驶一阵子。所以后来特斯拉不再强调自动驾驶这个概念了,更多地说是“辅助驾驶”。
现在发展到什么阶段了?
看完了国际标准,接下来我们再来看看发展的现状。大家肯定很好奇,现阶段究竟到什么程度了?
对于这个问题我搜了很多资料,也没有看到一个定论。后来我找到了中国信通院于2021年2月发表的一篇叫做《各国自动驾驶政策概况及特征》的文章,在文章当中我找到了特别精髓的一段,就是下面这段,关键词我已经给高亮标出来了。
看到了吗,2020年左右实现高速公路L3级别自动驾驶。看到L3先别激动,先看看它前面有一个非常非常内涵的限定词就是“高速公路”。我个人觉得这其实基本上就等于L2水平的自动驾驶的意思,为什么我这么说呢,因为高速公路这个场景下会避免很多很多现实的问题。
我举个简单的例子,大家如果开过车上过高速就会知道,高速公路的路线是非常固定的,并且高速公路的路况要比城市乡村道路要简单得多。你在开高速的时候不会遇到红绿灯,也不会有行人,不会有乱窜的电瓶车,更不会有家禽、路边摊等复杂的情况。如果你是工程师,你也很难想象汽车在农村、山路、沙漠等极端路况以及环境当中会遇到什么诡异的case。所以在L3前面加上高速公路的限定词也是没有办法的事情,因为实际环境实在是太复杂了。所以根据我的估计,对于实验室以及一些理想路况的情况,目前的顶尖技术是可以达到L3甚至是L4,但对于放之四海而皆准的普通路况来说,保守估计应该只能实现L2。
很多人可能会反驳我说,不对啊,百度的无人驾驶出租车不是在北京上线运行了吗,那也不是高速啊?
但其实你仔细想想会发现北京这样的大城市同样满足理想路况的标准,虽然相比高速多了红绿灯,但一个是出租车一般来说的活动范围相对来说还是比较小的,基本上只包含市区,并且北京这样的大都市,路况也是相对有保障的,不可控因素较少。所以在这种相对理想的环境当中实现L3甚至是L4的可行性还是比较高的。
听起来L3好像已经很厉害了,但实际上普通的家用车就是L1的水平,因为现在的家用车都有先进的车控系统,有电子助力器,有定速巡航等功能,妥妥的L1。所以最近几年一直在喊自动驾驶,但实际上只往前走了一步,可以理解成才刚出新手村不久,距离真正的boss还远着呢。
自动驾驶目前的解决方案
说到自动驾驶,很多人首先想到的还是特斯拉,第二想到的是各种深度学习的模型和技术,还有什么强化学习之类的。
但实际上,汽车本身就是一个非常复杂的工程系统,在这样一个复杂的系统上做自动驾驶,相当于两个非常复杂的系统的叠加,显然这也是非常非常复杂的。我这么说大家可能感觉不到,所以下面我将会结合现在主流的自动驾驶的解决方案,来聊聊现在的方案以及对应的挑战。
特斯拉自动驾驶方案
目前市面上存在两套自动驾驶方案,分为主流的雷达方案以及特斯拉使用的图像识别方案。
我估计大家可能对于特斯拉的方案更加感兴趣,所以先来说说特斯拉的方案。我在网上找到了这张概念图,大家英文不好没有关系,只需要知道图上标记的这些位置都是各种用途的摄像头就可以了。
特斯拉采用的是V1R方案,即3个摄像头加上一个毫米波雷达,拥有3个前向摄像头以及一个77G毫米波雷达的传感器。下面这张图展示了车辆周身外能够感应到的距离,稍微有些模糊,我简单阐述一下,差不多就是往前最大可以感知到160米,左右两侧最大可以感知到60米,往后最大可以感知到100米。
既然这么多摄像头和传感器,那应该是万无一失才对,为什么市面上特斯拉这么多因为自动驾驶的事故?甚至很多例子是面前一个巨大的障碍,但是车辆居然不知道闪避,就直直地撞上去了。
这是因为特斯拉采用的是纯图像识别加上雷达感知的方案,基本上可以理解为以图像识别为主。图像识别有一个很大的问题是它的准确率相对并不高,即使在训练的过程当中可以达到99%以上的准确度,但是谁也不能保证它训练的样本当中已经覆盖了所有的情况。毕竟每个国家,每条路都可能有自己的特点,比如之前出过的一些事故,什么白色的卡车躺在路中间,结果模型给识别成了天上的白云,这样的例子屡见不鲜。
这并不是图像识别的模型不行,而是模型没有办法覆盖到所有的情况,实际上工程师也不可能预料到公路上可能出现的所有情况,既然如此我们就不能保证系统一定一定是安全的。
你可能还会奇怪,在上面的例子当中难道雷达就没有工作吗?当然是有工作的,但是凡是系统都会存在误差,尤其是当图像识别的结果和雷达结果有矛盾的时候,系统究竟应该相信哪一个的呢?我不知道特斯拉里面的代码是怎么写的,但显然在出现事故的例子当中,都选择相信了模型预测的结果,而把雷达的报警当成了误差。
从外界看来,很难知道特斯拉这么设计包含了哪些苦衷,但都看得到血淋淋的事故。
主流方案
说完了特斯拉的方案,再来聊聊主流的方案。几乎可以这么说,除了特斯拉之外,没有任何一家汽车厂商采用纯图像识别的方案,采用的方案都大同小异,就是大家看到的车顶上顶了个雷达的方案。
在这种方案当中,摄像头被当做了辅助,以测距的雷达为主。比如车顶上那个会旋转的雷达,是一个360°全景雷达,可以扫描车身周边整体的环境。除了车顶的雷达之外,车前方还有多个测距的雷达,有中程测距雷达,短程测距雷达等等。不同的雷达精度不一样,并且成本也不同,所以被用在了不同的地方。
雷达
据我所知,目前采用的雷达是激光雷达,这样的雷达扫描出来的结果是一个3D的点阵。最后车辆的自动驾驶的系统就是对这样一个点阵图使用各种技术进行分析,从而得出行驶的决策。由于汽车的形式速度很快,再加上雷达扫描的高帧率,带来的一个必然结果就是数据量爆炸。数据量虽然爆炸,但是车辆对数据分析的要求却不能降低,尤其是车身是在运动的,速度很快的话,0.1秒的延迟就可以酿成惨剧。所以计算的延迟必须非常低。
但你会发现这其实是天然矛盾的,数据量已经很大了,还要求实时性,那就可以得出一个结论,这样的系统不可能全装在车上。我们在车上加装一个芯片是可行的,装一个电脑机箱问题也不大,但如果要装一个分布式的计算集群就离谱了。所以这样海量的数据计算只能放在云端,让云端的服务器集群来计算。但这样又带来了一个问题,数据处理放在云端了,就会有网络延迟,就好像大家打游戏一样。这个延迟是硬性的延迟,没有办法解决,只能等着通信技术提升,所以这就是为什么5G之后,自动驾驶才提上日程。
地图
雷达扫描的方案当中,相对来说准确性更高,出问题的概率要比图像识别低一些。但也同样有一些硬伤,一个比较大的硬伤是,缺乏地图信息。比如车辆要从A点去B点,我们通过各种地图可以知道路线,但是却不能知道路况。不知道这条路有多宽,是高架还是普通路,不知道几车道。不知道这些信息还如何行使呢?
所以必须要知道,解决方案就是事先把路况信息扫描一遍,把这些信息存储起来。这就是常说的高清地图,其实也就是带上了更多信息的地图。根据我了解的消息说,目前的高清地图需要扫描全景,精确到毫米,要求非常高。要求一高带来的结果就是数据量爆炸,一小段路就能占用掉大量的存储。
数据量一爆炸本身就能带来很多问题,最简单的例子就是说,我们不可能把原始数据直接丢进AI模型当中,什么样的模型也不可能接收这么多维度的特征,必须要经过一些处理。但如何处理,怎么处理,就是一个巨大的问题。
控制
自动驾驶另外一个很大的问题就是控制,很多程序员理解自动驾驶是一个算法调用汽车系统的各种api完成行驶,这么说倒也没错,但是实际情况要复杂得多。
我们正常人在开车的时候,车辆拥有很多的传感器,把人的各种行为转化成驱动命令让车辆执行,这样的传感器称为ECU。在自动驾驶当中,驾驶系统直接给ECU发送指令,来控制汽车。但问题是汽车的ECU一般都有20个以上,我们让车辆执行指令的时候也不只是调用一个ECU,可能是多个ECU的组合。大家用排列组合简单算一下,就知道这当中的复杂度。举个简单的例子,你想要让车转弯90度,你不仅需要控制方向盘转向,还需要控制行驶的速度和转向时间。控制行驶的速度需要控制刹车和档位,转向时间则需要根据转弯半径以及汽车速度来估算,并不是跟汽车说转弯九十度,它就能执行的。
不考虑自动行驶的算法部分,单单考虑车辆控制的部分,就是一个大工程,显然又需要加装很多传感器和器件。带来的结果就是系统复杂度进一步提升,提升的结果是会导致大量的热量。于是又需要加装散热模块,加装了这么多模块之后,你会发现一个很大的问题,就是系统缺电。现在汽油车的电力都是靠发动机发电来的,但内燃机的发电效率很低,要带动车辆本身的系统已经不容易了,又额外增加了这么多系统更是雪上加霜。所以很多专家看好电动车,因为电动车不存在这个问题。的确如此,电动车天然有电,但问题是,电动车假装这么一套系统耗电量也不小,续航会明显缩短,所以目前考虑到续航,各大厂商往往还是在汽油车或者是以汽油为主动力的车上改装。但这仍然是一个妥协的方案,并没有真正解决问题。
其实了解自动驾驶了解得越多,越是会发现妥协的存在。类似的问题还有很多,倒不是说妥协不好,或者不应该妥协,而是想说这项技术的迈进远不像大家想的那么顺利。
尾声
说了这么许多,相信大家也应该感知到了自动驾驶的难度,的的确确是一个非常非常复杂的大工程。很多人因为了解到它的复杂性而退缩,觉得自动驾驶只是空话,短期内不会实现。但也有人迎难而上,选择攻克这一难关。
索性现在国内的自动驾驶方案虽没有遥遥领先,但也是第一梯队,像是acm的顶级大佬楼教主等一众人才就专注在自动驾驶领域,我虽然无缘加入,但对他们的勇气和付出一样由衷地敬佩。也希望早日看到这项技术投产,有能力的话我一定支持。支持归支持,但有一点还是要说清楚。我们在享受自动或者是辅助驾驶的便利时也需要时刻保持安全警惕,技术的迭代和升级是需要代价的,一个产品从实验室里诞生之初一定不可能覆盖到所有的case,谁也不能保证你不会遇到系统意料之外的突发情况,所以一定要小心,享受科技,但也别过度相信科技。
好了,今天的文章就到这里,感谢大家的阅读,喜欢的话不要忘了三连。