购物车倒立摆的时变MPC控制

这个例子展示了如何使用线性时变模型预测控制器(LTV MPC)来控制购物车上的倒立摆。

产品要求

这个例子需要Simulink®软件来模拟非线金宝app性摆模型。

如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp (运金宝app行这个例子需要Simulink (R)。)返回结束

摆/车总成

本例中的工厂是如下的摆/车组装,其中z车的位置和θ是摆角。

这个系统的操作变量是一个变力F在车里表演。力的范围在-100到100之间。控制器需要保持钟摆直立,同时移动小车到一个新的位置或当钟摆被一个脉冲干扰推动前进dF适用于倒立摆的上端。

控制目标

假设摆锤/推车装配的初始条件如下:

  • 这辆大车停在z=0

  • 倒立摆是立着不动的θ=0

控制目标为:

  • 购物车可以移动到一个新的位置之间-20年20.通过改变步长设定值。

  • 当跟踪这样的设定值变化时,上升时间(对于性能)应该小于4秒,超调应该小于10百分比(鲁棒性)。

  • 的脉冲扰动时4应用于钟摆时,小车和钟摆应以较小的位移恢复到原来的位置。

倒立摆是一种不稳定的平衡状态,使控制任务更具挑战性。

时变MPC的选择

控制一个倒立摆上的车,单个MPC控制器能够将购物车移动到一个新的位置之间-10年10。但是,如果将步骤设置点更改为20.,钟摆在过渡过程中不能恢复它的垂直位置。

为了在相同的上升时间内达到较长的距离,控制器在开始时对小车施加更大的力。结果,钟摆被一个更大的角度所取代60度。在这样的角度下,植物动力学与LTI预测模型有显著的差异θ=0。结果,预测植物行为的误差超过了内置MPC鲁棒性所能处理的范围,控制器也无法正常运行。

为了避免钟摆下降,一个简单的解决方法是通过添加软输出约束来限制钟摆的位移θ降低约束软化时的ECR权值。

mpcobj.OV (2)。Min = -π/ 2;mpcobj.OV (2)。Max =π/ 2;mpcobj.Weights。ECR = 100;

但是,有了这些新的控制器设置,就不可能在要求的上升时间内达到较长的距离。换句话说,牺牲控制器性能是为了避免违反软输出约束。

将购物车移动到一个新的位置-20年20.在保持相同上升时间的同时,控制器需要在不同角度上有更精确的模型,以便控制器能够更好地进行预测。自适应MPC允许您通过在运行时更新线性时变的工厂模型来解决非线性控制问题。

控制结构

在这个例子中,使用一个LTV MPC控制器:

  • 一个操纵变量:变力F

  • 两个测量输出:购物车位置z和摆角θ

mdlMPC =“mpc_pendcartLTVMPC”;open_system (mdlMPC);

因为所有的植物状态都是可测量的,所以它们被直接用于自适应MPC块中的自定义估计状态。

当小车位置设定值变化时(步长输入),摆角设定值不变(0=直立位置)。

线性时变植物模型

在每个控制区间,LTV MPC要求从当前时间开始的每个预测步骤都有一个线性工厂模型k时间k + p,在那里p是预测层。

在这个例子中,小车和摆锤的动态系统是由第一原理模型描述的。该模型由一组微分和代数方程(DAEs)组成,定义为pendulumCT函数。有关更多细节,请参见pendulumCT.m

Simulink模型中的连续线性化块在运行时生成LTV模型。金宝app在每个预测步骤中,块获取状态空间矩阵一个,B,C,D在连续时间中使用雅可比矩阵,然后将其转换为离散时间值。初始植物状态x(k)直接从植物中测量。该植物输入序列包含MPC控制器在前一个控制区间内生成的最优运动。

自适应MPC设计

MPC控制器设计在其名义平衡工作点。

x0 = 0 (4,1);情况= 0 (1,1);

分析地获得一个线性植物模型使用ode。

[~,~,A,B,C,D] =摆数(x0, u0);植物= ss(A,B,C([1 3],:),D([1 3],:));位置和角度

对于不稳定对象的控制,控制器采样时间不能太大(干扰抑制能力差)或太小(计算负荷过大)。同样地,预测范围不能太长(以植物不稳定模式为主),也不能太短(违反约束是不可预见的)。在这个例子中使用以下参数:

t = 0.01;PredictionHorizon = 60;ControlHorizon = 3;

创建MPC控制器。

mpcobj = mpc(汇集(植物、Ts), Ts, PredictionHorizon, ControlHorizon);
- - >“权重。操作变量“mpc”对象的属性为空。假设默认的0.00000。- - >“权重。“mpc”对象的“操作可变率”属性为空。假设默认的0.10000。- - >“权重。“mpc”对象的“OutputVariables”属性为空。假设默认的1.00000。输出y1,输出y2为零权值

对购物车可以施加多大的力有一个限制,这是使用操作变量上的硬约束指定的F

mpcobj.MV。最小值= -100;mpcobj.MV。Max = 100;

在设计权重之前对工厂的投入和产出进行标度是一个很好的做法。在这种情况下,由于被操作变量的范围比工厂输出的范围大两个数量级,因此将MV输入按比例缩放One hundred.

mpcobj.MV。ScaleFactor = 100;

为了提高控制器的鲁棒性,增加了对MV变化率的权重0.11

mpcobj.Weights。MVRate = 1;

为了达到平衡的性能,调整工厂输出的权重。第一个重量与购物车位置相关z,第二个权值与角度有关θ

mpcobj.Weights。OV = [0.6 1.2];

用增益作为摆角的输出扰动模型。这代表了短期内的迅速变化。

setoutdist (mpcobj“模型”,(0;tf (1)));

使用自定义状态估计,因为所有的植物状态都是可测量的。

setEstimator (mpcobj“自定义”);

闭环仿真

用Simulink中的闭环仿真验证了MPC的设计。金宝app

open_system ([mdlMPC/范围的]);sim (mdlMPC)
- - >”模型。“mpc”对象的“噪音”属性为空。假设每个测量的输出通道上都有白噪声。

在非线性仿真中,成功地实现了所有的控制目标。

bdclose (mdlMPC);

另请参阅

相关的话题