主要内容

使用非线性模型预测控制后巷

这个例子展示了如何设计一个lane-following控制器使用非线性模型预测控制器。在本例中,您:

  1. 设计一个非线性MPC控制器(NLMPC)后巷。

  2. 与自适应NLMPC MPC的性能进行比较。

介绍

lane-following系统是一个控制系统,使汽车旅行沿着高速公路车道中心线,同时保持一个用户集的速度。lane-following场景被描述如下图所示。

lane-following系统操纵纵向加速度和前面车辆的转向角:

  • 保持横向偏差e_1美元和相对偏航角e_2美元小。

  • 保持纵向速度V_x美元接近一个司机设定速度。

  • 平衡时,上述两个目标不能同时满足。

在一个单独的车道保持辅助的例子,假设纵向速度是恒定的。有关更多信息,请参见车道保持辅助系统使用模型预测控制。这一限制放松在这个例子中,因为纵向加速度变化MIMO控制系统。

lane-following增加另一个例子与间距控制系统,在一个安全的距离检测领先汽车也是维护。有关更多信息,请参见车道跟踪控制和传感器融合车道检测

仿真软件模型的概述万博1manbetx

打开仿真软件模型。万博1manbetx

mdl =“LaneFollowingNMPC”;open_system (mdl)

这个模型包含四个主要组件:

  1. 车辆动力学:应用自行车模式车辆横向动力学,使用时间常数近似纵向动力学\τ美元

  2. 传感器动态:近似一个传感器如相机计算横向偏差和相对偏航角。

  3. 车道控制器:模拟非线性MPC和适应性政策委员会。

  4. 曲率Previewer:在当前时间步检测曲率和曲率序列的预测地平线MPC控制器。

车辆动力学和传感器动力学中讨论更多的细节自适应巡航控制系统与传感器融合。这个例子同样适用于车辆和传感器的动力学模型。

车辆动力学参数和道路曲率

必要的车辆动力学和道路曲率参数定义使用LaneFollowingUsingNMPCData脚本是一个PreLoadFcn模型的回调。

设计非线性模型预测控制器

NLMPC有以下状态的连续时间预测模型和输出方程。中定义的状态方程LaneFollowingStateFcn

该预测模型包含一个无边无际的干扰(UD)模型。UD模型描述了什么类型的无边无际的扰动NLMPC希望遇到和拒绝。在这个例子中,UD模型是一个积分器的输入假定为白噪声。它的输出添加到相对偏航角。因此,控制器将随机状无边无际的扰动发生相对偏航角输出和准备拒绝的时候它会发生。

创建一个非线性MPC控制器的预测模型有7个州,三个输出,和两个输入。该模型有两个MV的信号:加速度和转向。道路曲率和纵向速度的乘积是建模为测量干扰,和无边无际的白噪声干扰建模。

nlobj = nlmpc (7 3“MV”(1 - 2),“医学博士”3,“UD”4);
在标准成本函数、零重量默认应用到一个或多个ov因为有MVs比ov少。

指定控制器样品时间,预测地平线,地平线和控制。

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 1 0 0, 0 0 0 0 0 1);

设置控制变量的约束。

nlobj.MV (1)。最小值= 3;%最大加速度3 m / s ^ 2nlobj.MV (1)。Max = 3;%最小加速度3 m / s ^ 2nlobj.MV (2)。最小值= -1.13;% -65最小转向角nlobj.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。ManipulatedVariablesRate = (0.3 - 0.1);

验证预测模型函数在任意操作点使用validateFcns命令。在这个操作要点:

  • x0包含状态值。

  • 情况包含输入值。

  • ref0包含引用值的输出。

  • md0包含测量干扰值。

25 x0 = (0.1 - 0.5 0.1 - 0.1 0.001 - 0.5);情况= (0.125 - 0.4);ref0 = [22 0 0];md0 = 0.1;validateFcns (nlobj x0,情况,md0, {}, ref0);
模型。StateFcn就可以了。雅可比矩阵。StateFcn就可以了。模型。OutputFcn就可以了。雅可比矩阵。OutputFcn就可以了。用户提供的模型分析、成本和约束函数完成。

在这个例子中,一个扩展卡尔曼滤波器(EKF)提供了七个州的状态估计。卡尔曼滤波器的状态转换函数中定义LaneFollowingEKFStateFcn,测量中定义的函数LaneFollowingEKFMeasFcn

设计自适应模型预测控制器

一种自适应MPC (AMPC)控制器设计使用路径跟踪控制系统阻塞在这个例子。本控制器使用线性模型的车辆动力学和在线更新模型纵向速度各不相同。

在实践中,只要一个线性控制解决方案如适应性政策委员会或gain-scheduled MPC能够实现可比对非线性MPC控制性能,可以实现线性控制解决方案,因为它是计算效率更高。

控制器的性能比较

比较的结果NLMPC AMPC,模拟模型和保存记录的数据。

首先,使用非线性MPC模拟模型。为此,集controller_type1

controller_type = 1;sim (mdl) logsout1 = logsout;

第二,使用自适应MPC模拟模型。为此,集controller_type2

controller_type = 2;sim (mdl) logsout2 = logsout;
假设没有干扰测量输出通道# 1。假设没有干扰测量输出通道# 2。- - >输出假设扰动添加到测量输出通道# 3是集成的白噪声。- - >”模型。噪音”属性是空的。假设白噪声在每个测量输出。

情节和仿真结果进行比较。

LaneFollowingCompareResults (logsout1 logsout2)

在第一个情节,非线性MPC和自适应MPC给几乎相同的转向角的概要文件。横向偏差和相对偏航角机动期间都接近于零。这个结果意味着车辆旅行所需的路径。

纵向控制命令和性能的非线性和自适应MPC略有不同。非线性MPC控制器平滑加速命令和更好的跟踪速度,虽然从适应性结果MPC也是可以接受的。

您还可以查看结果通过输出和输入模型的范围。

设置非线性MPC控制器变体。

controller_type = 1;

结论

这个例子展示了如何设计一个非线性模型预测控制器后巷。使用非线性MPC和自适应MPC的性能比较。您可以选择非线性MPC或适应性政策委员会根据建模为应用程序信息和计算能力。

%关闭仿真软件模万博1manbetx型bdclose (mdl)

另请参阅

|

相关的话题