遵守交通规则,远离事故风险,让安全伴随每一公里。本文主要介绍GIV2022|西安交通大学杨子江:自动驾驶仿真测试优势在于效率高、一致性,并为读者提供相关信息,以引起读者的兴趣,接下来就跟我们一起来了解一下吧,希望对您有所帮助。
2022年12月16日-17日,由安徽省发展和改革委员会作为指导单位,合肥市人民政府、中国电动汽车百人会联合主办的“2022全球智能汽车产业峰会”在安徽合肥召开。本届论坛围绕“全球新变局与智能汽车发展新战略”主题,共设置5个主题论坛和2场闭门会议,与行业机构、高校院所和领先企业代表共同探索我国智能汽车发展新路径。
其中,在12月16日举办的“科学家论坛”上,西安交通大学图灵交叉学科研究中心主任杨子江发表精彩致辞。以下内容为现场演讲实录:
各位嘉宾,各位专家下午好!今天我给大家带来的题目是《自动驾驶仿真测试》,我们知道汽车智能化实际上是一个软件化的过程,可能不是所有人都同意软件定义汽车,不可否认的是软件所扮演的角色会越来越重要。有人曾经问过比尔盖茨,你认为这个世界上人所创造的最复杂的人造物是什么?比尔盖茨说是软件,软件如此的复杂,以至于没有人能够保证它的正确性。我做了几十年的软件可靠性和安全性的研究,软件是没有办法证明它的正确性,你不能够用一个软件来证明另外一个软件的工业性,每一千行工业软件里面大概有七个错误。
现在我们把软件用来控制汽车,而汽车又是性命攸关的系统,怎么样能够把你的生命交给一台机器,里面控制的软件每一千行有七个错误,怎么保证自动驾驶汽车的安全性?我想这个可能是现在自动驾驶迟迟不能落地的最主要的原因之一。怎么样能够验证一辆汽车的安全性?最直观的一个方法,当然是我把车造出来之后放到路上去跑,如果通过测试这个车没有出问题,可能这个车大概不会出问题。但这个大概可能是一个很大的问号,这里面的问题可能非常多。通过实车的测试,它首先要有很多的问题,比如极端场景,你做实车测试的时候想在合肥测下雪天怎么样,可能合肥一个冬天不下雪,怎么测试?如果测出在测试场跑了很多圈,跑第二圈的时候跟跑第一圈效果差不多。还有成本的问题,除了造车的成本很高之外,还有时间的成本,当你把这个软件系统开发出来等过了很长时间再安装到车上,这个时间成本是非常巨大的。做软件的都知道,每过一个阶段,修复这个bug的成本会乘以10。怎么解决这个问题?一个很好的解决办法就是仿真测试。
我刚才说了,实车测试有很多问题,最主要的问题就是数据量不够。要多少数据量?兰德公司给过一篇论文,如果能够证明一辆车比人开车更安全的话,经过110亿英里测试。马斯克也说,如果政府允许一个车上市,应该经过百亿英里测试,一辆车从地球开到太阳来回53次。这种情况下如果有200辆车大概要开500年,这种测试是不可能的。解决这个问题的唯一办法就是仿真测试,仿真可以做大规模的并发测试,像Mobileye在AWS上同时测50万辆车,在软件仿真测试的时候,软件复制的成本是零,不像造车,如果造十辆车的成本就是一辆成大概的10倍,如果在软件环境下有50万辆车,它的成本就是算力的成本。仿真测试是做车的加速设计、加速测试非常好的办法。带来什么优点?工程化,在做车的时候分阶段进行测试,在分阶段的时候就能仿真在各个不同的阶段进行有效测试。另外,它的效率很高,不用等,当系统真的上车以后,让这个车去开的时候发现问题再回来修,每个阶段我们写了代码,就可以在仿真情况下进行非常高效的测试。
另外,还有一致性,当我们的车遇到问题的时候,我们可以在仿真情况下把它复现出来,找一个bug第一步就是把这个bug复现出来,在仿真情况下有可能把路上实际遇到的问题复现出来。还有可靠性,每次结果可以用大量仿真模拟计算。还有可测性,实车测试有很多危险极端的情况,有各种各样的法律风险,但是在仿真情况下这些风险都不存在了。还有精确性,在仿真情况下我们可以从上帝视角来看测试的整个环境,每一步都有非常精确的数据,我们用精确的数据来对比实测数据,能够得到大量的问题。
测试在仿真带来一个数据飞轮,数据闭环在互联网企业用得很多,我们搞一个产品出来,不是很完美,但是这个产品用户在用的过程中反馈了数据,我们根据用户反馈的数据来提升这个产品,把这个产品再投放给用户等等,实现了数据闭环。
在汽车这个传统的行业,数据闭环是不可行的,不能说我造了一个车,不知道这个车安全不安全,交给用户去用,用户撞了车再看这里面出现什么问题再做提升。这个数据闭环在仿真情况下在汽车行业可以实现,通过仿真来不停地在上面做迭代。用的过程中在整个汽车设计的生命周期都可以用到仿真。
在算法开发阶段,它的感知、规控是分开设计的,在算法开发阶段、感知可以生成低成本的大量带标注的数据看自动驾驶算法的感知准确性,对规控也是一样。时间关系不在这里做非常详细的技术上的讨论,在量产阶段可以采用影子模式,这是特斯拉所采用的行之有效的方法,影子模式用它的自动驾驶系统和人同时在开,影子模式搜集大量的数据,大量的数据可以在仿真情况下进行复现,能够进一步提升汽车的安全性、可靠性。
仿真在这里面有很多的优势,它解决了汽车软件很多的问题,但是这里有很多挑战要解决。仿真有这么多的优点,肯定有它的问题,要不然现在所有的车都用仿真。仿真一个很大的问题就是技术性比较难解决,很多技术问题要去解决,比如仿真软件本身就是软件,它的安全性、可靠性怎么来保证。另外,传感器在仿真情况下它是否真实,你的仿真软件到底仿的有多真,这个是要解决的问题。还有泛化的真实性,为了获得更多的数据,往往把真实道路采集的数据进行泛化,由1公里变成10公里,变出了这10公里到底和真实的数据相差有多远,这个可能是要考虑的问题。另外,各种各样的corner case难以穷尽,怎么构建高覆盖度的场景库,这是要考虑的问题。此外还有各种各样的地域性的问题要解决。
在这里给大家做一个开发系统的演示,软件环境下,激光雷达、毫米波雷达、摄像头等等怎么样构建一个真实地图场景的设计和复现。另外,在这个环境下怎么样设置大规模并发各种各样任务的迭代,怎么样在环境下进行仿真,这是一个完整的平台很简短的演示。在这里要解决的问题还是很多的,第一个,传感器,我们谈了很多元宇宙,元宇宙相对来说比较简单,解决了人的可见光的问题。在汽车仿真情况下,车不仅用摄像头,还有激光雷达、毫米波雷达,比如在这个会场里面开会,摄像头的仿真可能相对比较容易。在这个会场里面如果用激光雷达看这个会场会是什么样的机器,能不能把激光雷达展现的点云在软件环境里面仿真出来?这是传感器仿真要解决的问题。
车辆动力学方面,假如,十点钟,合肥在书香路路口是下雨,某一型号的车踩一脚刹车,能不能计算出在仿真情况下这脚刹车下去,用了多长时间把车停下来,在地面上滑行了多远?这是动力学仿真所要解决的问题,还有场景的解析、地图的加载等等,以及跟自动驾驶系统的对接都需要解决。
高保真感知的模拟,这种情况下我们是一个合成的数据,怎么让它能够代表一个真实的道路场景,不仅要从真实的摄像头拍摄的场景进行数据合成,并且要用DNN渲染得更加逼真,渲染得更加逼真可能是很多游戏引擎所做的事情,但在这里光有游戏引擎做真实渲染是不够的,为什么不够?我们用摄像头放在车上,这个摄像头拍摄不是静止的。此外,我们还有鱼眼摄像头,除了鱼眼摄像头在行驶过程中因为逆光的原因,因为运动产生的模糊,因为下雨天经常看到晕光的情况,还有镜头被脏东西污染了等等各种各样的情况我们都应该在仿真情况下把它展现出来。我们的目的是为了做车辆测试,车辆的测试就应该是越贴近真实情况越好。真实情况不是一个完美的情况,有可能会产生各种各样在图里所列举的情况,这种情况都是要仿真出来才能能够有效来测试自动驾驶软件系统的安全性和可靠性。
还有激光雷达,激光雷达的仿真也是难度比较大的,不同材质的反射率是不一样的,反射光的强度不一样,在现实中不是完美的,在运动过程中在下雨天,激光雷达所返回来的点云信号在拍人行道斑马线的时候并不是每条线都是平行的,这种在仿真环境里面仿真出来才能更有效地测试。
还有交通流,什么是交通流?怎么模拟?还有左下角的图,被测的蓝色自动驾驶车辆,除了蓝色自动驾驶车辆在仿真过程中还有大量的NPC其它的车辆,其它车辆不能按照事先设计好的轨迹进行活动,这就相当于僵尸车,现实中每辆车的行为根据其它车的行为而改变的,是一个交互的过程。怎么样在自然交通流的情况下模拟人的驾驶行为,能够让这里的NPC车辆像人一样开车?能够仿交通的环境更逼真,这是仿真要解决的另外一个问题。比如要做加速测试,经过110亿英里的测试,即使对仿真的情况也是一个非常非常大的数据量,难以在短时间内就能完成。
在这种情况下我们想做一个对抗交通流的产生,我们希望能够加大这种corner case出现的密度,美国高速路交通局公布的数字,人开车的话大概每100万英里出现严重事故,每1000万英里会可能会死一个人。每过100万英里或者1000万英里才能出现平常不太会出现的情况,而恰恰是这种平常不太出现的情况导致自动驾驶难以落地。我们在仿真的时候就希望更大密度地出现这种平常难以遇见的情况。同时,这种难以遇见的情况在仿真的情况又要符合人的驾驶习惯。你不能说我在高速上开车的时候,其它所有车辆都想我迎面而来,其它所有车辆都在逆行,这种是在人的开车实践中基本不会出现。
还有一个问题,这个问题听起来是非常简单的问题,但是实际上很复杂。我怎么样能够来描述一个交通场景,我在做测试的时候,脑子里面可能有一个想法,比如我想在高速路上开,有一辆车从左边切入,突然不知道什么原因开到车前突然减速,我看自动驾驶系统能不能做出正常反映。脑子中想象这个场景,怎么描述出来,怎么让仿真的环境懂你的描述?总不能画出来。我们设计了一个计算机语言,通过一个形式化的语言,通过编程的方式把各种各样的场景编程出来,再加上编译器,在中间的图里面所描述的从左边切入在前面突然减速,通过计算机语言编程出来,再通过编译器渲染出来。为什么做这个事情?除了一方面要做各种场景的描述之外,此外我们还想表达怎么样来自动地做检测。做检测的目标是什么?听起来很简单,实际是比较复杂的。比如我要看我的自动驾驶系统遇见红灯会不会停下来,遇见红灯停下来这是交规里面最基本的原则。但是这是一个非常不严谨的描述,这是没有办法自动做检测的。为什么?我两公里之外看见一个红灯现在要不要停下来?三分钟之前我看见一个红灯现在要不要停下来?这些都没有在碰见红灯要停下来做一个很详细的阐述。人的语言是带大量的二义性,有各种各样的解释方式。人的语言没有办法去做自动化的非常严谨的测试,我们在这里要做什么事情?中国所有的交规变成一个逻辑公式,什么叫红灯停,红灯停的意思是当我车的距离离红灯在多少范围之内,我这个车的速度应该从正的变成零,而当灯从红灯变成绿灯的时候,车的速度从零变成正的。这是一个严谨的逻辑公式表达,把所有的交规、想检测的目标都严谨地表达下来,你才有可能进行50万辆车的测试,每个测试都要进行算法的测试,都是一个自动化的过程。
随之而来的,有了语言,有了环境之外,我们还有场景库,这个场景库里面有大量的场景,能够对这些数据库进行标注,进行处理,进行存储,进行提取等等各种各样的操作。仿真的过程很简单介绍到这里,它是整个开源项目其中的一个项目,我们现在在开放原子开源基金会下成立元翱智能工作组,这个工作组由李克强等几位院士来当技术指导委员的成员,我们在这里希望打造一个开源的基础软件平台,使能未来的只能出行和机器人应用,能够成为产学研大家互相合作的基础公共平台。
我们都知道从IT行业的发展来看,开源是一个非常重要的促进整个行业发展的基础。自动驾驶可以说是软件里面最复杂的一个软件系统,从代码量就可以看出来,比如波音787有大概一千万行代码,Windows大概有四千万行代码,Facebook有六千万行代码,现在车里面有一亿行代码,未来自动驾驶有五亿行代码。可以说自动驾驶软件系统就是人类所创造的最复杂的一个软件系统,那在这个之上如果在上面做开发肯定不能靠一两个明星团队或者一两个大企业来进行,需要像安卓这样非常完善的开源平台来进行。我们在这个平台上面已经有了很多开源项目的加入,包括电动滑板底盘的设计,包括车载操作系统中间件,也包括数据大模型的操作系统,在这里可以说构建了从底层、滑板平台到车规级芯片接口,包括仿真平台,再往上车载操作系统、中间件以及基于软件2.0,基于数据驱动的大模型平台。整个覆盖了很完善的自动驾驶基础架构,希望各位专家还有各位行业从业人员能够一起到开源的社区来,我们一起来做贡献。
今天的报告就到这里,非常感谢大家!
(注:本文根据现场速记整理,未经演讲嘉宾审阅)
GIV2022|西安交通大学杨子江:自动驾驶仿真测试优势在于效率高、一致性的介绍就聊到这里吧,感谢你花时间阅读,更多关于GIV2022|西安交通大学杨子江:自动驾驶仿真测试优势在于效率高、一致性的信息别忘了在本站进行查找哦。路援帮往后会继续推荐GIV2022|西安交通大学杨子江:自动驾驶仿真测试优势在于效率高、一致性相关内容。