一种基于强化学习的自动变道机动方法

2023-10-27

摘要

变道是一项至关重要的车辆操作,需要与周围车辆协调。建立在基于规则的模型上的自动换道功能可能在预定义的操作条件下表现良好,但在遇到意外情况时可能容易失败。在我们的研究中,我们提出了一种基于强化学习的方法来训练车辆智能体学习自动变道行为,以便它可以在各种甚至不可预见的情况下智能地进行变道。特别是,我们将状态空间和动作空间都视为连续的,并设计了一个具有闭式贪心策略的 Q 函数逼近器,这有助于提高深度 Q 学习算法的计算效率。为训练算法进行了广泛的模拟,结果表明基于强化学习的车辆智能体能够为变道操作学习平稳有效的驾驶策略。

论文地址:A Reinforcement Learning Based Approach for Automated Lane Change Maneuvers

前言

变道机动可能是一项艰巨的任务,因为车辆需要警惕地观察其自我车道上的领先车辆和目标车道上的周围车辆,并根据这些相关车辆表现出的潜在对抗或合作反应来执行适当的操作。

自动变道机动的研究已经广泛开展,工作大致可分为两个功能类别:决策模块和控制执行模块。

我们将重点关注操作控制方面,即车辆如何在接收到来自决策模块的命令后自动执行变道操作。

相关的工作

  • 解决自动变道问题的传统方法主要依赖于预定义的规则和明确设计的模型。(GPS+差分定位导入到自行车模型中、MPC等等)

    缺点:在动态情况和不同驾驶风格下规划的轨迹缺乏灵活性,MPC类时间后退优化方法的因为优化标准可能太复杂而无法针对所有场景明确制定

  • 另一种方法是通过合作技术连接所有车辆。

  • 机器学习 (ML) 算法,如SVM、随机森林。

  • 融合机器学习与传统算法(神经网络+PID)

  • 强化学习

    在之前的一项研究 [14] 中,我们使用 RL 来训练车辆智能体以在交互式驾驶环境下学习最佳匝道合并驾驶策略。

    然而,在那项工作中,我们没有考虑横向控制问题,因为我们假设智能体车辆将沿着其行驶车道的中心线行驶。在这项工作中,我们扩展了之前工作中使用的方法,并采用 RL 架构来处理变道案例,并在状态空间、动作空间和奖励函数中扩展了定义。如果定义了更复杂的状态和动作,我们提出的框架的设计也可以工作。

方法论

在一个统一模型中优化纵向和横向控制是一种很好的做法,如在 MPC 控制器中,但将复杂的车辆操纵分成两个相关模块也很常见,即纵向控制模块和横向控制模块.

我们选择利用成熟的跟车模型、智能驾驶员模型 (IDM) 来构建纵向控制器。

还有一个与两个控制器并行工作的间隙选择模块。车辆收到换道指令后,间隙选择模块会根据周围车辆的所有信息(如速度、加速度、位置、 ETC。)。如果间隙足以容纳允许最大加减速度下的速度差,并能保证当前速度下的最小安全距离,则认为是可接受的间隙,然后将启动变道控制器。纵向和横向控制器将相互交互并共同发挥作用以执行整体变道任务,而它们被单独设计为单独的模块。

在自由交通条件下或在交互式驾驶情况下的纵向行为。

同样值得注意的是,当自我车辆进行车道变换时,它可能会在过渡期间看到自我车道和目标车道中的两辆领先车辆。我们实施的 IDM 跟车模型将允许自我车辆通过在其自我车道和目标车道上观察到的两个领导者之间进行平衡来调整其纵向加速度。较小的值将用于削弱车道变换启动引起的车辆加速度的潜在不连续性。同时,间隙选择模块在整个换道过程中仍然充当安全卫士,检查每个时间步的间隙是否仍然可以接受。如果没有,决策模块将发出改变或中止机动的命令,控制执行模块将重新定位在原来的车道上。这样,纵向控制器会考虑周围的驾驶环境以确保纵向安全,而横向控制器会指示车辆智能地并入任何可接受的间隙。

动作空间

