让自动驾驶系统无限逼近人类?最新混合规划器实现高度安全的实车导航

news2024/9/20 4:30:38

导读:

本篇文章针对基于学习的规划器难以保证安全闭环驾驶这一问题,提出了一种新型的混合运动规划器,其结合了基于学习和基于优化的技术。通过仿真实验和实车实验,证明了本文规划器的有效性和鲁棒性。©️【深蓝AI】编译

1. 摘要

随着nuPlan和Argoverse等开源数据集的发布,围绕基于学习的规划器的研究在过去几年中得到迅速发展。现有的系统在模仿人类驾驶员行为方面展现出卓越的能力,但是它们难以保证安全的闭环驾驶。相反,基于优化的规划器在短期规划场景中提供了更高的安全性。为了应对这一挑战,本文提出了一种新型的混合运动规划器,其结合了基于学习和基于优化的技术。最初,多层感知器(MLP)生成了类人的轨迹,然后由基于优化的组件进行细化。该组件不仅最小化跟踪误差,还计算出运动学可行且与障碍物和道路边界不发生碰撞的轨迹。本文模型有效地平衡了安全性和类人性,缓解了这些目标的固有权衡。本文通过仿真实验验证了所提出的方法,并且通过将其部署在现实世界自动驾驶汽车上,以进一步证明其有效性。

2. 介绍

由于自动驾驶汽车具有提高安全性和道路使用率的潜力,预计将在未来的出行中发挥至关重要的作用。为了确保这些优势,其规划组件必须提供安全、舒适且无碰撞的轨迹,同时考虑静态和动态交通元素。传统的轨迹规划方法包括基于规则、基于采样和基于优化的方法,这些方法依赖于人工定义的代价和目标函数,通过A*、RRT、动态规划和模型预测轨迹算法等经典技术进行优化。这些方法是可靠且可解释的,但是难以扩展到复杂的城市场景中,并且无法使用数据来改进,需要大量的工程调试。

nuPlan和Argoverse等开源数据集的可用性推动了基于学习的规划器研究的发展,这些规划器非常擅长生成类人的轨迹。然而,这些在开环设置下训练的模型无法保证在闭环应用(特别是新的场景)中的安全性,因为它们太过依赖训练数据。为了解决此类局限,学者们可以在训练数据集中引入扰动,以帮助车辆从危险情况中恢复并且缓解协变量偏移问题。或者,使用可微分仿真器进行闭环训练。尽管存在多种改进方向,但是基于学习的模型仍然难以泛化到未见过的场景,这使其对现实世界交通不安全。

基于上述泛化性问题,本文提出了两个关键贡献:

1)结合基于学习和基于优化的技术,以构建混合模仿学习模型。这种结合旨在生成安全、类人的轨迹,平衡这些目标之间的权衡;

2)在城市环境中的实车上验证该混合模型,证明其在仿真之外的实际有效性和鲁棒性。

针对基于学习的规划器的大多数研究仅限于仿真,这可能无法体现在现实世界中的性能。本文的目标是提高基于学习的模型的短期规划能力,确保其在现实城市环境中的安全性和可靠性。本项研究着重于规划,假设定位、感知、建图和控制模块已经存在。

3. 系统架构

本节描述混合模仿学习模型——其结合了基于学习的规划器与基于优化的组件,从而生成运动学可行的无碰撞轨迹。如图1所示,该系统输入自车状态、感知观测和目的地,通过规划器模块生成基于采样的轨迹。多层感知器(MLP)对该轨迹进行细化,以模仿类人的行为。模型预测轨迹(MPT)模块对其进行优化,以避免与障碍物和道路边界发生碰撞。

图1|模型的结构©️【深蓝AI】编译

3.1 规划器

规划器模块与多层感知器结合的灵感来自于PDM-Open模型,该模型将自车的位姿、速度和加速度、观测结果(用于智能体预测)和目标作为输入,负责利用Dijkstra算法寻找从起始位置到终点的中心线,并且依靠基于采样的方法计算无碰撞路径。

规划器按以下方式计算出15条不同的路径:

