车辆保持的目的是通过检测到车辆与道路中心线的横向偏差和横摆角偏差来控制车辆的方向盘的转角,最终使车辆行驶在道路中心线上。

MATLAB 2018b中有一个关于车道保持的案例,本次设计模型控制算法部分与案例相同,但是车辆对象采用Carsim中的车辆模型。整个基于模型预测控制的车道保持系统simulink仿真框架如下所示

图 1

在实际的车辆保持控制算法中可用惯性测量单元IMU测量纵向速度 、横向速度、横向加速度、横摆角速度 等参数。可通过摄像头获取横向偏差,也可以通过摄像头预瞄的点计算出道路的曲率。

车辆的动力学模型

MATLAB 2018b中关于车道保持的案例采用的模型预测控制实现车辆的横向控制,其动力学模型及其推导过程如下

最原始的状态变量为横向距离变化率和横摆角速度变化率,输入变量车辆的前轮偏角为

(1)

将上述公式拓展输出变量为,输入变量为新的状态空间方程为

(2)

(3)

将公式(2)带入公式(3)

选取的状态变量 ,输入变量为

(4)

注:公式(2)和公式(4)将将期望横摆角的变化率作为输入,实际上期望横摆角的变化率是一个扰动量,在MATLAB2018中输入量和扰动量放在一起,这一点在下一节中也会提到。

MPC的实现

模型预测控制主要包含三大部分:模型预测、滚动优化和反馈矫正。常规的模型预测控制的框架如下所示。

图 2

模型预测

公式(4)为对车辆进行模型预测控制需要的连续车辆横向动力学模型。为了在计算机中实现需要对公式(4)的模型进行离散化,在MATLAB 2018b的getDiscrete函数中采用Simpson's rule 计算,,在实际车辆控制中为了实现的方便性建议中采用双积分变换求解具体实现如下所示

在公式(4)的状态空间方程中,对应的横向偏差及变化率,横摆角偏差及变化率的计算如下所示。

期望的横摆角速度 ,车辆实际的偏航角速度通过IMU测量得到。从而得到横摆角速度偏差。横摆角偏差通过横摆角速度偏差求积分得到。

横向偏差的变化率,横向偏差 通过横向偏差的变化率求积分得到。横向偏差和横摆角的偏差如图3所示。实际这么求解横向偏差和偏航角偏差是否有问题?

图3

根据道路中心线的坐标计算出道路中心线曲率的时间序列,根据当前的时间和预瞄的长度,从上述时间序列中取出当前的曲率和预瞄时间内需要的曲率。在Curvature Previewer模块中实现上述功能。

航向角偏差通过本车的航向角、纵向速度、曲率计算得到。期望的航向角计算的方法,期望的航向角为在期望位置的切线与X轴之间的夹角。

如果是双移线工况

可以通过上述公式直接计算出期望的航向角。如果能够事先获得参考轨迹的Xref,Yref坐标则可以通过另外一种方法计算期望航向角,具体如下所示。

DX = gradient(Xref,Ts);

DY = gradient(Yref,Ts);

head_angle = atan2(DY,DX);

Matlab中对应状态空间方程的表示形式,控制量、可测量的扰动,以及不可测量的扰动对应矩阵都是放在B中。

在MPC控制作为模型预测的模型中,期望的航向角速度时作为测量扰动。

获得离散后的车辆状态空间模型后,通过不断的迭代就可以得到模型的预测输出。

在MATLAB 2018b的案例中获得模型预测控制需要的状态空间模型在lkablock_utilGetDiscreteModelForMPC函数实现。

[mpcobj,UseExternalModel,DataType,NumEgoStates,hasLag] = ...

lkablock_MaskInitFcn(gcb,EgoModelMatrixA,EgoModelMatrixB,EgoModelMatrixC,...

MaxSteering,MinSteering,...

InitialLongVel,...

PredictionHorizon,Ts,maxiter,ControllerBehavior,...    VehicleMass,VehicleYawInertia,LengthToFront,LengthToRear,FrontTireStiffness,RearTireStiffness,TransportLag);