为确保转向角输入连续且平滑,偏航率不应有突然变化,换句话说,偏航加速度不会无规律地波动。因此,我们设计了 RL 智能体来学习偏航加速度,即,动作空间定义为车辆偏航加速度 a y a w a_{yaw} ayaw
a = a y a w ∈ A a = a_{yaw} \in A a=ayawA
成功的变道不仅与车辆动力学有关,还取决于道路几何形状,即变道是在直线段还是弯道上进行。在我们的研究中,我们用车辆动力学和道路信息来定义状态空间。具体来说,状态空间包括自我车辆的速度 v v v、纵向加速度 a a a、位置 x 、 y x、y xy、偏航角 θ θ θ、目标车道 i d id id、车道宽度 w w w和道路曲率 w w wc。
s = ( v , a , x , y , θ , i d , w , c ) ∈ S s=(v,a,x,y,\theta,id,w,c)\in S s=(v,a,x,y,θ,id,w,c)S

当输入状态处于高维空间(例如来自视觉感知模块)或带有测量噪声时,可以在不改变算法结构的情况下将此处定义的状态空间自适应扩展到较大尺寸,这是 RL 方法的一个优势。

奖励函数设计

通常,在变道过程中,我们的注意力集中在操作的安全性、平稳性和效率上。由于纵向模块和间隙选择模块已经考虑到安全问题,横向控制器通过奖励函数来考虑平滑性和效率。奖励函数中的组件是根据与动作表现最相关的变量来选择的,它们的权重是通过尝试不同的参数集来决定的。具体而言,由于考虑到偏航加速度直接影响横向运动中的偏移量,所以通过偏航加速度 r a c c e r_{acce} racce来评估平滑度。
r a c c e = w a c c e ∗ f a c c e ∗ ( a y a w ) r_{acce}=w_{acce}*f_{acce}*(a_{yaw}) racce=waccefacce(ayaw)

其中 r a c c e r_acce racce表示偏航加速度获得的即时奖励, w a c c e w_{acce} wacce是权重,可以设计为常数值或与横向位置相关的函数, w a c c e w_{acce} wacce是评价 a y a w a_{yaw} ayaw的函数。我们目前使用的简单格式为 r a c c e = − 1.0 ∗ ∣ a y a w ∣ r_{acce} = −1.0 ∗ |a_{yaw}| racce=1.0ayaw

另一个衡量平顺性的指标是横摆率 w y a w w_{yaw} wyaw,反映了驾驶员在变道过程中的舒适度,横摆率越大,行驶中的离心拉力就越大。该函数在 (4) 中给出。

r r a t e = r r a t e ∗ f r a t e ∗ ( w y a w ) r_{rate}=r_{rate}*f_{rate}*(w_{yaw}) rrate=rratefrate(wyaw)
其中 r r a t e r_{rate} rrate反映的是偏航率得到的即时奖励, w y a w w_{yaw} wyaw是权重,也可以设计成常数或函数, f r a t e f_{rate} frate是评估 w y a w w_{yaw} wyaw的函数.在我们的研究中,我们应用 r r a t e = − 1.0 ∗ ∣ w y a w ∣ r_{rate} = −1.0 ∗ |w_{yaw}| rrate=1.0wyaw

效率由完成机动所消耗的换道时间来评估。通过向奖励函数添加第三项来考虑这样的组件,以避免过长和延长的车道变换动作。
r t i m e = w t i m e ∗ f l a t ( Δ d l a t ) r_{time}=w_{time}*f_{lat}(\Delta d_{lat}) rtime=wtimeflat(Δdlat)
其中 r r a t e r_{rate} rrate是评估动作效率的直接奖励, w r a t e w_{rate} wrate 是权重, f r a t e f_{rate} frate是当前到目标车道的横向偏差 $\Delta d_{lat} 的函数。 的函数。 的函数。\Delta d_{lat}$越大,换道时间越长。我们使用

r t i m e = − 0.05 ∗ ∣ Δ d l a t ∣ r_{time}=-0.05*|\Delta d_{lat}| rtime=0.05∣Δdlat用于效率评估。

