“评测NI的无人驾驶测试方案”在后台获得了一些业内专业人士的踊跃交流和互动,师子小分队成员们都感觉非常荣幸,决定百尺竿头更进一步,把HIL的基本原理和无人驾驶领域的相关测试技术结合起来,做进一步系统性介绍,希望大家能够喜欢~
01、无人驾驶到底是个啥?
这个问题好像挺尴尬的,“无人驾驶”就是机器代替人开车嘛。人开车的时候,要用耳朵听、眼睛看,做出判断,去控制方向盘、油门刹车,从而在遵守交通法规的前提下,到达目的地。无人驾驶也是完全一样,只不过控制车辆的是一个“控制器”,这个控制器要通过传感器去观察路况和周围环境,通过自己的软件算法,也去控制油门、刹车、方向盘等操控设备,从而在遵守交通法规的前提下,到达目的地。
美帝国主义对无人驾驶有级别分类,从L1到L5,“L”后面的数字越大,说明无人驾驶做得越好、越强、越完善,大家可以百度查一下。
“ADAS”全称是“Advncd Driver Assistant System”,是高级辅助驾驶的意思;“AD”全称是“Autonomous Driving”,它才是无人驾驶的意思。但是,目前行业环境下,这种咬文嚼字意义不大,因为它们都是指智能驾驶,所以大家普遍统称它们为“ADAS无人驾驶”。
ADAS控制器是无人驾驶的决策中枢,它也是一个单片机,但是性能非常强大,特别是图像图像处理方面。多数汽车芯片供应商都发布了无人驾驶相关的处理芯片,比如飞思卡尔、瑞萨、mobileye等公司,当然,在这个领域实力最为强大的,还数美国的英伟达(当然,Mobileye也不差)。
除了芯片这个层面之外,还有一些公司会使用上面那些厂商的芯片,做成商品级的ADAS控制器,拿来卖,比如博世、电装等。
除了无人驾驶芯片和ADAS控制器之外,还有一些公司在搞ADAS的算法开发,它们可能是买的ADAS控制器,然后自己做ADAS软件算法,下载到ADAS控制器里面去,卖给车企,比如百度、华为、博世等。
当然,也有卖ADAS开源算法的,但是,这个算法到底行不行,是最新的算法代码还是一两年前的版本,这个不太好判断,估计最新的源码应该是不卖的吧。
除此之外,ADAS领域还有一些传感器供应商,它们供应ADAS系统的眼睛和耳朵,负责“眼光六路耳听八方”,比如摄像头、雷达、激光雷达等等。
还有一些相关的配套厂商,比如提供5G传输的,提供图像LVDS传输的等等。
当然,还有一些是做ADAS系统测试的,这个领域当前也是相当火,这也是本篇文章的重点所在。
02、ADAS测试的基本原理
ADAS测试也是
hil测试的一种,我们先来看看ADAS系统的构成,然后再分析一下如何制定测试方案。
摄像头有带处理器的,可以先预处理一下,然后把处理后的信息发给ADAS控制器,也有不带处理器的,把采集到的原始信号全部发给ADAS控制器。它们的区别,大致就相当于数字传感器和模拟传感器的区别,谁优谁劣不好说,但是总体而言,带处理能力的摄像头,会减轻ADAS算法的代码量,因为它会承担一部分处理任务,这就是一个分工的事情(但是,如何分工,分多少,行业内没有标准)。如果摄像头处理得比较少或者几乎不处理,可以采用LVDS编码传输信息(传输速度高),如果摄像头处理得多一些,可以采用以太网传输处理后的信息,如果摄像头内部的处理器干了相当大比例的活,甚至可以使用CAN,把处理后的信息传递给ADAS控制器。
2.1 闭环测试
我们用HIL测试的基本原理来剖析一下上面那个“ADAS系统基本构成图”。ADAS控制器发出的“转向、加减速”等信息,按道理,如果想测得比较逼真,是需要一个场景模型的,这个“场景模型”可以通过“积分”等算法,知晓车辆在场景里的位置,而我们能够在场景显示界面里看到车的动画效果,栩栩如生,这就叫“闭环测试”。
但是,这种情况下,摄像头、雷达的信息,是不可能再通过“回放”的方式去输入给ADAS控制器了,因为所谓“闭环”,它的本质意义就是,“第二类整车模型”的处理结果,要反馈输入给被测对象,而这个“处理结果”,当然包括车辆所处的“场景视野”、“摄像头信息”,此种情况下,摄像头信息只能来自这个闭环的“场景模型”,这个“场景模型”,一般就是指CarMaker、PreScan一类软件。
场景软件的场景,一般都是怎么送给ADAS系统的呢?看一下下面这个图:
这就是一些厂家做的ADAS测试方案,叫“摄像头在环”,其“虚实结合”的切割方法如下图所示(→→HIL27讲,零基础教程,从根本原理上探讨HIL的切割方法,师子一号一直搞不懂为什么叫这么名字,不就是形成了一个闭环吗?这样的闭环场景模型,也几乎没有人工控制的接口了):
他们把CarMaker的场景动画播放在了一个屏幕上,然后用摄像头去拍摄这个屏幕,假装自己就在乡野公路上快乐地驰骋,路上根本没有其他车,或者虽然有,但是很少而且都特别规矩。
我们先不去评价这种场景软件(场景软件=场景模型,朋友们后续可以这么理解)生成的场景是否实用、能否足够深度地考察ADAS控制器,单就这个投影屏幕而言,它对场景模型生成的场景的还原度,是值得商榷的。
比如,它只能使用摄像头,雷达什么的就别想了,你用雷达对着投影幕布,测出来的是到屏幕的距离,而绝非到屏幕中“前车”的距离。
受限于显示技术,如果场景软件中,对面会车来了一辆开着远光灯的宝马,那这个屏幕也是几乎不可能仿得出来的。
此外,显示器毕竟也是一个物体,即使“场景”非常理想,光照适中、没有太亮和太暗的部分、天气晴朗、车况简单,那么,你用摄像头拍出来的,也是像蒙上了一层东西。“这层东西”当然需要在ADAS算法中把它处理掉,然后在实车上,是不存在“这层东西”的,理论和实际脱节了一丢丢哦(当然,可能也有那种非常专业的显示设备,人眼根本看不出来是屏幕还是真实世界,师子小分队的成员们都没用见到过,不好评论)……
后来,随着技术的进步,摄像头也变得强大了,内部又可以划分为摄像头和摄像头ECU了(前面我们说的带处理能力的摄像头,指的就是这个“摄像头ECU”处理的),如果能跳过这个效果不太好的投影屏拍摄环节,直接把场景软件生成的图像图像数据(雷达数据也类似)发给摄像头ECU,不是更好吗?
这个是可行的,因为摄像头这个环节,是标准化的,它向摄像头ECU发送信息,无论是协议数据格式还是插件接口类型,都是标准化的,所以场景软件完全可以直接造出这种数据格式,直接送给摄像头ECU,这种情况下的HIL测试系统,切割点又变化了。如上图所示,是从摄像头内部的连接线处进行切割,被有些公司成为“摄像头ECU在环”(搞不懂这名字到底是怎么起的)。
如果我们想更进一步,把摄像头ECU也跳过,直接按照摄像头ECU和ADAS控制器之间的交互协议,通过场景软件把信息发给ADAS控制器,可以吗?这个要看情况,如果摄像头ECU没有做逻辑算法处理,直接把原始数据编码成LVDS或者以太网信号,那是可以的,比如我们用LVDS板卡,把场景生成的信息流转换成ADAS控制器可以接收的类型,就可以了。但是,如果摄像头ECU承担了一定的处理任务,就很难再跳过摄像头ECU了,因为多数情况下,你并不知道它承担了多少,干了哪些活,除非摄像头ECU也是场景软件商家提供的,或者等有一天,摄像头ECU干的活也标准化了,才可能行。
当我们把摄像头跳过去之后,“拍摄屏幕”所导致的弊端,也就不存在了,这个时候,这个方案的优劣,就取决于场景模型的质量了。其实这个也没太多可说的,场景模型的图像,非常理想化,有可能无法检查出潜在的功能缺陷,而且可能难以适应中国复杂的国情和路况,所以,这种测试方法,像有些朋友们说的那样,适合实验室理论研究,以及工程上的粗略初步测试,不能直接上车。
我们发现个问题哈,摄像头被跳过了,但是如果摄像头出问题了咋办?这个也好办,把摄像头拎出来单独测试就好了,很多企业就是这么干的,只测摄像头,环节也少,效果也直观,就像师子一号在之前介绍BMS的HIL测试那样,有些企业,会单独把采集器拎出来做HIL测试。
2.2 开环测试
开环测试并不像它的名字给人的感觉那么低级,相反,在HIL测试领域,因为开环测试具有极大的灵活性,并且对设备的要求相对较低,所以它算是一种更高级更高效的做法,对工程师的要求更高。
关于开环测试,我们可以用VCU的HIL测试来做个比方,如下图所示,这是个闭环的:
车辆模型根据VCU发出来的“扭矩需求值”,通过各种计算公式,得出车速,把车速再反馈给VCU。VCU根据车速和踏板深度,查表得出“扭矩需求值”,又发给车辆模型。其中“踏板深度”是个软件控件,由测试员操作,测试员在软件界面上“踩下”一定深度,可以非常直观地看到车速的变化,这,就是闭环HIL测试。
但是这种“闭环”,师子一号并不推崇,因为它除了好看、直观之外,对VCU测试而言并没有太大帮助,如果要检测VCU的功能,我们只需要看“扭矩需求值=f(踏板深度,车速)”的对应关系是否准确成立就可以了,开环测试完全可以搞定,而且覆盖率更高。
所谓开环测试,我们还用上图为例,车速就不是整车模型反馈回来的了,而是我们人为制造出来的,比如上图中,我们把踏板深度设置为80%(很深了),把车速设置为20kmph,这个时候,我们用纸笔算一下,扭矩需求值大概是150Nm,所以VCU输出的期望值,就是150Nm。这个时候,如果我们不修改车速值和踏板深度,VCU输出的一直是150Nm,给人的感觉不够逼真,油门踩了那么深了,车速就是上不去,但是,这没关系,对验证VCU的功能而言,已经够了(除非VCU具有车速异常侦测功能,比如踩下踏板,车速上不去,会报错,这个时候,你就必须通过模型或者通过自动化测试工具,给它创造一个合情合理的车速哈~)。
开环测试怎么应用到ADAS测试里面呢?
首先,场景模型就不要想了,不存在的。
开环测试的设备要求很简单,方法很灵活,一般都是把实车上摄像头、雷达发给ADAS信号同步录制下来,它们之间用什么协议传输,你就要用什么协议的设备录制下来,比如用的是LVDS协议的话,可以采用德国GOEPEL公司的专用设备,然后拿到实验室回放,在同一时间坐标下,比对ADAS输出的“油门”、“刹车”、“转向”等信号就可以了,当然,也可以比对更多的信号,这样会更详细精确一些。最理想的情况,当然是ADAS输出的信号,和一个经验丰富的老司机开出来的信号完全一样咯~
开环测试存在的累积误差,比如我们通过ADAS输出的“油门”、“刹车”、“转向”等信息,发现积分积出来的轨迹,和车辆的实际轨迹有明显出入,但是这一般是不会有什么问题的,因为ADAS系统会根据误差之后的“场景”进行微调的,矫正回来,一般不会像轨迹积分展示的那样,开到沟里去的。
在开环测试的实车数据录制中,还有一些企业会把摄像头发给摄像头ECU的信号录制下来,这相当于录制的视频,然后回到实验室之后,再把视频回放给摄像头ECU,验证“摄像头ECU+ADAS控制器”的整体表现。
03、开环测试和闭环测试对比
闭环测试采用场景软件,拥有更加丰富的场景库,可以信手拈来,很方便,但是这些场景多数都是老外开发的,并不适合中国国情,而且场景软件的路况非常理想,对ADAS系统的考验很有限,所以,它们更适合做理论研究,或者企业中进行初步粗测。
开环测试采用的是实车数据,可靠性自然不在话下。开环测试的麻烦点在于,1,可能会有有较多的信号需要比对标注,工作量较大,比较灵活;2,录制不易,合适的场景不一定能录得到。关于第一个问题,业内目前普遍在探索自动化核对方法,对于第二个,则借助大数据,有望能获取更多合适的录制场景,比如借助英伟达公司建设的场景数据库,则可以在算法还未开发好的情况下,就准备提前准备好测试case。