Advertisement

自动驾驶横纵向耦合控制-复现Apollo横纵向控制

阅读量:

自动驾驶横纵向耦合控制-复现Apollo横纵向控制

自动驾驶技术快速推进已引起更多关注者的兴趣。交叉轴与 longitudinal运动之间建立了关联关系,并能带来更为精确的系统响应。本文旨在介绍一种基于动力学误差模型与MPC算法的方法,
通过一个控制器来协调车辆在横向与纵向上的一致性,
从而实现交叉轴与 longitudinal 的协同控制。我们选取Apollo项目中的相关数据作为案例,
展示交叉轴与 longitudinal 耦合关系的具体实现过程

一、背景介绍

自动驾驶技术将成为未来出行的重要趋势。然而,在解决诸多技术难题之前,必须先突破关键性障碍。其中之一就是如何实现对自动驾驶汽车运动的精确控制。通过横纵向耦合控制系统能够将横向与纵向运动有机融合,并通过这种整合关系实现更为精准的综合调控。在该系统中,横向运动主要关注车辆在车道内的位置掌控情况,而纵向运动则重点解决速度调节问题。当实施横纵向耦合控制系统时,则需要深入分析并有效应对系统中产生的动力学特性带来的误差影响,并采取相应措施减小这些影响。

二、基于动力学误差模型的mpc算法介绍

动力学误差模型是通过融合车辆的动力学特性与控制策略来实现更为精确的控制系统设计。常见于动力学误差模型有三种主要类型:即针对车辆自身特点设计的动力学模型;用于表征控制指令特性的控制量模型;以及定义系统限制条件的约束模型等。mpc算法作为预测控制技术的核心方法之一,在动态系统优化调控中发挥着重要作用:它通过预估系统的未来行为变化来确定最优调控指令:在实际应用中通常需要构建一个完整的预测模型:首先建立车辆的动力学模型:包括行驶速度、转向角度及横向偏移等多个关键参数;其次刻画系统的调控变量:如油门开度、制动强度及转向幅度;最后明确系统的运行限制条件:如最大行驶速度、加速度上限以及制动效能等各项技术指标。

三、基于mpc算法的横纵向耦合控制实现

为了达成横纵方向的协同控制目标,在实施横纵方向协同控制系统设计时

基于车辆的动力学特性与控制策略的综合运用而构建动力学误差模型

基于车辆的动力学误差模型来构建预测模型,并详细分析其在横向运动和纵向运动中的表现

3.求解最佳控制量 根据数学模型被确定为最佳值时的状态变量。

4.实现控制 将计算出来的控制量实现到汽车中,以实现横纵向耦合控制。

四、matlab与simulink联合仿真

为了达成横纵向耦合控制的协同仿真,在matlab/simulink联合仿真技术的应用中

在纵向控制方面,在完成油门刹车标定数据的基础上,请您继续追踪五次多项式换道轨迹。为了实现这一目标,在matlab中,请您编写如下代码

对五次多项式的换道轨迹进行跟踪;创建并保存位置值函数;时间变量 tt 由 linspace 函数在区间 [0, 2] 上生成,并乘以 T;位置值 s 被定义为各阶系数与时间变量 tt 的幂级数之和;速度值 sd 被计算为各阶系数与时间变量 tt 的乘积之和;加速度值 sdd 被计算为各阶系数与时间变量 tt 的乘积之和;基于当前状态及预期状态差分增量计算纵向控制量 Fdp

在本代码中,
ss被定义为五次多项式的系数,
而T则表示采样时间;
s0代表车辆的初始位置,
sd0则为车辆的初始速度。
其中kp与kd分别代表比例系数与微分系数;
m代表车辆的质量;
mg则是重力加速度。
通过执行该代码,
即可获得纵向控制量Fdp的值。

本研究采用基于车辆动力学模型的仿真方法结合基于模型预测控制的算法设计来实现横向控制功能。通过在matlab环境下开发了如下的Matlab代码来实现这一目标

%横向运动方程 dot_y=v sin(psi); dot_psi=v/L tan(deltaf); dot_v=a;

%建立动力学误差模型 x=[y; psi; v]; d=[deltaf; a]; dx=vehicleModel(x,d);

创建预测系统 reference=[ref_y, ref_psi, ref_v]; [xmpp, ump] = simulateMPC(vehicleModel, dx, reference);

%计算最优控制量 deltaf=ump(1); a=ump(2);

在本代码中: vehicleModel表示为车辆动力学模型; simulateMPC表示为模型预测控制算法。执行后即可获取横向制动力deltaf以及纵向加速度a的值。

五、面向对象编程和面向过程编程

当处理横向与纵向的耦合控制时

unique original article, please indicate the source when republishing

全部评论 (0)

还没有任何评论哟~