单步立即奖励 r 是三部分的总和。为了评估整体表现,我们还需要计算总奖励 R,它是整个换道过程中立即奖励的累积回报。同样,总奖励也可以看作是上述三个单独部分的组合:偏航加速度总奖励 R a c c e R_{acce} Racce,偏航率总奖励 R r a t e R_{rate} Rrate,换道时间总奖励 R t i m e R _{time} Rtime,如(6)所示。
R = ∑ i = 1 N ( r a c c e ) i + ∑ i = 1 N ( r r a t e ) i + ∑ i = 1 N ( r t i m e ) i R=\sum_{i=1}^N(r_{acce})_i+\sum_{i=1}^N(r_{rate})_i+\sum_{i=1}^N(r_{time})_i R=i=1N(racce)i+i=1N(rrate)i+i=1N(rtime)i

在公式中,我们将奖励定义为负值,也称为“成本”。这个想法是,如果我们想评估一个动作的不利影响,例如变道机动的不顺畅或低效,则可以将成本视为对动作的惩罚。通过这种方式,智能体应该能够学会避免采取会导致大量惩罚的行动。

Q学习

特别是,我们设计了一个 Q 函数,它在动作上是二次的,因此贪婪动作有一个封闭形式的解决方案。理论解释与[20]中的工作相似。 Q-learning 的这种变体避免了调用策略神经网络并简化了学习算法。在数学上,Q函数逼近器表示如下
Q ( s , a ) = A ( s ) ∗ ( B ( s ) − a ) 2 + C ( s ) Q(s,a)=A(s)*(B(s)-a)^2+C(s) Q(s,a)=A(s)(B(s)a)2+C(s)
其中 A、B 和 C 是系数,设计有以状态信息为输入的神经网络,如图 1 所示。如果我们在 Q-learning 探索中接近贪婪行为,就会失去一般性。

图1

在我们的模型中,A 被设计成一个双层神经网络,输入层有 8 个神经元(即状态空间 S 的维度),隐藏层有 100 个神经元。特别是,在输出层使用 softplus 激活函数乘以负号,A 必然为负。 C 也是一个双层神经网络,具有与 A 相同的神经元数和层数,但它也将终止状态作为换道完成的指标。 B 是一个经过精心设计的形式,具有三个双层神经网络,其结构相同,第一层有 8 个神经元,隐藏层有 150 个神经元,连接在一起输出最终的偏航加速度,可适应不同的驾驶情况.

在这里插入图片描述

一个神经网络用于计算初始偏航加速度 a y a w _ p r e a_{yaw\_pre} ayaw_pre。另一种神经网络是计算一个称为灵敏度因子$ β_sen$ 的因子,以补偿两个连续步骤中的固定时间间隔。而第三个神经网络是输出一个可变的最大偏航加速度 a y a w _ p r e a_{yaw\_pre} ayaw_pre,用于根据当前输入状态给出学习到的偏航加速度的可调边界。 B的抽象数学公式在(8)中,B的结构如图2所示。
a y a w = m a x ( a y a w _ p r e ∗ β s e n , a y a w _ m a x ) a_{yaw}=max(a_{yaw\_pre}\ast\beta_{sen},a_{yaw\_max}) ayaw=max(ayaw_preβsen,ayaw_max)

通过上述设计,可以从 B 获得给定状态的最佳动作。同时,使用 A 和 C 的附加信息计算 Q 值。还有一个目标 Q 网络,结构相同但不同参数,以计算目标 Q 值。权重根据目标 Q 值和在线 Q 值之间定义的损失进行更新,使用称为经验回放 [21] 的 RL 学习技术。

仿真结果

我们通过一个模拟平台测试我们提出的算法,在这个平台上,学习智能体能够一方面与驾驶环境交互,另一方面通过试验和实验错误来改进自己。模拟驾驶环境为单向三车道高速公路路段。路段长度为1000m,每车道宽度为3.75m。可以根据需要定制高速公路上的交通。例如,单个车辆的初始速度、出发时间和限速都可以设置为合理和实用范围内的随机值,以执行各种纵向行为。在我们目前的研究中,发车间隔在5s-10s之间,个人限速在80km/h-120km/h的范围内。使用所提出的 IDM,所有车辆都可以执行实际的跟车行为。可以使用不同的参数集生成不同的交通状况。仿真场景的场景如图 3 所示。