1)从中心线开始,采用5种不同的智能驾驶员模型(IDM)策略以及特定的目标速度,具体为速度限制的20%、40%、60%、80%和100%。当前方有先行车辆时,速度限制定义为先行车辆的速度;

2)其次,为了获得横向方差,还应用3种不同的偏移,分别为+1m、-1m和0m。

这样,就获得了15条不同的路径,其具有纵向和横向变化,这在预测环境中进行仿真,并且根据nuPlan提供的闭环指标进行评分。然后,选择具有最高得分的路径,如果在2秒内发生预期的故障碰撞,则输出将被最大制动力所覆盖。

3.2 多层感知器(MLP)

多层感知器负责生成输出轨迹,该轨迹可能与专家驾驶员轨迹相似。为了完成轨迹生成任务,神经网络将自车的位姿、纵向、横向和角轴的速度和加速度(从过去2秒到当前时刻)以及规划器模块计算的路径作为输入。这些输入通过线性层缩放到512维向量,然后将它们连接起来并且传入MLP。

MLP由两个512维线性层组成,具有dropout(p=0.1)和ReLU激活函数。输出层是一个线性层,在接下来8秒内对未来路径点进行回归。该输出称为“神经网络轨迹”,其经过训练以最小化路径点与数据集提供的专家驾驶员轨迹之间的L2距离,该数据集提供了超过88000个场景,长度为15秒,其中包含用于训练目的的人类驾驶员轨迹。

3.3 模型预测轨迹(MPT)

基于优化的组件利用了MPT算法,该算法结合了MLP生成的“神经网络轨迹”、可行驶区域、自车位姿和速度以及感知系统的观测结果等输入。其主要功能是生成最优轨迹,其确保了无碰撞导航并且遵循运动学可行性。

为了求解优化问题,本文定义了软约束和硬约束:

1)软约束:无碰撞条件被作为软约束,因为如果优化的轨迹不是无碰撞的,则考虑先前生成的轨迹;

2)硬约束:由于自车附近的轨迹必须是平滑的,因此唯一的硬约束是自车附近的轨迹点必须与先前生成的轨迹相同,以避免突然的转向行为。该硬约束如下:

δ k = δ k p r e v i f ( 0 ≤ i ≤ N f i x ) \delta_k = \delta_k^{prev} \quad if(0 \leq i \leq N_{fix}) δk=δkprevif(0iNfix)

其中:

δ k \delta_k δk表示当前轨迹点的转向角;

δ k p r e v \delta_k^{prev} δkprev表示先前轨迹点的转向角,它确保当前轨迹点的转向角与先前轨迹点的转向角保持一致;

N f i x N_{fix} Nfix表示固定轨迹点的数量,它决定了硬约束应用的范围。

优化问题的目标函数最小化跟踪误差和自车的转向加速度、速度和角度,其定义如下:

$$\begin{matrix} J = w_y \sum_{k}y^2_k + w_{\theta}\sum_{k}\theta^2_k + w_{\delta}\sum_{k}\delta^2_k \newline \

  • w_{\dot\delta}\sum_{k}\dot\delta^2_k
  • w_{\ddot\delta}\sum_{k}\ddot\delta^2_k
    \end{matrix} \tag{1}$$

其中在时刻 k k k,定义如下变量:

y k y_k yk:到参考路径的横向距离;

θ k \theta_k θk:相对参考路径的朝向角度;

δ k \delta_k δk:转向角;

δ ˙ k \dot\delta_k δ˙k:转向速度;

δ ¨ k \ddot\delta_k δ¨k:转向加速度;

w y w_y wy w θ w_{\theta} wθ w δ w_{\delta} wδ w δ ˙ w_{\dot\delta} wδ˙ w δ ¨ w_{\ddot\delta} wδ¨:调整权重。

MPT通过将其它智能体的观测结果作为输入,也能够执行自适应巡航规划行为。巡航规划的作用是通过平滑的速度过渡与动态车辆目标保持安全距离。

该安全距离由如下公式动态计算:

