本例展示了如何使用非线性模型预测控制器块设计车道跟随控制器。在本例中,您可以:
设计了一种用于车道跟踪的非线性MPC控制器。
比较了NLMPC和自适应MPC的性能。
车道跟踪系统是一种控制系统,使车辆在高速公路车道的中心线上行驶,同时保持用户设定的速度。下面的图描述了车道跟踪的场景。
车道跟随系统操纵车辆的纵向加速度和前转向角度,以:
保持横向偏移和相对偏航角小。
保持纵向速度接近驾驶员设定的速度。
当上述两个目标无法同时实现时,平衡它们。
在另一个保持车道辅助的例子中,假设纵向速度是恒定的。有关更多信息,请参见基于模型预测控制的车道保持辅助系统.在这个例子中,由于纵向加速度在这个MIMO控制系统中是不同的,所以放宽了这个限制。
另一个例子是通过间距控制增强车道跟踪系统,与检测到的前车保持安全距离。有关更多信息,请参见基于传感器融合和车道检测的车道跟踪控制.
打开Simulin金宝appk模型。
mdl =“LaneFollowingNMPC”;开放式系统(mdl)
该模型包含四个主要组成部分:
车辆动力学:应用自行车模式横向车辆动力学,并使用时间常数近似纵向动力学.
传感器动力学:近似传感器,如摄像机,以计算横向偏差和相对偏航角。
车道跟踪控制器:模拟非线性MPC和自适应MPC。
曲率预览器:检测当前时间步长的曲率和MPC控制器预测范围内的曲率序列。
中详细讨论了车辆动力学和传感器动力学传感器融合的自适应巡航控制. 本示例对车辆和传感器动力学应用相同的模型。
必要的车辆动力学和道路曲率参数使用LaneFollowingUsingNMPCData
脚本是PreLoadFcn
模型的回调。
NLMPC的连续时间预测模型具有以下状态和输出方程。状态方程在中定义LaneFollowingStateFcn
.
预测模型包括未测量干扰(UD)模型。UD模型描述了NLMPC预计在电厂遇到和拒绝的未测量干扰类型。在本例中,UD模型是一个积分器,其输入假定为白噪声。其输出被添加到相对偏航角。因此,控制器期望在相对偏航角输出处出现随机阶跃式未测量干扰,并准备在发生时予以拒绝。
创建一个具有预测模型的非线性MPC控制器,该模型具有七个状态、三个输出和两个输入。该模型具有两个MV信号:加速度和转向。道路曲率和纵向速度的乘积被建模为测量的扰动,未测量的扰动被建模为白噪声。
nlobj=nlmpc(7,3,“MV”(1 - 2),“医学博士”3.“UD”4);
在标准成本函数中,默认情况下,零权重应用于一个或多个OV,因为MVs少于OVs。
指定控制器采样时间、预测范围和控制范围。
nlobj。Ts = t;nlobj。PredictionHorizon = 10;nlobj。ControlHorizon = 2;
指定非线性对象模型的状态函数及其雅可比矩阵。
nlobj.Model.StateFcn = @(x,u) LaneFollowingStateFcn(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 1 0 0 0;0 0 0 0 0 0;0 0 0 0 1 1];
设置操纵变量的约束。
nlobj.MV(1)。最小值= 3;%最大加速度3 m/s^2nlobj.MV(1)。Max = 3;%最小加速度-3米/秒^2nlobj.MV(2.Min=-1.13;%最小转向角-65nlobj.MV(2).最大值=1.13;%最大转向角65
设置比例因子。
nlobj.OV(1)。ScaleFactor = 15;%纵向速度的典型值nlobj.OV(2).标度因子=0.5;%横向偏移范围nlobj.OV(3).标度因子=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 10];
为了获得平稳的驾驶体验,应加大对加速度变化的惩罚力度。
nlobj.Weights.manipedvariablesrate=[0.3 0.1];
方法在任意操作点验证预测模型函数验证EFCNS
命令。在这个操作点:
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的状态转换函数在中定义LaneFollowingEKFStateFcn
,测量函数定义在LanefollowKfmeascn
.
在本实例中,利用路径跟踪控制系统模块设计了自适应MPC (AMPC)控制器。该控制器采用线性模型进行车辆动力学分析,并随纵向速度的变化在线更新模型。
在实践中,只要线性控制解决方案(如自适应MPC或增益调度MPC)能够实现与非线性MPC相当的控制性能,您就可以实现线性控制解决方案,因为它在计算效率上更高。
为了比较NLMPC和AMPC的结果,模拟模型并保存记录的数据。
首先,利用非线性MPC对模型进行仿真。为此,设置controller_type
来1
.
controller_type = 1;Sim (mdl) logsout1 = logsout;
其次,使用自适应MPC对模型进行仿真。为此,设置controller_type
来2
.
控制器类型=2;sim(mdl)logsout2=logsout;
假设对测量的输出通道#1没有增加任何干扰。假设没有干扰添加到测量输出通道#2。——>假设添加到测量输出通道#3的输出扰动为集成白噪声。——>”模式。mpc对象的Noise属性为空。假设每个测量输出通道上都有白噪声。
绘制并比较仿真结果。
LaneFollowingCompareResults (logsout1 logsout2)
在第一个图中,非线性MPC和自适应MPC给出几乎相同的转向角度剖面。在机动过程中,横向偏差和相对偏航角接近于零。这一结果表明车辆正沿着所期望的路径行驶。
非线性和自适应MPC的纵向控制指令和性能略有不同。非线性MPC控制器具有更平滑的加速度指令和更好的速度跟踪,尽管自适应MPC的结果也可以接受。
您还可以通过模型中的输出和输入范围查看结果。
将控制器变量设置为非线性MPC。
controller_type = 1;
这个例子展示了如何为车道跟随设计一个非线性模型预测控制器。比较了非线性预测控制和自适应预测控制的性能。您可以根据应用程序的建模信息和计算能力选择非线性MPC或自适应MPC。
%闭合Simul金宝appink模型bdclose(mdl)