在这里插入图片描述

在训练过程中,我们设置训练步数为40000,时间步长间隔dt为0.1s,学习率α为0.01,折扣因子γ为0.9。在训练过程中,总共有大约 5000 辆车执行了变道操作。训练期间收集的损失和奖励如图 4 所示。

在这里插入图片描述

结论

在这项工作中,我们应用强化学习方法来学习交互式驾驶环境下的自动变道行为。状态空间和动作空间都被视为连续的,以学习更实用的驾驶操作。二次函数的独特格式用作 Qfunction 逼近器,其中系数是从神经网络学习的。奖励函数定义为偏航率、偏航加速度和换道时间,用于训练平稳高效的换道行为。为了实施所提出的方法,我们开发了一个仿真平台,可以通过调整交通密度、初始速度、限速等来生成不同的仿真场景。初步训练结果显示学习框架中定义的损失和奖励收敛,表明有前途的尝试。

  • 我们研究的下一步是扩展 RL 智能体在不同道路几何形状和不同交通流量条件下的测试,以增强其在复杂驾驶场景中的鲁棒性和适应性,这是该方法处理.

  • 其次,将换道性能(如横向位置偏差和转向角等)以及收敛趋势与现有的基于优化的方法(如MPC)进行比较,以进行验证和验证。

  • 此外,另一个有希望的增强是结合 RL 和 MPC 以充分利用这两种方法。所提出的体系结构可以通过扩展神经网络的第一层来适应来自图像模块的大而模糊的输入状态,然后为传统的基于优化的控制器输出参考指导以发出快速可靠的控制命令来建立机动车。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一种基于强化学习的自动变道机动方法 的相关文章

