基于五次多项式实现考虑驾驶风格的主动换道轨迹规划

// 介绍 //

车道变换行为是日常行车中最常见的驾驶行为之一,车辆换道轨迹的规划是自主车辆能否安全而又高效地完成换道任务的关键,因此对换道轨迹规划的研究逐渐成为自主车辆技术研究的重点。基于几何的轨迹规划通常采用参数化的曲线来描述轨迹,这种方法较为直观、精确,且运算量较小,因此是目前采用的较为广泛的轨迹规划方法。文中根据换道过程中对换道轨迹平稳性和效率性的要求,基于五次多项式轨迹采样提出了一种考虑驾驶风格的换道轨迹规划方法。

五次多项式轨迹采样

假设车辆沿着车道方向匀速换道,车辆横向位置图片关于时间t的五次多项式为:
图1 车辆的变道过程
车辆的换道轨迹规划实际上是求解式(1)中的拟合系数bi的值,基于多项式的换道轨迹模型只需获取车辆的初始状态及目标状态,即可通过计算获得换道轨迹。
图片

图片代表道路宽度(一般设为3.5m),d是换道前的横向位置。图片表示变道所花费的时间。可得图片关于图片的六元一次方程组:
图片
得出五次多项式系数:
图片
因此可以得到五次多项式的轨迹为:
图片
其侧向加速度表达式为
图片
根据侧向冲击度
图片
可得侧向加速度的极值点为图片
,即两个对称的极值点,可近似取为图片
则最大的横向加速度为图片

优化目标

考虑以换道时间与最大侧向加速度作为优化目标(其中换道时间反应换道效率,最大侧向加速度反应换道的舒适性及安全性),并进行无量纲处理,即
在这里插入图片描述
其中,μg是允许的最大横向加速度,此处可取为μg=4;TL=10s为允许的最大换道时间。则代价函数设为:
图片
根据变道过程中对换道轨迹舒适性和安全性,以及变道效率的要求,所以对横向加速度以及换道时间进行优化,其中k1和k2代表权重系数。利用KKT原理求代价函数的极值点满足
图片
图片

对于不同驾驶风格的智能车辆,不同的驾驶风格对于这两项指标的追求侧重不同,因此加入权重因子,通过调整权重因子来满足不同驾驶风格智能车辆的换道需求。三种典型的驾驶风格所对应的权重因子具体对应:
在这里插入图片描述
令d=0,道路宽度在这里插入图片描述
,假设车速为10m/s,在matlab中进行仿真,结果如下图所示,不同的驾驶风格完成换道的时间与行驶距离是不同的。
图片
图片
来源:智能运载装备研究所

### 使用强化学习实现车辆自动变路径规划 #### 方法概述 为了实现车辆的自动变路径规划,可以采用基于强化学习的方法。这种方法能够使车辆在复杂的交通环境中自主决策并执行安全有效的变操作。具体来说,可以通过定义合适的奖励机制来引导智能体(即车辆)做出最优的行为选择。 #### 构建环境与模型 首先需要建立一个模拟驾驶场景,在此环境中设置车、其他行驶中的汽车以及可能遇到的各种障碍物等要素。对于这种特定的任务,通常会选用CARLA这样的高级别自动驾驶仿真平台[^2]来进行实验验证工作。接着要设计状态空间、动作空间及相应的回报函数: - **状态空间**:包括但不限于本车的速度、加速度、位置坐标;周围车辆的距离、相对速度以及其他感知信息。 - **动作空间**:一般由加速减速指令组成,同时也涉及转向角度调整命令用于完成实际的变过程。 - **回报函数**:这是整个系统的核心部分之一,合理的设定能促使智能体更快更好地掌握技能。例如当成功变至目标车时给予正向激励,而发生碰撞则施加惩罚分值。 #### 训练流程 利用稳定基线库`stable_baselines3`配合深度神经网络框架如PyTorch, TensorFlow等搭建起DQN (Deep Q Network), PPO(Policy Gradient Methods) 或者 SAC(Soft Actor-Critic) 类型的学习器实例化对象,并调用`.learn()`方法启动迭代优化循环直至收敛或达到预定的最大时间步数限制为止[^3]。 ```python import gym from stable_baselines3 import DDPG from stable_baselines3.common.env_checker import check_env from carla_env import CarlaEnv # 自定义Carla环境类 def main(): env = CarlaEnv() # 初始化自定义Carla环境 model = DDPG('MlpPolicy', env, verbose=1) try: model.learn(total_timesteps=int(1e5)) model.save("ddpg_carla_lane_change") obs = env.reset() while True: action, _states = model.predict(obs) obs, rewards, dones, info = env.step(action) finally: env.close() if __name__ == '__main__': main() ``` 上述代码片段展示了一个简单的DDPG算法应用于Carla环境下进行变行为训练的例子。其中`CarlaEnv`代表了针对该任务定制化的开放AI Gym风格接口封装版本。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值