MPC控制是采用simulink中的Model Predictive Control Toolbox工具箱中的Adaptive MPC Controller模块来实现的。

控制相关的参数如下所示

名称

Ts

0.1s

m

1575kg

Iz

2875kg.m2

If

1.2m

Ir

1.6m

Cf

68623 N/rad

Cr

533911 N/rad

Np

10

Nu

2

R1

0

R2

0.1/alpha

Q

[1 0.1]/alpha

Umax

0.5rad

Umin

-0.5rad

滚动优化

得到车辆模型在预测时域内的预测输出后,建立模型预测输出与期望输出之间的偏差和控制量及其变化率的二次型目标函数,具体如下所示。通过二次规划的方法可以求解出最优的控制量即前轮偏角。由于期望的输出是横向偏差和横摆角偏差,所以期望的输出值为0。

通过在每个控制周期不断地求解最优的控制量,形成滚动优化过程。

反馈矫正

反馈矫正是通过比较模型输出与实际对象输出之间的偏差来修正模型的预测输出,这一点在目前的MATLAB 的车道保持案例中暂未体现出来。

MPC 控制参数调节

MPC的控制参数通过Mask->View base mask->Initialization中调用lkablock_MaskInitFcn函数实现的。权重参数、预测时域、控制时域等在lkablock_MaskInitFcn函数中的子函数generateMPC中设置。

整个权重参数的调节是通过一个基本参数beta来调节,其值在0-1之间可调,具体计算如下所示。

weightrange = 50;

alpha =1 /weightrange^(beta-0.5);

控制量变化率的权重为0.1*alpha, 输出偏差的权重为[1 0.1]/Alpha。

当beta往1变大时,alpha变小,控制量变化率的权重系数变小,输出偏差的权重系数变大,控制量变化率变大,控制很激进。当beta往0变小时,alpha变大,控制量变化率的权重系数变大,输出偏差的权重系数变小,控制量变化率变小,控制相对来说变得缓慢。详细的参数调节对应的MATLAB程序如下所示。

% Specify the MPC signal types in the plant.

sys = setmpcsignals(sys,'MV',1,'MD',2);

%% MPC Design

mpc1 = mpc(sys,Ts);

% Specify the prediction horizon.

mpc1.PredictionHorizon = psteps;

% Specify the control horizon.

mpc1.ControlHorizon = round(max(0.1*mpc1.PredictionHorizon,2)); //控制时域

% Specify MV constraints: max/min acceleraion.

mpc1.MV.Min = umin;

mpc1.MV.Max = umax;

% Specify scale factors based on the operating ranges of the variables.

mpc1.MV.ScaleFactor = umax-umin; % range of the steering angle

mpc1.DV.ScaleFactor = 0.01; % scale factor of road yaw angle rate

mpc1.OV(1).ScaleFactor = 0.5; % scale factor of lateral deviation w.r.t road

mpc1.OV(2).ScaleFactor = 0.1; % scale factor of relative yaw angle w.r.t. road

% Specify weights.

alpha = getWeightParam(weightratio); % relating slider on mask to weights in MPC design

mpc1.Weights.MVRate = 0.1*alpha;

mpc1.Weights.OV = [1 0.1]/alpha; % tighter control on lateral deviation over relative yaw angle

ScaleFactor 的作用是在优化的目标函数中将控制量和输出量统一成一样的范围,方便调节输出权重和控制权重。

总结

本文介绍MATLAB的基于MPC的车道保持控制案例的实现过程,并将实际的车辆对象通过Carsim中的车辆仿真对象进行替代,最后重点介绍了MATLAB中关于模型预测控制的参数调节方法。