随机推荐

  • Linux下which、whereis、locate、find 命令的区别

    http blog chinaunix net uid 20554039 id 3035417 html 我们经常在linux要查找某个文件 但不知道放在哪里了 可以使用下面的一些命令来搜索 这些是从网上找到的资料 因为有时很长时间不会用到
  • 管理科学基础知识__后悔值计算

    看一个例题 某企业要投产一种新产品 生产方案有四种 A 新建全自动生产线 B 新建半自动生产线 C 购置旧生产设备 D 外包加工生产 未来该产品的销售前景估计为很好 一般和较差三种 不同情况下该产品的收益值如下表所示 单位 万元 用后悔值
  • 【Python】解决AttributeError: ‘xml.etree.ElementTree.Element‘ object has no attribute ‘getchildren‘问题

    getchildren在python 3 9中已经被移除 如果项目中使用会显示错误 AttributeError xml etree ElementTree Element object has no attribute getchildr
  • python中strptime()和strftime()的区别和用法

    python中strptime 和strftime 的区别和用法 之前每次遇到时间格式转换都要去搜 今天决定自己记录一下这两个方法的区别和用法 也方便自己加深印象 1 strptime中的p代表parse 意为解析 也就是将一个字符串解析成
  • 【点宽专栏】国泰君安——综合期限多样性的趋势选股策略

    前言 此策略报告策略构建部分参考 国泰君安综合期限多样性的趋势选股策略数量化专题之九十 原报告思想 移动平均线由于具有简单直观的特征 是最常用的技术指标之一 除了简单发送多空信号之外 移动平均指标作为历史股价走势信息的载体 能够对未来收益起
  • Python Pandas 列数据筛选方法汇总

    Pandas 列数据筛选方法汇总 数据准备 一 筛选得到指定的列 1 1 根据 label 选择特定的几列 1 2 选择单列的两种方式 1 3 通过正则表达式选择列 二 同时对 行 和 列 进行筛选 2 1 通过切片 df loc 2 2
  • pytorch搭建squeezenet网络的整套工程,及其转tensorrt进行cuda加速

    本来 前辈们用caffe搭建了一个squeezenet的工程 用起来也还行 但考虑到caffe的停更后续转trt应用在工程上时可能会有版本的问题所以搭建了一个pytorch版本的 以下的环境搭建不再细说 主要就是pyorch 其余的需要什么
  • 【Java】Java中的多态

    文章目录 一 什么是多态 二 多态实现的条件 三 重写 3 1 什么是重写 3 2 重写和重载的区别 四 向上转型和向下转型 4 1 向上转型 4 2 向下转型 五 多态的优缺点 六 避免在构造方法中调用重写的方法 一 什么是多态 在Jav
  • MySQL多表关联查询

    文章目录 多表查询 用户表 用户角色表 角色表 权限表 角色权限表 表间关系 MySQL连接 关联查询用户表和用户角色表 关联查询用户表 用户角色表和角色表 多表连接 笛卡尔集 外连接
  • 软件测试报告可以包含哪些测试内容?

    软件测试报告可以包含以下测试内容 功能测试 测试软件的基本功能是否实现 是否符合要求 性能测试 测试软件的响应速度 并发能力 稳定性等性能指标 界面测试 测试软件的用户界面是否友好 易于使用 兼容性测试 测试软件在不同的操作系统 浏览器 设
  • Springboot中 @ConfigurationProperties对象 静态方法调用无效

    1 https blog csdn net weixin 43404791 article details 105430606 2 https blog csdn net qq827245563 article details 106296
  • 三行代码求二叉树的节点个数以及二叉树的深度

    二叉树的节点格式如下 struct BinaryTreeNode int m nValue BinaryTreeNode m pLeft BinaryTreeNode m pRight 1 求二叉树的节点个数 这道题比较简单 使用随便一种遍
  • TI DSP TMS320C66x学习笔记之VLIB测试数据(三)

    VLIB是TI提供的针对C6x优化过的视觉库 下载地址 http software dl ti com libs vlib latest index FDS html 提供40多个核心函数 主要实现以下功能 Background Model
  • SpringBoot+vue旅游项目总结

    Springboot vue旅游项目小总结 此项目为一个springboot vue入门级小项目 视频地址为 https www bilibili com video BV1Nt4y127Jh 业务简单 对提升业务能力没什么大的帮助 更多的
  • 开始→运行→输入的命令集锦

    gpedit msc 组策略 sndrec32 录音机 nslookup ip地址侦测器 explorer 打开资源管理器 logoff
  • 最后一位

    题目名称 最后一位 小明选择了一个正整数X 然后把它写在黑板上 然后每一天他会擦掉当前数字的最后一位 直到他擦掉所有数位 在整个过 程中 小明会把所有在黑板上出现过的数字记录下来 然后求出他们的总和sum 例如X 509 在黑板上出现过的数
  • vue打包放服务器显示代码,解决vue-cli3打包代码后,上线服务器后白屏问题

    前沿 因为最近vue刚刚发版了最新版本的vue cli3 而最近刚刚好有个项目要迁移到vue 所以经过讨论 大家一起入坑VUE 然后我也刚好可以练手刚学一周的vue 结合TypeScript和vuex等全家桶的框架 后期 噗呲噗呲的大家在开
  • C++实现快速排序(源代码)

    快速排序的基本思想是 通过一趟排序将要排序的数据分割成独立的两部分 其中一部分的所有数据都比另外一部分的所有数据都要小 然后再按此方法对这两部分数据分别进行快速排序 整个排序过程可以递归进行 以此达到整个数据变成有序序列 快速排序是一种不稳
  • 一阶滞后环节matlab,一个一阶惯性带有滞后环节的PID仿真程序

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 我照着网上的程序自己改出来的程序是这样的 clc clear ts 0 001 采样时间 sys tf 53 19926 100 ioDelay 540 tf是传递函数 用来实现G s 在自动控
  • 一种基于强化学习的自动变道机动方法

    文章目录 摘要 前言 相关的工作 方法论 动作空间 奖励函数设计 Q学习 仿真结果 结论 摘要 变道是一项至关重要的车辆操作 需要与周围车辆协调 建立在基于规则的模型上的自动换道功能可能在预定义的操作条件下表现良好 但在遇到意外情况时可能容