d = v e g o t i d l i n g + 1 2 a e g o t i d l i n g 2 + v e g o 2 2 a e g o − v o b s t a c l e 2 2 a o b s t a c l e d = v_{ego}t_{idling} + \frac{1}{2}a_{ego}t^2_{idling} + \frac{v^2_{ego}}{2a_{ego}} - \frac{v^2_{obstacle}}{2a_{obstacle}} d=vegotidling+21aegotidling2+2aegovego22aobstaclevobstacle2

其中:

d d d为计算的安全距离;

t i d l i n g t_{idling} tidling为自车检测前方车辆减速的怠速时间;

v e g o v_{ego} vego为自车的当前速度;

v o b s t a c l e v_{obstacle} vobstacle为前方障碍物的当前速度;

a e g o a_{ego} aego为自车的加速度;

a o b s t a c l e a_{obstacle} aobstacle为障碍物的加速度。

为了在优化平滑速度过渡的同时维持安全距离,本文求解了一个优化问题。目标函数最小化与期望速度的偏差和加速度的平滑性:

J = ∑ k ( w v ( v d e s i r e d − v e g o , k ) 2 + w a a e g o , k 2 ) J = \sum_k(w_v(v_{desired} - v_{ego,k})^2 + w_aa^2_{ego,k}) J=k(wv(vdesiredvego,k)2+waaego,k2)

该优化问题受安全距离 d d d、速度和加速度的限制。通过在每一时刻求解该问题,自车能够适应变化,并且确保安全且高效的巡航(注意, w v w_v wv w a w_a wa是调整权重)。

4. 实验和结果

4.1 基线

本文首先分析了nuPlan开环(OL)、闭环非反应(CL-NR)和闭环反应(CL-R)仿真中基线模型的结果,如表1所示。通过仿真器的内置指标计算得分。开环仿真评估了规划器对专家驾驶员路线的模仿,而闭环仿真评估了轨迹的安全性、舒适性和避障能力。每个仿真根据这些标准分配一个0到100之间的得分。

表1|nuPlan中基线的得分©️【深蓝AI】编译

仔细观察表1,结果中出现了可辩别的模式。具体而言,Urban Driver、PDM-Open和GC-PGP作为基于学习的模型,在开环仿真中展现出卓越的性能,但是在闭环场景中表现不佳。

相反,基于规则的IDM和基于采样的PDM-Closed模型表现出相反的行为:在开环仿真中表现不佳,而在闭环仿真中超越了基于学习的模型。

这些研究结果表明,基于学习的模型在预测自车运动方面表现出色,该模型能够复制人类轨迹。但与基于规则、采样或者优化的方法不同,该模型本身并不能确保安全的闭环驾驶。

4.2 ROS仿真器

研究者们在实车上直接测试模型之前,在仿真器中已进行了若干实验,图2展现了不同的实验结果。

图2|来自自动驾驶仿真的四帧,绿线展现出神经网络的输出,粉线展现出基于优化的组件的输出©️【深蓝AI】编译

绿线是“神经网络轨迹”,是神经网络的直接输出。正如预期的那样,它无法提供安全的闭环驾驶,如图2提供的极端情况,它通常会超过车道的边界,导致不安全且危险的情况发生,而无法保证生成无碰撞的轨迹。尽管如此,它展现出良好的泛化能力,因为评估过程中考虑的地图和场景与训练阶段的完全不同。

然而,代表“MPT轨迹”的粉线完美地使车辆在车道边界内行驶,将多层感知器的输出重新定义为安全且无碰撞的路径。

该模型还能够与静态障碍物进行避障操作,并且与动态智能体进行自适应巡航控制驾驶。

这些实验结果可以证明混合运动规划器安全闭环驾驶能力的有效性,其能够通过优化过程计算细化的输出来防止碰撞和不可行的轨迹。

然而,评估模型模仿人类驾驶风格的能力需要定性分析。

为此,本文研究了若干个定性结果,展现了默认的基于优化的规划器与本文提出的混合运动规划器之间的一些比较。除了轨迹形状之外,还提供了速度和加速度曲线,以更好地评估类人性。

在图3中,默认规划器和混合规划器的轨迹在形状方面展现出惊人的相似性。然而,经过仔细检查,可以注意到一个有趣的区别:混合模型的轨迹在弯道周围逐渐变宽,偏离车道中心线,更接近人类驾驶员行为。

