开放空间决策规划技术:如何像人类司机一样流畅驾驶?
开放空间决策规划技术:如何像人类司机一样流畅驾驶?
经过多年的发展,移动机器人领域基本沿袭了“感知-决策规划-控制”的经典框架。这套架构解决了许多工程问题,也在算法、软件、硬件等各个层面,对一个复杂的系统进行了有效的切分。
对于智能驾驶系统来说也是如此:在没有智能驾驶辅助的情况下,人类驾驶员通过双眼感知世界,根据经验和意识思考下一步行动,然后通过控制方向盘和油门踏板,把车辆开到想去的地方。智能驾驶系统正是要在这个过程中,逐步的帮助人类简化操作和思考,为人类驾驶员降低驾驶负担,减少疲劳。
在智能驾驶系统中,决策规划的作用相当于人类大脑
为了应对不同的智能驾驶需求,决策规划技术产生出了各类方法:从经典的采样、搜索、优化,到神经网络甚至端到端。其实无论采用哪种技术方案,目的都是为了提升智能驾驶产品的最终效果与用户体验。那么,决策规划需要提供什么样的能力,才能够让智能驾驶体验更符合人类的预期?
将这个抽象的问题进行拆解,可以得到三个具体的具体的要求:
如何能让使用场景更具泛化能力,而不是被有所限制;
如何能让驾乘体验更丝滑舒适,而不是只会机械地程式化应对;
如何能让驾驶风格更个性化拟人,而不是只提供“均码”,本末倒置地必须让人去适应系统。
只有满足了以上三个要求,才能称之为一套“好用”的智能驾驶系统。大疆车载在思考和研发解决这些问题的过程中,引入了三个关键的技术思想,来定义「成行平台」的决策规划体系:
轻决策
通过对地图和结构化场景感知的“弱依赖”,提升场景泛化能力,保证任何路况下决策规划的合理性和可用性;
防御性
决策规划过程中,考虑感知的不确定性和自车决策的多可能性,管控好可预期的风险,做到真正意义上的防御性驾驶;
预期风险规划
通过驾驶风格在决策规划中的具体体现,满足不同驾驶员在路线偏好、驾驶操作时机方面的心理预期,减少差异,在保证安全的前提下提升通行效率。
接下来,我们将以智能驾驶的具体行泊场景为案例,详述以上三个重要的技术思想,在量产智能驾驶方案中的实践。这也是在「成行平台」上,独具特色的开放空间决策规划技术(Open Space Planning 简称为OSP)。
首先,一切问题的讨论都需要围绕着ODD(Operational Design Domain,运行设计域)来展开。在智能驾驶领域,ODD定义了系统和功能的运行限制条件,例如速度范围多少、高速封闭道路还是城区开放道路、有无地图覆盖、车道线是否清晰等等。但如果条件限制过多,ODD太小,则在一段完整的驾驶旅程中,智能驾驶系统很可能频繁触及边界降级或退出,或者原本连续的ODD因为简单的问题(如压线占道、新旧车道线混合等)而断开,超出了系统应对的能力。这使得智能驾驶系统的体验大打折扣。
在传统的决策规划框架中,研发人员会根据不同的ODD定义好规则,通过行为决策-轨迹规划的方式,在对应的场景下找到对应的规则,然后调用相应的规划器生成控制轨迹。这种架构需要事先写好大量的规则,故称之为重决策方案。
重决策方案实现起来比较简单,在简单场景也算是高效。只是在需要拓展ODD,或者把旅程中不同的ODD连续起来时,就需要大量的手写规则来查缺补漏,最终大力出奇迹实现更连续的智能驾驶体验。
这样做的弊端很明显:如果遇到未学习过的场景,比如道路结构复杂特异、千奇百怪的障碍占道形式、多交通参与者的“随机”运动等等,会表现得不够智能甚至无法应对。更不用提开发者需要维护大量的if-else(判断逻辑)来做场景细分,开发测试周期和成本都很高。
举个例子,用重决策方案规划泊车,需要研发人员根据车辆与停车位之间的几何关系,手写很多倒车规则进行倒车入库,有点像驾校老师对新手司机的初级教学:在大致什么位置打方向盘,倒车到什么位置再回正……如此往复,确实能完成泊车。但遇到相对复杂的场景,比如斜列车位、狭小空间车位等,新手司机就会发现教练教的方法不好使了。
而在行车中处理加塞,重决策方案也需要根据对旁车的观察,匹配事先写好的规则(譬如是否在前方压线)来给出是否减速让行的决策。但车辆并线的场景千差万别无法穷尽,要提升重决策方案的加塞应对能力,就得无穷无尽地增加规则,不然总会出现无法应对的边缘案例。这不仅影响了功能体验,对系统资源的消耗也徒增成本。
重决策方案是通过先验的场景和规则来做行车决策规划
而「成行平台」的OSP技术,在规划中采用了轻决策的思路,不过度依赖手写先验规则,用更灵活低成本的方式,提升了系统的场景泛化能力:
同样以泊车为例,OSP技术可以根据车位周边的环境要素和车辆本身的运动学模型,通过路径搜索的方法规划出多种符合本车转向运动能力的泊车路径方案,然后选择出其中最优的方案进行泊车。这样可以做到在大大减少了代码量的情况下,还能更有效地“可见即可泊入”,也真正能够泛化通用,应对各种极限泊车场景。
对应到前述驾校教学的例子,OSP就像是熟悉车辆转向性能和位置的老司机,根据自车能力实时调整最优的泊车方案,在面对复杂车位时甚至能想象设计出人类驾驶员没有想到的路线,而不是机械地重复操作。
轻决策方案采取搜索+优化,智能选择最优泊车方式
OSP在行车场景中同样通过控制采样+搜索的方式。首先基于本车的运动学模型生成可达轨迹集合,然后再考虑道路结构、交通规则、碰撞检查、车辆交互等等因素,找出不同种类的轨迹,接着基于这些不同种类的轨迹,最后完成进一步的行为决策和轨迹规划。
这样无需遍历所有可行解,也不必完全掌握全部交通要素信息,使得在有限算力下能以较快速度找到合适的路径,即便是出现车辆横穿、逆向车流、非机动车占道等复杂情况,也能聚焦于处理真正影响行车的交通要素数据,保证整个旅程体验相对稳定和连续。
轻决策下车辆基于运动学模型生成的可达轨迹集合
由于是基于车辆的控制模型本身进行采样,OSP的搜索对于车道线、道路中心线等信息没有很强的依赖,这可以很好地支持在道路结构不清晰的情况下规划行驶轨迹。其优秀的“分类”和优化能力,也保证了车辆与其他交通参与者及周围环境互动时的安全。
这种轻决策的方式帮助车辆大大提升了智能驾驶系统的场景泛化能力,OSP技术可以让车上一套决策规划方案适用多个场景,包括没有车道线的停车场、路况复杂的城区、以及高度结构化的高速/快速路等。此外,OSP也能够比较好地应对感知的扰动或不确定性,存在如天气、拥堵、开放道路行人等外部干扰因素的情况下,也具备很强的鲁棒性。
通过轻决策的方式,能够减少依赖,低成本而快速地提升ODD的连续性,但这还算不上“好用”。所谓“好用”,是指智能驾驶系统在处理复杂动态环境时,能大致符合人类驾驶员的预期,给驾驶员提供安全舒适的感受。驾驶员对于智能驾驶系统能力的主观评价,往往不是体现在其智能程度,而是相较于自己经验的预期智能系统实际执行的情况如何。智能系统的决策规划与预期差异越小,安全感和舒适感越强。
「成行平台」所采用的的OSP技术,将防御性驾驶的概念融入到决策规划里,让决策的发展和变化更加丝滑流畅,从而无限接近人类驾驶员的预期。
防御性驾驶是一种安全驾驶的理念和技巧,旨在最大程度地保护自车和其他道路使用者的安全。它强调预防潜在的危险情况,并采取主动措施来避免事故和冲突。防御性驾驶包括以下原则和技巧:
1. 保持警觉:驾驶者应该时刻保持警觉,观察周围环境,注意其他驾驶者、行人和道路条件的变化。
2. 维持安全距离:保持与前车的安全距离,以便有足够的时间和空间来应对紧急情况,如突然刹车。
3. 遵守交通规则:遵守所有的交通规则和法规,包括限速、交通信号灯和标志。这有助于减少冲突和事故的发生。
4. 预测他人的行为:通过观察其他车辆的行驶方式和信号,尽量提前预测他们的行动,以便做出相应的反应。
5. 避免分散注意力:专心驾驶,避免分散注意力的行为,如使用手机、吃东西或与乘客聊天,以确保对道路和周围情况的集中关注。
6. 适应不同的路况:根据道路条件、天气状况和交通流量的变化,调整自己的驾驶方式和速度,确保安全驾驶。
7. 避免激进行为:避免超速、频繁换道、急刹车等激进驾驶行为,以减少事故的风险。
通过遵循这些原则和技巧,驾驶者可以提升自己的安全意识,减少事故的发生,并为其他道路使用者创造一个更安全的驾驶环境。
要实现“防御性驾驶”,智能系统仅仅遵守交通规则是不够的,更要能动态预测和应对其他交通参与者的行为。这就转化为了一个数学问题:如何计算出交通场景中各个对象的行为概率分布。这个计算结果越准确,对场景中未来发生的“事件”进行应对的能力越强。
经典的变道加塞场景中
自车会依据旁车预测轨迹做出两种不同的决策
继续以加塞场景为例,OSP可以给加塞车辆做两个概率集合:加塞进本车道和放弃加塞留在原车道。当这两个概率差异明显时,旁车的意图是很好判断的,各种规划方案都可以有效应对。但如果两个概率集合差异很小,本车和旁车实际上就进入了一种博弈状态:本车的运动趋势(减速让出空间或逼近缩小空间)会影响旁车继续加塞的概率,同时旁车也难免要尝试影响本车的决策规划——无论这个决策规划来自人类驾驶员还是智能驾驶系统。
OSP可以将旁车的多模态和自车决策的多可能性用轨迹树进行建模,根据未来的多种场景和概率,优化出合适的轨迹树进行车辆控制。
将旁车预测和自车决策对应到OSP中形成轨迹树
轨迹树和传统的多轨迹模型区别在于:从自车的规划开始到轨迹树的第一个分叉点,是有一段公用轨迹的,这段公用轨迹保存了未来进入任何一个分支(即平行宇宙)的可能性,这支持了随着时间和态势的进展,平滑过渡跳转到其他决策,给车上人员更符合预期的体验,在应对处理中更像人类。
如下图所示,通过调整旁车的加塞概率,同一轨迹树优化出来的轨迹也是不太一样的:旁车加塞概率如果变高,当前轨迹的减速会更大,反之就会变小。在这个模型里面,可以看到预测的概率被合理地考虑了进来,而非传统基于规则的if-else方式。
智能驾驶进行车道保持时遭遇加塞形成的“平行宇宙”
(上:OSP轨迹树示意 下:对应的现实场景模拟)
在旁车有加塞轨迹时,自车能够轻微减速做到提前响应;在加塞概率不断变化时,自车亦能实时调整车速做到不误刹,并且该刹也能刹住。
通过合理的轨迹树分叉和概率模型,OSP能够在当前信息不够明确时将未来不同的场景都考虑进来,在做决策规划时保留将来通往任何一个“平行宇宙”的可能性,从而实现真正的“防御性驾驶”。这也大大提升了「成行平台」的安全性和舒适性。例如路口的车道选择,行进过程中的变道决策,以及遮挡区域响应等等。
以上图三中常见的遮挡场景(一般叫鬼探头)为例,OSP防御性驾驶的应对是这样的:车辆首先会以观测到的遮挡物为参考预估盲区,再根据盲区和本车车速以及路径的相对关系,来对车速进行实时调整。
此时,以该防御性动作建模的轨迹树即面临两种可能:当盲区突然出现横穿的行人、非机动车时,本车能进行有效的刹停;而在没有出现横穿行为时,本车也能够以轻微的减速方式通过,带给符合驾驶员的安全预期。
当然,以上只是几处经常遇到的行车场景,但生活中的驾驶场景各式各样,无法穷举,如果你想了解OSP在更多行车场景的案例具体应用,欢迎在评论区留言。
在防御性的加持下,仍然存在“众口难调”的挑战:有人会觉得智能驾驶开得保守,效率上不如自己开;有人又会觉得过于激进,比较危险。用户驾驶风格实际上是非常多样化的。
面对这个问题,传统的做法是给系统提供多组固定的参数,例如手动设置跟车距离档位,来试图提供不同的“驾驶风格”,但这种量化颗粒度太粗,并不够智能。那,有没有更好的解决方案呢?
要解决这个问题,首先需要定义和理解驾驶风格。事实上,对于很多老司机而言,在驾驶时偏保守或激进,取决于多个因素:譬如是否赶时间、天气可见度状况、周围车流情况等等。不同因素会让资深的人类驾驶员司机,在不同时间和场景下会采取不同的跟车距离和变道策略。
基于这一理解,在「成行平台」的OSP中引入了预期风险规划来解决“驾驶风格”问题,即在考虑安全性的前提下,保证智能驾驶的通行效率。
保证安全并不意味着完全地保守,典型如结构化道路下业界常用的RSS模型,这个模型放到拥挤的城区道路,会让自动驾驶车辆走走停停,可用性有所降低。所以平衡安全性和通行效率需要更加智能的模型,在不同场景和环境中,智能匹配合适的数值,让安全预期和通行效率预期尽可能接近人类司机,并随着使用数据的积累不断优化。
传统的做法是,在单帧规划的轨迹上,评估与静态障碍物的距离,预测是否与其他动态交通参与者发生轨迹交汇,以此来判断碰撞风险并进行规划:
与静态障碍物的互动相对简单,但不同的“驾驶风格”中对于动态物体的碰撞风险预期是不一样的。要做好这部分的体验,并不需要在每一个单帧轨迹上追求完全不碰撞,而是增加“可约束风险”,从智能驾驶系统整体和多帧决策规划的角度来考虑,才能规划出安全行驶并符合人类驾驶预期的路线。
这样就形成了灵活的“安全阈值”,这种动态的计算方法替代了手动设置的固定参数,在不同“安全阈值”下OSP可以给出符合实际情况的灵活最优解。具体到车辆控制的多个参数上,细节可以控制得更加细腻和精确,使其越来越符合人类驾驶员的“驾驶风格”。这个过程中,偏主观的“驾驶风格”也转化为了可以量化可以计算可以迭代改进的一个模型。
写在最后
用户对于智能驾驶体验的期待,其实是来自人类驾驶的“先验”。在使用智能驾驶辅助功能时,当自己觉得应该加减速或者变道时,车辆能及时做出符合自己预期的动作。
当系统的操作与自己的预期出现差异时,即便仍处在安全的行驶状态下,也会给人类驾驶员带来不信任感和不安全感。对于这种具有高度主观评价和个人风格的需求,用先进的技术思想将主观需求量化,转化为可以计算和优化的数学问题,才有可能不断改进提升以用户体验。
人类驾驶的先验其实并不需要对地图、路线、道路所有元素全知全能,往往是基本的方向、更优的车道空间、少数有限的道路标识,就能有效引导人类司机开车到达目的地。对智能驾驶系统来说,要得到接近人类驾驶员预期的规划结果,就必须理解这种结果的“模糊性”和“灵活性”,并在机器的智能上尽可能去拟合人类的判断。
在「成行平台」的决策规划方案设计过程中,通过以往技术沉淀和“以用户体验为本”的理念,最终实现了以“轻决策”降低对道路场景的依赖和假设;在实践“防御性驾驶”中引入轨迹树概率模型;将“驾驶风格”量化,实现安全和效率的灵活平衡,让智能车更加像人,符合人的预期,在降低对感知要求的同时满足多种场景的需求。
惯导立体双目是「成行平台」在感知上最具独一性的技术,OSP则是「成行平台」在规控上最有代表性的技术。「成行平台」在一系列自主研发的技术创新下,帮助车企打造门槛更低性能更好的智能驾驶功能,推动智能驾驶在全社会的普及。
我要收藏
个赞
评论排行