就目前的自动驾驶发展情况来看,功能产品解决方案应该从特定区域的低速自动驾驶产品做起,而后逐步发展到高速公路、环路等结构化道路并至直复杂城市工况下自动驾驶产品,这些产品形态应是融入到整车功能/外观等设计的前装产品,而非简单后装集成;那么该如何进行自动驾驶算法研究呢?
本文将介绍北京智行者公司的自动驾驶算法开发思路。
自动驾驶算法开发思路
智行者在关键技术突破的基础上,将重点开发专用于自动驾驶的仿真/研发平台产品,来帮助客户提高研究效率和质量。此外,将尝试建立一套包含执行器及自动驾驶算法开发的生态平台来整合多方资源,且此平台应该是开源和互相促进的,从而提高自动驾驶算法整体开发质量。并做了一个2016-2020年的5年规划。
首先介绍其自动驾驶算法体系。
借鉴驾驶员行为研究中常用的**Strategic level(战略层)、Tactical level(战术层)及Operational level(执行层)**三层架构来描述算法研究体系。通常来讲,战略是顶层,包括目标及路径方向;战术是支撑,包括具体行动、路径选择等;而执行是落地,即具体实现选择的路径。既然自动驾驶最高境界是能够模拟优秀驾驶员的驾驶行为,那么显然也可以用这三层结构作为自动驾驶算法的研究体系。
具体说来:在Strategic level上,我们关心的仍是自动驾驶亘古不变的三个问题:Where am I?(我在哪) Where will I go?(我去哪) How to go?(怎么去)。“我在哪”可以广义上引申为当前处于何种状态,这种状态不仅包括地理位置,还包括运动参数等状态;同样,“我去哪”可以引申为欲之达到的状态,而“怎么去”则是采用方法、使用工具等。
在此宏伟战略指导下,我们将自动驾驶研究中老生常谈的**Percepiton(感知)、Decision(决策)及Control(控制)**视为Tactical level的三个组成部分;但Strategic及Tactical两层中元素并非一一对应,而可能是一对多或多对一的关系;在Operational level中,就是各项关键技术,如基于视觉、雷达的目标识别问题、全局及局部路径搜索问题、汽车动力学控制等。
可以看出,**实际上我们绝大部分时间和精力都在同各项Operational level的具体技术打交道,并自然认为如各项子技术的指标(如识别率)能够达到100%,则整体系统指标也就达到100%,这种研究思路行得通吗?**借用威灵顿将军名言:“要打胜仗就得靠优秀的战略,但一位优秀的将军不会将军事战略建立在全靠优秀士兵基础上”。这句话我们理解有两层含义:一是客观上不是所有士兵都是优秀的,对应于自动驾驶,可翻译为传感器永远是不完美的、决策是会有失误的、控制是有误差的等等,这就需要从战略层进行融合、互补;二是一个优秀战略战术需要根据士兵、装备情况而灵活机动,如小米加步枪则应选择游击战,而飞机坦克则可进行正面交锋。对应于自动驾驶,可简单理解为在不同的道路场景下需要调整传感器或算法方案(如特定区域下低速行驶只需要差分GPS、单目及超声波组合,高速公路可采用单目及毫米波,而在复杂交通环境(如宇宙中心五道口)的话激光雷达则必不可少)。
总结两点:一是任何传感器组合方案都应该视时、视情而变,需要综合考虑用户需求、成本及场景复杂程度;二是很期待既能包打天下性价比又很高的传感器组合出现,但相对于性价比,功能稳定实现显然更重要。
其次,想讨论下Perception、Decision及Control三者的地位和关系。
很多研究机构介绍其自动驾驶研究水平时,通常是展示其视觉或雷达识别效果,并由此得出结论:基于小数点后4个9的识别率,最远距离能达100米,于是自动驾驶系统完全能达到上路水平。对此,不免生疑:难道驾驶员水平高低可以用其视力水平来衡量么?
答案显然是否定的,否则交管局和驾校也不乐意啊。为什么会造成这种现象呢?有两种可能性:一是驾驶水平高低不好衡量,也就是没有公认客观的标准,但画框子显然就好解释多了,即标准很统一,无异议;第二就是我们觉得最郁闷的一点,许多研究者中眼里自动驾驶研究天然就等同于感知研究,正如同下图所示,即认为应该以感知为中心,决策控制用简单方法就可以搞定,无需大量研究。
暂且无论第二种认识的对错,我们先以人工驾驶为例说明。通常我们称驾驶技术好的为老司机,技术差的为新司机,显然老司机同新司机的最大差别并不是视力或其它感知方面差距,而在于老司机拥有更丰富驾驶经验、处理突发状况能力及手脚协调能力等,而视力只是成为驾驶员基本入门条件。相信理解了这一点,那么我们就绝不会使用简单识别率指标来衡量自动驾驶算法水平高低,感知、决策及控制研究都同等重要,只不多各家研究重点不同而已;那么到底该如何准确地评价自动驾驶水平高低,接下来我们将会专门分析。
**在研究中,我们认为应将自动驾驶研究对象充分融入到整个“人-车-路”交通系统下进行分析,而非只考虑单车功能实现,这是一个非常重要的思想,**也是我们研究的根本出发点。试想一下,如果一辆自动驾驶车辆只考虑自身功能实现,没有同其它交通参与者形成良性互动,即无法理解其它目标驾驶行为同时也时常做出旁车无法理解的非常规动作,那么它显然不能称之为一辆高水平的自动驾驶车辆。
对于如何将“人-车-路”系统融入至自动驾驶算法开发中,我们认为有必要首先回答以下六个问题。
同时,这六个问题也对应智行者确定的如图所示的六个关键研究方向。
1、驾驶场景大数据采集与应用
驾驶场景数据采集是基于车辆、传感器等硬件平台,通过对实际交通环境数据进行采集并后处理,来分析潜在的驾驶行为,并用于进行算法优化和评估。
举个栗子说明:某世界知名主机厂的ACC在欧洲和北美市场受到消费者的好评,但在中国却处境尴尬,问卷调查反映:该ACC设置跟车距离保守的话将造成邻车频繁切入,而激进的话则驾驶员会造成心理不适,这说明该ACC难以适应复杂中国道路环境和驾驶员行为习惯,因此需要在中国进行交通数据采集来优化其关键参数。
说到这里,便出现一个很有意思的词—“复杂环境”,可以大胆地说,“复杂环境”绝对是环境感知类硕博士论文题目中出现的高频词,国内外均是如此。那么究竟什么交通环境才能称为“复杂”?我们认为有两点:一是目标数量、种类多,即人车混杂、分布稠密,这是通常目标识别中所谓的“复杂环境”;第二是目标行为复杂,及行为多变、难以预测,例如邻车突然加塞(merging),电动自行车等违规行驶等。显然,当前对第二个复杂点研究和关注较少,而其基本研究方法首先就需要真实交通场景的大数据作为支撑。
2、驾驶能量场及其应用
记得数年前某位国外知名主机厂高管曾说过,自动驾驶对他们来说就是分分钟的事情,因为在他看来纵向控制就是“ACC+CC+AEB”,集成现有成熟技术就可以了。对此,我们只能说:自动驾驶跟ADAS真的半毛钱关系都没有,如果有,最多也就半毛钱。
为什么不赞成用ADAS集成思路来进行自动驾驶算法开发,原因有二:
**一是ADAS本身存在一定弊病:**还是以ACC/CC/AEB为例,三者之间存在复杂、繁琐的IF-THEN切换规则,同时现实交通的复杂性又导致切换边界交叉区域重叠,极易造成混乱;另外三者控制指标还不相同,体系混乱。在这么混乱体系下自动驾驶算法还是最好别添乱了。
二是ADAS设计理念同人类驾驶理念大相径庭。任何一个驾驶教练都不会教授学员去如何稳定跟随前车,或如何保持恒定车速。驾驶员在Car Following时通常会与前车保持一定安全界限,但安全界限不是安全距离,它难以用距离、THW或TTC等具体指标来进行描述;在Free Driving驾驶员操控动机更加复杂,车速会受到驾驶员心理、道路质量、天气等多方面影响,没有一个驾驶员会奇怪地保持一个速度行驶。
归根结底以上讨论的本质为决策中驾驶态势形式化(或认知形式化)的问题。在这种情况下,借鉴拟人化驾驶思路,我们构建一种基于“能量场”的人、车、路驾驶态势分析方法来为后续决策、控制算法提供维度固定、准确可靠的认知形式化基础。
基于“能量场”进行决策控制基本原理可描述为:如下图,在驾驶过程中,任何干扰因素(车辆、行人、道路、交通标志甚至天气)都将直接或间接的影响驾驶动作,如这些因素以某种能量进行描述的话,那么理想驾驶状态应遵循这些能量的某种平衡。该方法关键问题在于能量场模型建立、平衡态模型就工程化问题,后续将进行详细讨论。
3、基于深度学习的自动驾驶决策控制研究
鉴于深度学习在图像识别领域取得的巨大成功,结合驾驶大数据,它或许能真正革新传统Rule-based决策方法,甚至于改变整套自动驾驶算法体系。
我们首先开展工作是验证端到端的模型的合理性和有效性,基本思路源于nvidia的这张图,即CNN训练输入端为相机图像,输出端则是执行器参数。
鉴于对此方案效果仍无十足把握,我们选择采用仿真方式进行验证,以提高效率和避免实车实验风险。仿真平台采用Vrep+Matlab,在Vrep中我们搭建了前后安装两个单目相机的蓝色小车,场景主要包括车道线、固定障碍物及动态随机干扰车辆,数据采集通过人工遥控方式进行。经过多人次、多圈的数据采集及在Matlab中进行网络训练,我们最终在同样环境下进行测试,但遗憾的是效果远低于预期,更是远比不上传统方法。原因可能是多方面的,如模型合理性、训练数据量、网络结构等,同时这也告诉我们一个道理:即使DL是真正解决之道,但也不要妄想能够很快的达到甚至超过传统方法水平,还需要很长路要走。
4、执行器性能评价体系
相信IT界同行们搞自动驾驶一开始都有一个疑惑:为什么主机厂搞自动驾驶还要改车,难道没有底层执行器协议么?存在这个疑问同志需要先脑补下EPS/EVB/ESP等执行器基本原理和国内发展现状,同时还需要知道汽车界有一个比主机厂还牛的叫博世的供应商,他就是不给开放你又怎么的。在这种凄惨背景下好学的中国自动驾驶研究者们被活活逼成执行器改装大师,稍不注意还形成了所谓底层核心技术。
这种条件下开发自动驾驶弊病是明显的:由于执行器改装可靠性和一致性较差,即使上层算法再好,那也难以将其进行大规模复制,而单车单调显然将造成巨大的人力和效率的损失。许多算法研究都提出执行器自适应的方法,但目前终归还是处于学术研究阶段。不妨换一种思路:如果上层算法开发者能够提出与其算法相关的执行器关键指标及其范围,同时该指标能采用简单方式进行可靠测量,那么就可以将这部分工作转嫁到执行器供应商中,从而在理论上应可实现算法规模化复制。实际上这就是执行器性能评价体系建立的问题,也是智行者当前面临实际项目正在攻关的一个方向。
5、车辆“智商”评价指标及体系
车辆“智商”是自动驾驶水平高低的表述,它的重要意义在于:
一是其为算法开发的重要导向。例如,对于无人车比赛来说同等情况下跑得快的肯定比跑得慢分数高,这就使得各支车队将把速度提升作为重要研究内容。
二是它是自动驾驶车辆颁发“运营合格证”基本评测依据。这一点是算法开发引导的重要抓手和支撑,这里面蕴含着巨大的商业机会,原因你懂的。
回到现实中自动驾驶开发,我们认为当前仍缺乏一套合理且易于操作的评测体系。跑的快就一定代表自动驾驶水平高吗?当然未必,回想一下我们如果想由衷赞美领导驾驶水平高的话,我们通常会说:真是又快、又稳、还省油,这不经意间我们道出汽车行驶三大终极评价指标—安全、舒适、节能。如此说来,跑得快既不利于安全,又不感到舒适,更谈不上节能,为何却成为大家公认评价指标呢?作为一个老参赛队员我认为原因有二:一是比赛终归是比赛,总得有个简单、粗暴、好打分的指标,太复杂反而有异议;二是跑得快一定程度上证明算法稳定可靠,是一种极限能力的体现,就如同最高车速、最大爬坡度是汽车性能评价指标一样。
因此,虽然当前各家算法“智商”高低都是依据其核心人员的自我标准来估计,但相信未来车辆“智商”评价方法应集合多家研究机构共同智慧,形成有益的标准体系,并应有三方或权威机构来进行组织、实施和认证。
6、基于ROS/VREP开发及仿真平台建设
作为一个长期参与调车和比赛工程师来说,虽然以前不知道仿真究竟有多么强大,但着实觉得基于实车进行算法调试实在太Low、太低效了,当然绝不是说实车调试不对,而是如何有效的提高效率和算法质量。
我们做梦都希望能够拥有这样一个自动驾驶集成开发平台:虚拟仿真同实车调试应是无缝的,应是召之即来、来之能用、用之能战,不存在移植这一说;同时仿真平台的传感器、道路及车辆模型等应最大程度接近于真实。
基于以上考虑,我们选择ROS/VREP组合来实现。ROS最近在自动驾驶圈里很火,很多大牛写文章推荐,连BMW都开始凑热闹。我们采用ROS初衷很朴实:开源免费、同VREP有现成接口,同时该平台能够模块化组织,能够为下一步开源打下基础;选择VREP原因也很朴实:开源免费、同ROS有现成接口,当然其强大功能也值得一试(例如包括Velodyne等多种激光雷达传感器)。
总得来说,我们深知要搭建一套实用、多场景的仿真系统见效慢、难度大,但在饱受实车调试之苦后,我们也将继续坚持。
以上就是这六项技术的总体阐述,下面将就其中第1项:驾驶场景大数据采集与应用进行专题介绍,并利用同Daimler及上汽实际合作项目进行举例。
驾驶场景大数据采集与应用
1、研究动机及目标
正如同人类对大脑运行机理认识之肤浅一样,自动驾驶研究者们对人类驾驶行为机理认知及建模也是束手无策。这直接逼得小伙伴们纷纷将希望寄托于采用深度学习来模拟人类驾驶行为,正如此前炒得火热的George Hotz公开的源码一样,索性抛弃所谓行为机理研究,直接端到端一凑,黑匣子加大数据使劲训练,立马就可以上路,搞得传统研究方法貌似不再具有研究价值。
冷静!毕竟我们目前没有复现出,也没有看到国内有机构复现出该端到端方法的有效性。即使能够拿出吃奶的劲复现出,且不说效果如何,还有一大堆烂摊子需要解决:端到端外网络输入是否还有其它选择、网络设计复杂程度能否降低、big data究竟要多big才算big、现实场景超出训练范围如何处理以及如何处理与传统规则方法的关系等。
正如在上文中说到:即使DL是真正解决之道,但也不要妄想能够很快的达到甚至超过传统方法水平,还需要很长路要走。所以奉劝在微信群里歇斯底里膜拜以及认为已经找到朝圣之路的童子们需要冷静、理性地对待新技术:自动驾驶复杂程度注定了不可能有一种技术包打天下,再牛逼的技术充其量也只是解决其中一个小小的分支;自动驾驶技术行业不同于IT等行业,安全底线和苛刻成本要求注定其只有选择最保守的升级模式,操作系统死机了就重启这种“绝招”是绝对不允许在汽车上出现的。
回归到讨论中来,要研究驾驶行为,首先需要回答以下几个问题:
什么是驾驶行为?
为什么要研究驾驶行为,研究什么内容?
如何研究,预期目标是什么?
1)什么是驾驶行为?
“驾驶行为”同“复杂环境”一样都属于神奇的词语,无论怎么定义别人都可以挑出毛病,而且都很有道理。在笔者博士论文研究时还专门调研了国外同行怎么理解这个词,最终发现表述也是五花八门,并无权威定义,例如可常见以下关键词Driver behavior,Driver decision, Driving event及Driver intention等混用。
在这里我们没有必要纠结该如何给驾驶行为下一个准确的定义,暂时采用一个能用于解决实际问题的定义,这里厚脸皮的截取笔者博士论文中一段论述:
注意,以上研究实际上是智能车如何理解其它车辆目标的行为,而非本车驾驶行为。我们需要换个角度思考,其它车辆的驾驶行为也正是智能车所要学习的对象,而不仅仅是学习本车驾驶员行为。
2)为什么要研究驾驶行为,研究什么内容?
虽然驾驶行为研究重要性能够得到广泛认可,但在实际开发中却有意无意的被忽略,某些时候甚至陷入认识误区。以换道行为举例,在某些公开自动驾驶演示数据统计中,经常把换道次数作为一项重要参考指标进行宣传,且无论是开发者还是第三方都认可一个观点:换道次数越多则证明自动驾驶功能越好。
但实际交通情况下并非换道次数越多越好,某些不文明的换道还经常上朋友圈亮相。因此,自动驾驶行为好不好要看其在特定场景下是否合理,而非其功能有多么复杂,或复杂行为出现频次,就好比歌手不恰当的炫技将会使得听众狂嘘,全程飙高音也证明不了歌唱水平高一样。
那么如何理解一个换道行为是否合理?这里首先从学术研究上捋一捋换道行为全过程:
换道动机产生:即此场景下为什么要换道,是前方十字路口左转需要换道(mandatorylane-changing),还是嫌弃前车龟速,抑或前面是个油罐车,得赶紧离它远远的(free lane-changing)。总之,得有一个合理的作案动机。
换道可行性:mandatory lane-changing比较复杂,还需要分析感兴趣目标行为,例如它是否允许你加塞;free lane-changing比较简单,分析目标车辆运动学关系即可。
换道执行:换道执行也分为三六九等,例如可按正常方式进行,也可加速超越邻车换道,当然还有减速礼让邻车先行后再换道。合理的执行方式非常重要,例如你总不能在邻车让你加塞的情况下还慢悠悠地换过去吧,这时候最佳策略是:麻溜地赶紧换过去,要不过这个村没这个店了。
实际上上述换道过程体现的就是一个真实自然驾驶人的思考和操作的过程。推而广之,任何行为都分解为:动机、可行性分析及执行三个子模块,但当下对动机研究却少之又少,从而出现前述单纯以换道次数作为评价指标的现象,希望以后类似演示或比赛中能够公布一些关键行为的支持数据和逻辑来证明其合理性,或者通过主观问卷调查也可以,那样至少能够体现出我们对于自动驾驶认识及开发的深度和专业性。
具体到驾驶行为如何确定,可由一句话归纳:通过对地图、外界命令及道路交通状态综合判断来确定自动驾驶行为。这句话包括两层含义:一是地图及外界命令可确定驾驶行为,例如地图告诉系统前方100米十字路口要左转,则当前不在左转道的话则要尽快左换道,这属于命令驱动行为,不在本研究范围内;另一种是行为由驾驶员及道路状态所驱动,如驾驶员想寻求速度优势,或远离前方危险车辆等,这是本主题所研究对象。
除了动机研究外,驾驶行为研究还包括目标行为预测研究:如在戴姆勒Gavrila教授论文“ Will the Pedestrian Cross? AStudy on Pedestrian Path Prediction”中,正是在行人识别基础上来预测该行人是否有横穿马路的行为趋势,从而指导ADAS或自动驾驶做出合理的决策。由此可见,目标行为预测是多么重要,从另一个角度来讲这实际上是一个多目标体运动博弈问题,当然这就扯的更远了。
3)如何研究,预期目标是什么?
前面已说到,DL或许是一个很好的思路和方法,但短期内我们还是想找一些更具清晰数学模型,更简洁快速的方法。基于清华大学同戴姆勒等车企合作项目基础,我们认为驾驶场景大数据采集是一个不错的方法;当前国内许多主机厂也认可了这种方法,例如智行者科技同上汽当前正在开展的针对于自动驾驶的数据采集项目。
驾驶场景大数据采集基于车辆、传感器等硬件平台,通过对实际交通环境数据进行采集并后处理,来分析潜在的驾驶行为,并用于进行ADAS及自动驾驶算法优化和评估。通过数据采集和分析,建立基于实际交通环境的场景库。基于该场景库,我们不仅希望在具体功能开发过程中提出统计意义上的指导,避免关键参数主观臆断;同时希望建立仿真模型库,并提供用户自动驾驶算法接口,将算法结果同实际数据进行定量分析,继而提出改进意见。
最后用下面图片来总结驾驶场景大数据研究动机及预期目标。
2、研究思路
下图是系统整体研究思路,首先通过数据采集及后处理构建场景库;而后基于该场景库对自动驾驶关键参数进行统计分析,并用于指导功能开发;最后依托于场景库构建虚拟仿真平台,并利用此平台对自动控制算法效果同实际驾驶数据进行对比,从而评价算法性能。以下分别对三个部分进行介绍:
数据采集及后处理
数据采集主要涉及传感器、道路及驾驶员等因素,以戴姆勒合作项目为案例进行分析。在该项目中,车辆平台选用奔驰S级轿车,并开放相关底层CAN协议;采用Velodyne 64线激光为主要数据采集设备,同时车顶布置四台相机进行图像采集;此外车辆配置一台双目进行驾驶员面部表情检测,数据采集处理器和存储采用工控机进行。
驾驶员选择相对严格,首先是对收入和职业有一定要求,即要具有潜在购买奔驰车的能力,其次是需要参考现有奔驰车主的一个大概年龄和性别分布来进行确定。一句话,驾驶选择同项目研究目的紧密结合,不是随便找两个司机就OK,从这一点上可以看出德企项目研究相当严谨和有针对性。
在采集道路选择上同样也尽可能的全面。如下图所示,确定了单程60多公里的采集路线:包括高速、环路及城市复杂道路等多种交通场景,同时还要在交通高峰期和非高峰期分别采集;此外必须风雨无阻,越是下雨下雪越好:记得数据采集是差不多已经是冬天了,突然有一天下雪,我还以为可以休息一天,哪知戴姆勒项目的中国同事却异常兴奋,说终于有特殊天气了,今天要多记点数据,其认真精神真是令人汗颜。
下图是戴姆勒项目总结的从三个维度上去考察驾驶行为:驾驶员、车辆及道路交通情况。是不是有种似曾相识的感觉呢,在上文中我们提到,自动驾驶研究必须考虑“人-车-路”相互关系及影响,而非将三者孤立看待,这同基于这三个维度的驾驶行为分析有很大相似之处。在下文中将重点分析各个维度对驾驶行为的影响及采用的基本分析方法。
回顾一下,这一部分主要介绍了用于驾驶行为研究的场景大数据采集与分析,重点分析了驾驶行为基本概念、研究动机及意义,并就数据采集及应用思路进行了介绍。
在下一部分中将就其中核心内容:数据后处理及场景库建立、统计分析指导及虚拟场景建模进行逐一分析。
1、数据采集与后处理
上文已对数据采集平台、传感器、交通环境及驾驶员等进行了介绍,在戴姆勒平台上,一天的原始数据采集量约为1T左右,50天就有近50T的数据了。如此“海量”的数据中如何提取有用的信息呢?如果将数据分析过程视为淘金的话,首先需要进行洗矿,即通过数据后处理来初步处理原始数据。
数据后处理的主要目的如下:
典型场景标记:对于典型驾驶场景(如跟车、换道等),国内外数据分析通常采用人工标记手段进行,理论上虽然可以基于传感器数据进行自动分析,但考虑到现实场景的复杂性及处理精度,建议采用人工标记方法;
参数自动计算:在场景标记基础上,基于传感器数据对感兴趣目标进行分析,如跟车场景中前车距离、相对速度、THW及TTC等关键参数;
场景数据库:对于各种场景库及其对应参数,需要开发数据库系统进行管理,系统应具备局部条件查询、导入导出等基本功能。
针对以上三个目的,我们开发了如下图所示的三个软件进行处理:TSLS,TDPPS及TDMS,以下对前两项进行介绍。
1.1 TSLS功能介绍
TSLS主要用于场景人工标记,标记内容如下图所示,主要包括:场景类型、起止时间、对应交通及驾驶员信息。这其中关键点为场景如何分类,当前场景分为6个大类,78个小类,分类依据主要基于学术研究、国际相关项目及中国实际交通道路情况。
下图为横向驾驶行为标记示例,横向行为当前分为三种具体场景:邻车切入、成功换道及换道失败。每一种场景里面又分为若干小类,如成功换道又包括换至邻车道、跨越两车道换、换至逆向车道、逆向车道换至原车道等,同样另外两种场景也包括若干小类。同时在标记过程中除了选择所属小类外,还需要具体标记场景信息,以提高参数计算精度,如需要标记周围车辆位置、车辆类型等多种属性。
在场景标记中,另一重要内容是场景起止时间标记,这涉及到各个场景的定义,具体不再赘述。
1.2 TDPPS功能介绍
TDPPS的主要功能是在场景标记基础上对其中典型参数进行计算,主要包括如下的四个步骤:数据同步、传感器融合、目标检测及数据库写入操作。显然,这其中关键步骤当然是目标检测,在戴姆勒项目中,主要采用64线激光雷达进行车辆目标识别及参数计算。
在该研究中,基于64线激光的车辆识别最远距离做到70米左右,最主要参数包括车辆距离及相对速度,参数精度评估方法为:在数据采集车及测试车辆上安装同基站差分GPS系统,以64线激光计算的目标距离和速度同差分系统推导的两车距离及速度进行对标,从而评估参数计算精度,通过多组实验验证距离和相对速度两项参数的精度均在95%以上。下面视频为车辆目标识别过程,其中左侧绿色矩形框为识别出车辆的OBB(定向包围体),右侧曲线为距离及相对速度参数曲线。
2、基于统计方法的参数指导
在ADAS或自动驾驶开发过程中,经常会涉及到一些关键参数难以确定的情况,例如:量产ACC系统通常分为三个档,用于表示激进、中等及保守三种跟车类型,用户可根据自己驾驶风格及实际体验来选择不同档位。那么这三个档位参数阈值该如何确定呢?相信这些参数及其确定方法都是各家公司的核心技术机密,但通过戴姆勒合作项目我们逐渐认识到,德国同行显然更认同通过大数据采集方式来进行典型参数分析的“笨”方法,而不是仅凭开发者或领导意志来走捷径。
由于项目合作要求,无法向大家公布具体参数类型及统计值,只能简单举例说明研究思路。下图为参数分析截图,主要采用方法有正态分析、相关性分析及T检验等,分析目标参数分布、同道路、驾驶员显著性分析及其它。
下图即为不同道路条件下跟车行为的THW分布,通过分布值将得到实际道路上应该如何设置参数阈值,以及不同道路条件下是否需要改变阈值分布(通过不同道路的显著性差别进行判断)。
下图为换道场景下自车道前车、邻车道前后车辆的距离及相对速度分布关系,这张图在自动驾驶换道行为判断上尤其有用。在上一期说到,换道过程包括动机产生、可行性分析及换道执行三部分。那么基于这些数据可以大致反映中国驾驶员的换道动机(尤其是速度动机方面),同时邻车道前后车辆行驶状态也可用于分析换道是否可行,注意:此处换道可行性并非表示运动学上是否具有碰撞风险,而是实际条件下驾驶员换道习惯,只有按这些所谓的习惯进行自动驾驶开发,才能使得车辆真正融入到正常交通流中,而不至于显得生疏和孤僻。
3、基于仿真场景的算法改进
车辆研究方向商用仿真软件很多,且各有特点:如Carsim强项是车辆动力学仿真,其传感器模型功能较弱;Prescan在ADAS研究方面优势巨大,其接近真实的道路场景模型、丰富的传感器模型能够极大节省功能仿真时间。但无论何种仿真工具,目前都仅是一种低级“工具”,即使其道路、传感器及车辆动力学模型再真实,也难以对实际交通行为进行仿真,只能在一些预设简单场景下进行测试。
本研究思路如下图,将场景库中测试场景导入仿真软件中,导入元素包括道路结构、感兴趣目标运动参数等;在虚拟场景下,将自动驾驶算法放入其中进行测试,并同场景库中真实驾驶参数进行对比;将对比参数曲线输出,从而可以得出算法评估报告,并以场景库中参数作为标准对自动驾驶算法进行迭代改进。注意,此思路是立足于所谓“优秀驾驶员“的假设基础上进行的,即假设进行数据采集的驾驶员驾驶行为是算法学习的对象。
下面两个视频是上述思路的一个展示。第一个视频是原始交通数据,其中智能车辆正在稳态跟车行驶;第二个视频是其虚拟仿真场景,其中前车和左车道邻车是按真实场景中车辆运动参数进行模拟行驶,智能车运动是由算法输入进行控制,此视频中尚未展示跟车对比曲线,但在实际研究过程中,正是通过关键参数的曲线对比来调节自动驾驶算法参数,尽量使其同实际驾驶行为无限逼近。
视频一:
https://v.qq.com/x/page/v13087z4mo8.html
视频二:
https://v.qq.com/x/page/q1308rv1afb.html
以上就是这一期的全部内容,简单回顾:在数据采集基础上,首先进行数据后处理来建立典型驾驶行为场景库;其次,通过场景库数据统计分析,来得出关键参数的实际分布情况,并用其指导实际算法开发;最后,将场景库中场景还原至仿真环境中,从而进行实际驾驶数据同自动控制算法的对比,从而进一步改进算法,提高算法在实际交通环境中的适应性。
驾驶行为研究是决策算法的灵魂所在,也是当前复杂环境下自动驾驶研究面临的最大挑战,可以毫不夸张的说它的成败直接决定了自动驾驶水平到底是属于“新司机”水平还是“老司机”水平;但当前对驾驶行为机理研究尚不充分,本文所述方法也只是摸着石头过河,还需要更多研究者共同参与研究!
http://www.360doc.com/content/19/0804/12/30375878_852907453.shtml