图3|左:默认基于优化的规划器的轨迹,速度曲线(上图)和加速度曲线(下图);右:混合模型轨迹,速度曲线(上图)和加速度曲线(下图)©️【深蓝AI】编译

此外,与基于优化的模型相比,混合规划器的速度和加速度曲线平滑得多。在基于优化的模型中,很明显存在突然的加速行为,这会导致整体运动不连续。

在图4中,尽管两个规划器的速度和加速度曲线看起来非常相似,但是读者们可以从中区分出轨迹形状的显著差异。尽管默认规划器几乎完美地遵循车道中心线,从而形成几何路径,而混合模型会远离中心线,但是其通过一次操作就完成两次转弯。

图4|左:默认基于优化的规划器的轨迹,速度曲线(上图)和加速度曲线(下图);右:混合模型轨迹,速度曲线(上图)和加速度曲线(下图)©️【深蓝AI】编译

类似地,图5中使用混合模型获得了类人的轨迹,该轨迹在弯道处变宽。此外,在图像的顶部,可以注意到一个关于轨迹形状的有趣行为,即车道右边界有一个突然的台阶,这会影响默认规划器的轨迹。相反,混合规划器完全忽略了车道边界上的台阶并且不影响运动,从而获得了更舒适的路径。

图5|左:默认基于优化的规划器的轨迹,加速度曲线;右:混合模型轨迹,加速度曲线©️【深蓝AI】编译

图6展示了另一个有趣的情况,其中仿真了自适应巡航控制行为。

图6|左:默认基于优化的规划器的轨迹,速度曲线(上图)和加速度曲线(下图);右:混合模型轨迹,速度曲线(上图)和加速度曲线(下图)©️【深蓝AI】编译

默认规划器在开始时突然加速,在短时间内达到高速,并且在遇到前方车辆时突然刹车,这导致运动不舒适且不连续,而混合规划器采用更平滑的轨迹,推断出正确的加速度,以避免莽撞且草率的行为。

由于实验是沿着直线进行的,因此两条轨迹之间没有明显的差异,本文将重点转移到分析图7中时域速度和加速度上,可以注意到混合模型的运动更具平滑性。

图7|自适应巡航控制行为过程中时域速度和加速度曲线(左:默认基于优化的规划器;右:混合规划器)©️【深蓝AI】编译

除了定性分析之外,本文还通过检查时域中的加加速度曲线,以将重点转移到定量结果上。突然提高的加加速度是机器人行为的特性,而平稳的加加速度则反映了更像人类的驾驶风格。

在图8中,可以注意到基于优化的规划器的加加速度曲线有一处高峰,而混合运动规划器的加加速度曲线仍然维持不变。

图8|自适应巡航控制行为过程中时域加加速度(左:默认基于优化的规划器;右:混合模型)©️【深蓝AI】编译

4.3 现实世界驾驶

在仿真器环境中进行若干次成功的测试后,现在将案例研究转移到现实世界场景中。该模型已经部署到Pix Moving公司制造和设计的车辆上,该车辆称为Robobus。Robobus是一款双向L4级别的自动驾驶汽车,其配备了激光雷达、雷达、相机、GNSS和IMU等传感器。其设计最多可运送6人,最高时速为30km/h,已经在中国和日本的一些地区投入使用。实验在真实的交通场景中进行,涉及其它静态和动态智能体,如图9所示。

图9|现实世界测试(上图:城市交通场景中自车的前视图像;下图:自上而下的传感器可视化)©️【深蓝AI】编译

该规划器在交通场景中导航时展现出稳定性和鲁棒性,特别是在低速(低于15km/h)场景。由于基于优化的组件改进了神经网络的输出,最终的轨迹始终在车道边界内,并且与障碍物和其它智能体不会发生碰撞。

5. 总结

本文引入了一种混合模仿学习运动规划器,旨在确保安全、无碰撞的轨迹,这些轨迹与人类行为非常相似。本文的模型在仿真中展现出令人印象深刻的性能,对训练过程中没有见过的各种地图、场景和环境表现出强大的泛化能力。这突显了其鲁棒的能力。此外,本文方法在现实世界自动驾驶汽车上部署时证明是有效的,特别是在低速时。未来的研究工作应该优先考虑以更高的速度测试模型,以更好地为现实世界城市驾驶场景做好准备。
©️【深蓝AI】

