基于非线性模型预测控制的车道跟踪
此示例显示了如何使用非线性模型预测控制器块设计通道后控制器。在这个例子中,你:
为车道设计一个非线性MPC控制器(NLMPC)。
比较NLMPC与自适应MPC的性能。
介绍
车道之后的系统是一种控制系统,其使车辆沿着高速公路车道的中心线行进,同时保持用户设定的速度。在下图中描绘了车道之后的情况。
车道跟随系统可以控制车辆的纵向加速度和前转向角度,达到以下目的:
保持横向偏差和相对的偏航角小。
保持纵向速度接近司机设定的速度。
当同时满足他们时,平衡上述两个目标。
在车道保持辅助的单独示例中,假设纵向速度是恒定的。有关详细信息,请参见使用模型预测控制的车道保持辅助系统.这个限制在这个例子中被放松了,因为在这个MIMO控制系统中纵向加速度是变化的。
另一个例子是增加了车道跟随系统的间距控制,即与检测到的领先车辆保持安全距离。有关详细信息,请参见随着传感器融合和车道检测控制后车道.
Simulink模型概述金宝app
打开Simulin金宝appk模型。
mdl ='lanefollowingnmpc';Open_System(MDL)
这个模型包含四个主要部分:
车辆动力学:应用自行车模式横向车辆动态,并使用时间常数近似纵向动力学.
传感器动力学:近似传感器,如相机,以计算横向偏差和相对偏航角。
车道后面控制器:模拟非线性MPC和Adaptive MPC。
曲率预览器:在MPC控制器的预测地平线上检测当前时间步处的曲率和曲率序列。
在更多细节中讨论了车辆动力学和传感器动力学具有传感器融合的自适应巡航控制.此示例适用于相同的车辆和传感器动态型号。
车辆动力学参数和道路曲率
使用必要的车辆动态和道路曲率参数使用LaneFollowingUsingNMPCData
脚本是一个PreLoadFcn
模型的回调。
设计非线性模型预测控制器
NLMPC的连续时间预测模型具有以下状态和输出方程。状态等式定义为lanefollowingstatefcn.
.
预测模型包括未测量的干扰(UD)模型。UD模型描述了不测量的扰动NLMPC期望在植物中遭遇和拒绝的类型。在该示例中,UD模型是具有其输入的集成器,假设是白噪声。其输出被添加到相对偏航角度。因此,控制器期望在相对横摆角输出处发生随机的阶梯式未测量干扰,并且准备在发生时拒绝它。
使用具有七个状态,三个输出和两个输入的预测模型创建非线性MPC控制器。该模型具有两个MV信号:加速和转向。道路曲率和纵向速度的乘积被建模为测量的干扰,并且通过白噪声模拟未测量的干扰。
nlobj = nlmpc(7,3,“MV”,[1 2],'MD',3,'UD'4);
在标准成本函数中,默认情况下,零重量施加到一个或多个OV,因为没有比OVS更少。
指定控制器采样时间,预测地平线和控制地平线。
nlobj.ts = ts;nlobj.predictionhorizon = 10;nlobj.controlhorizon = 2;
确定非线性对象模型的状态函数及其雅可比矩阵。
nlobj.model.statefcn = @(x,u)lanefollowstatefcn(x,u);nlobj.jacobian.statefcn = @(x,u)lanefollowingstatejacfcn(x,u);
指定非线性对象模型的输出函数及其雅可比矩阵。输出变量如下:
纵向速度
横向偏差
偏航角和偏航角输出扰动之和
nlobj.Model.OutputFcn = @ (x, u) [x (3); (5), (6) + x (7)];nlobj.Jacobian.OutputFcn = @(x,u) [0 0 0 0 0;0 0 0 0 0;0 0 0 0 0];
设置操纵变量的约束。
nlobj.MV(1)。最小值= 3;%最大加速度3米/秒^2nlobj.mv(1).max = 3;%最小加速-3 m / s ^ 2nlobj.mv(2).min = -1.13;%最小转向角-65nlobj.mv(2).max = 1.13;最大转向角度65
设置比例因子。
nlobj.OV(1)。ScaleFactor = 15;纵向速度的%典型值nlobj.ov(2).scalefactor = 0.5;横向偏差的%范围nlobj.ov(3).scalefactor = 0.5;相对偏航角的%范围nlobj.MV(1)。ScaleFactor = 6;%转向角度范围nlobj.MV(2)。ScaleFactor = 2.26;加速度范围nlobj.MD(1)。ScaleFactor = 0.2;曲率范围范围
在标准的MPC成本函数中指定权重。第三个输出,偏航角,允许浮动,因为只有两个操纵变量使它成为一个正方形系统。在这个例子中,只要第二次输出,横向偏差,在稳定状态下达到0,在偏航角中就没有稳态误差。
nlobj.weights.outputvariables = [1 1 0];
惩罚加速度更换,以便更平稳的驾驶经验。
nlobj.weights.manipuldvariablesrate = [0.3 0.1];
方法在任意操作点验证预测模型函数验证FCNS.
命令。在此操作点:
x0
包含状态值。情况
包含输入值。ref0.
包含输出参考值。MD0.
包含测量的干扰值。
X0 = [0.1 0.5 25 0.1 0.1 0.001 0.5];U0 = [0.125 0.4];Ref0 = [22 0 0];md0 = 0.1;validateFcns (nlobj x0,情况,md0, {}, ref0);
模型。StateFcn就可以了。雅可比矩阵。StateFcn就可以了。模型。OutputFcn就可以了。雅可比矩阵。OutputFcn就可以了。完成了用户提供的模型、成本和约束函数的分析。
在该示例中,扩展的卡尔曼滤波器(EKF)提供了七个状态的状态估计。ekf的状态转换函数定义为lanefleadingekfstatefcn.
,测量函数定义为lanefleadingekfmeasfcn.
.
设计自适应模型预测控制器
在本例中,利用路径跟踪控制系统模块设计了自适应MPC (AMPC)控制器。该控制器采用线性车辆动力学模型,并在纵向速度变化时在线更新模型。
在实践中,只要是自适应MPC或增益预定的MPC等线性控制解决方案可以实现对非线性MPC的可比控制性能,您将实现线性控制解决方案,因为它更加计算效率。
控制器的性能比较
为了比较NLMPC和AMPC的结果,对模型进行了模拟,并保存了日志数据。
首先,使用非线性MPC模拟模型。为此,设置Controller_type.
来1
.
controller_type = 1;Sim (mdl) logsout1 = logsout;
其次,利用自适应MPC对模型进行仿真。为此,设置Controller_type.
来2
.
controller_type = 2;SIM(MDL)logsout2 = logsout;
假设没有添加到测量的输出通道#1的干扰。假设没有添加到测量的输出通道#2中的干扰。- >假设添加到测量的输出干扰,输出通道#3是集成的白噪声。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。
绘图并比较仿真结果。
LaneFollowingCompareResults (logsout1 logsout2)
在第一个图中,非线性MPC和自适应MPC给出了几乎相同的转向角剖面。在机动过程中,横向偏差和相对偏航角接近于零。这一结果意味着车辆沿着所期望的路径行驶。
非线性和自适应MPC的纵向控制指令和性能略有不同。非线性MPC控制器具有更平滑的加速度指令和更好的速度跟踪,而自适应MPC控制器的结果也是可以接受的。
您还可以通过模型中的输出范围查看结果。
将控制器变型设置为非线性MPC。
controller_type = 1;
结论
此示例显示了如何为车道设计一个非线性模型预测控制器。比较使用非线性MPC和Adaptive MPC的性能。您可以根据应用程序的建模信息和计算电源选择非线性MPC或Adaptive MPC。
%关闭Simul金宝appink模型BdClose(MDL)