基于模型预测控制(MPC)的车道保持控制实现方法相关推荐

  1. 【控制control】机器人运动控制器----基于模型预测控制MPC方法

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.模型预测控制(MPC)的介绍及构成 1.介绍 2.构成 二.模型 ...

  2. 基于模型预测控制(MPC)的悬架系统仿真分析

    目录 前言 1.悬架系统 2.基于MPC的悬架系统仿真分析 2.1 simulink模型 2.2仿真结果 2.2.1 随机C级路面 2.2.2 正弦路面 2.3 结论 3 总结 前言 模型预测控制是无 ...

  3. 基于模型预测控制MPC的光伏并网系统设计|太阳能发电|模型预测控制

    本课题提出一种基于最大功率点跟踪与有限集模型预测控制结合的光伏并网逆变策略,首先,针对模型预测控制算法在电网模型预测与控制时域中实时性不足等问题,引用快速求解MATMPC工具箱,降低MPC算法的单轮运 ...

  4. 【无人船】基于模型预测控制(MPC)对USV进行自主控制(Matlab代码实现)

  5. 基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能

    基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能(acc自适应巡航),包含simulink模型(其中有车辆逆纵向动力学 ...

  6. 【控制】《复杂运动体系统的分布式协同控制与优化》-方浩老师-第10章-基于模型预测控制的人机协同控制

    第9章 回到目录 第11章 第10章-基于模型预测控制的人机协同控制 10.1 引言 同时干预问题 10.2 问题描述 10.3 基于模型预测的人机协同控制器设计 模型预测控制 10.3.1 基于模型 ...

  7. 基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能(acc自适应巡航)

    基于模型预测控制(自带的mpc模块)和最优控制理论的Carsim与Matlab/simulink联合仿真实现汽车主动避撞和跟车功能(acc自适应巡航) :7430669302617414一無所有`

  8. 基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发

    基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发,文复现. MATLAB 基于扩展卡尔曼滤波EKF和模型预测控制MPC,自动泊车场景建模开发,文复现. MATLAB(工程项目线上支持 ...

  9. 模型预测控制_模型预测控制(MPC)算法之一MAC算法

    引言 随着自动驾驶技术以及机器人控制技术的不断发展及逐渐火热,模型预测控制(MPC)算法作为一种先进的控制算法,其应用范围与领域得到了进一步拓展与延伸.目前提出的模型预测控制算法主要有基于非参数模型的 ...

最新文章

  1. 使用Python的库qrcode生成二维码
  2. java--String与int相互转换
  3. DNS服务(二)——常用资源记录类型详解
  4. git设置忽略文件和目录
  5. python基础-文件操作(10)
  6. LEANSOFT领航员 – 基于Docker的DevOps实战培训
  7. Visual C++实现定制标题栏
  8. datetime的文本时间处理
  9. [蓝桥] 基础练习 十六进制转十进制
  10. CASS9.1计算土方量实例
  11. ubuntu:磁盘清理
  12. WPF 动态添加控件以及样式字典的引用(Style introduction)
  13. 不要重启!诺顿居然将系统文件当病毒
  14. WinRAR授权/激活(购买许可)
  15. 戴尔r410服务器虚拟磁盘,DELL服务器R410原装 SAS 6/IR RAID卡 阵列控制器卡 支持RAID0,1...
  16. D3 天眼查 股权结构图
  17. 项目管理:目标的价值表现的四个方面
  18. 回顾一年的IT学习历程与大学生活
  19. 电脑断电后,突然无线有线网卡无法使用
  20. JAVA数组自动排序

热门文章

  1. 操作系统——OrangeS
  2. 树莓派linux系统识别u盘启动,树莓派3 U盘启动方案
  3. 【IDL代码模块】提取文件名中的部分字符串
  4. Trimble Tekla Structures 2022 SP7
  5. 传感器——ATGM332D 北斗定位模块
  6. 爬取摄图网里的 音乐和视频 摄图网模拟登陆
  7. 浅析PoE技术与视频监控传输市场
  8. ES之分析器(Analyzer)
  9. fiddler 抓ios app包
  10. 【linux】网卡驱动框架介绍