Ref:
Hybrid Imitation-Learning Motion Planner for Urban Driving
编译|auto_driver
审核|Los

本文首发于微信公众号【深蓝AI】,移步公众号【深蓝AI】,第一时间获取自动驾驶、人工智能与机器人行业最新最前沿论文和科技动态👇
深蓝AI·赋能自动驾驶+机器人+AI

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2147857.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【已解决】Uncaught RangeError: Maximum depth reached

【已解决】Uncaught RangeError: Maximum depth reached 在JavaScript编程中,Uncaught RangeError: Maximum depth reached 是一个常见的错误,通常与递归调用深度过大有关。递归是一种编程技巧,它允许函数直接或间接地调用自身。然而&#xf…

2024年轻人驯化AI指南

或许Python编程是答案 我为您精心准备了一份全面的Python学习大礼包,完全免费分享给每一位渴望成长、希望突破自我现状却略感迷茫的朋友。无论您是编程新手还是希望深化技能的开发者,都欢迎加入我们的学习之旅,共同交流进步! &…

OpenAI GPT o1技术报告阅读(2)- 关于模型安全性的测试案例

✨报告阅读:使用大模型来学习推理(Reason) 首先是原文链接:https://openai.com/index/learning-to-reason-with-llms/ 接下来我们看一个简单的关于模型安全性的测试,当模型被问到一个有风险的话题时,会如何思考并回答用户呢&…

saltstack入门

一、saltstack入门 一、saltstack介绍 1、saltstack简述 SaltStack 是一种基于 C/S 架构的服务器基础架构集中化管理平台,管理端称为 Master,客户端称为 Minion。SaltStack 具备配置管理、远程执行、监控等功能,一般可以理解为是简化版的 Pup…

安卓Settings值原理源码剖析存储最大的字符数量是多少?

背景: 平常做rom相关开发时候经常需要与settings值打交道,需要独立或者存储一个settings的场景,群里有个学员朋友就问了一个疑问,那就是Settings的putString方式来存储字符,那么可以存储的最大字符是多少呢&#xff1…

初始c++:入门基础(完结)

打字不易,留个赞再走吧~~~ 目录 一函数重载二引用1 引⽤的概念和定义2引⽤的特性3引⽤的使⽤三inline四nullptr 一函数重载 C⽀持在同⼀作⽤域中出现同名函数,但是要求这些同名函数的形参不同,可以是参数个数不同或者 类型不同。这样C函数调⽤…

【数据结构-差分】【hard】力扣995. K 连续位的最小翻转次数

给定一个二进制数组 nums 和一个整数 k 。 k位翻转 就是从 nums 中选择一个长度为 k 的 子数组 ,同时把子数组中的每一个 0 都改成 1 ,把子数组中的每一个 1 都改成 0 。 返回数组中不存在 0 所需的最小 k位翻转 次数。如果不可能,则返回 -…

代码随想录算法训练营43期 | Day 20 —— 235.二叉搜索树的最近公共祖先、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点

代码随想录算法训练营 代码随想录算法训练营43期235.二叉搜索树的最近公共祖先701.二叉搜索树中的插入操作450.删除二叉搜索树中的节点 代码随想录算法训练营43期 235.二叉搜索树的最近公共祖先 解题思路: 二叉搜索树一定是有序的 判断条件: cur>p &…

解决phpstudy无法启动MySQL服务

三种方法 如果说你在小皮里面,启动mysql,发现启动不了,而且你在你自己电脑本地有装过mysql服务,那么可以按照我下面的不走来,按顺序试验1,2,3,三个里面肯定有一个是可以解决的 1.停止本地的mysq…

整整3W字笔记,Redis最核心的秒杀业务、分布式锁、消息队列相关原理一篇文章就搞定(黑马点评项目)

目录 四、 优惠卷秒杀系列功能实现 4.1 全局ID生成器 4.1.1 全局ID生成器的选型 4.1.2 全局ID生成器的实现 4.1.3 全局ID生成器的测试 4.1.4 其他ID生成器的拓展 4.2 利用PostMan模拟管理员后台添加秒杀优惠卷信息 【代码实现】 【PostMan测试】 4.3 优惠卷秒杀下单功能…

Jenkins 构建后操作(Send build artifacts over SSH)

Jenkins 构建后操作(Send build artifacts over SSH) 针对Jenkins部署项目的注意事项 配置Send build artifacts over SSH SSH Server,这是一个系统配置 配置地址:系统管理 -> 系统配置 ->SSH Server 注意1:记得点一下高级里面有一个密码配置&…

10 vue3之全局组件,局部组件,递归组件,动态组件

全局组件 使用频率非常高的组件可以搞成全局组件&#xff0c;无需再组件中再次import引入 在main.ts 注册 import Card from ./components/Card/index.vuecreateApp(App).component(Card,Card).mount(#app) 使用方法 直接在其他vue页面 立即使用即可 无需引入 <templat…

240919-Pip先在线下载不安装+再离线安装

A. 最终效果 # 使用modelscope sdk下载模型 import os os.environ[MODELSCOPE_CACHE] 您希望的下载路径from modelscope import snapshot_download model_dir snapshot_download(opendatalab/PDF-Extract-Kit) print(f"模型文件下载路径为&#xff1a;{model_dir}/model…

【新手上路】衡石分析平台使用手册-认证方式

认证方式​ 用户登录衡石系统时&#xff0c;系统需要对输入的用户名和密码进行验证&#xff0c;保证系统的安全。衡石提供 CAS、SAML2、OAUTH2等多种单点登录认证方式。在 SSO 单点登录中&#xff0c;衡石是服务提供者 SP&#xff08;Service Provider&#xff09;为用户提供所…

synchronized是怎么实现的?

synchronized是JVM的语法糖&#xff0c;主要是通过JVM来控制的。其实现原理依赖于JVM的监视器和对象头。 synchronized修饰方法时&#xff0c;JVM会通过编译完的字节码的访问标记来区分该方法是否被synchronized修饰&#xff0c;在进入方法的时候就会进行获得锁的竞争&#xff…

鸿蒙媒体开发系列06——输出设备与音频流管理

如果你也对鸿蒙开发感兴趣&#xff0c;加入“Harmony自习室”吧&#xff01;扫描下方名片&#xff0c;关注公众号&#xff0c;公众号更新更快&#xff0c;同时也有更多学习资料和技术讨论群。 1、音频输出设备管理 有时设备同时连接多个音频输出设备&#xff0c;需要指定音频输…

python 爬虫 selenium 笔记

todo 阅读并熟悉 Xpath, 这个与 Selenium 密切相关、 selenium selenium 加入无图模式&#xff0c;速度快很多。 from selenium import webdriver from selenium.webdriver.chrome.options import Options# selenium 无图模式&#xff0c;速度快很多。 option Options() o…

栈、队列、链表

基于《啊哈&#xff01;算法》和《数据结构》&#xff08;人民邮电出版社&#xff09; 本博客篇幅较多&#xff0c;读者根据目录选择&#xff0c;不理解的可留言和私信。 栈、队列、链表都是线性结构。 三者都不是结构体、数组这种数据类型&#xff0c;我认为更像是一种算法…

面试必备!值得收藏!不容错过的100+ 大语言模型面试问题及答案

引言 大语言模型&#xff08;LLMs&#xff09;现在在数据科学、生成式人工智能&#xff08;GenAI&#xff0c;即一种借助机器自动产生新信息的技术&#xff09;和人工智能领域越来越重要。这些复杂的算法提升了人类的技能&#xff0c;并在诸多行业中推动了效率和创新性的提升。…

Windows如何查看已缓存的DNS信息

Windows server 2016如何查看已缓存的DNS信息 在Windows server 2016系统下&#xff0c;如何查看已缓存的DNS信息呢? 1.打开“运行”&#xff0c;输入cmd&#xff0c;点击“确定” 2.在命令行界面输入ipconfig /displaydns&#xff0c;按回车即可查看已缓存的dns信息