文档

摆起控制使用非线性模型预测控制的钟摆

这个示例使用非线性模型预测控制器(非线性MPC)来实现倒立摆的摆起控制和平衡车。

产品要求

这个例子需要优化工具箱™解决非线性规划问题在每个时间间隔的控制。

如果~ mpcchecktoolboxinstalled (“optim”)disp (的优化工具箱需要运行这个例子。)返回结束

摆/车总成

工厂对于这个例子是一个摆/车装配,在哪里z车位置和吗θ摆角。这个系统的被控变量是一个变量F购物车。力的范围是-100年到100年之间。一个脉冲干扰dF可能发生,推动摆。

控制目标

假设的初始条件后摆/车组装:

  • 购物车是静止的z=0

  • 钟摆正处在一个向下的平衡位置θ=

控制目标是:

  • 摆起控制——最初摇摆摆一个倒置的平衡位置z=0θ=0

  • 车的位置参考跟踪——把车移到一个新的位置与定位点一步变化,保持摆倒。

  • 摆平衡——当一个脉冲干扰的大小2应用于倒立摆,摆平衡购物车并返回到原来的位置。

向下的平衡位置是稳定和反向平衡位置不稳定,这使得摆起控制更具挑战性的一个控制器,这是主要的原因,选择非线性MPC /线性MPC在这个例子。

控制结构

在这个例子中,使用非线性MPC与I / O配置如下:

  • 一个操纵变量,变量力(F)。

  • 两个测量输出——车位置(z)和摆角(θ)

另外两个州,马车速度(zdot)和摆角速度(thetadot没有可衡量的。

虽然购物车的定位点的位置,z可以改变,选点的摆角,θ,总是0(反向平衡位置)。

非线性植物模型

非线性模型预测控制的主要好处是,它使用非线性动力学模型来预测植物的行为在未来跨广泛的操作条件。

这种非线性模型通常是第一个原则模型组成的一组微分和代数方程(拓扑)。在这个例子中,购物车和摆动态系统中定义的pendulumCT0函数。更多细节,请参阅pendulumCT0.m

使用运行时模型预测在MPC,您需要一个ODE求解器计算植物状态x(k+ 1)从之前的状态x(k),输入u(k)。这是定义在解算器pendulumDT0函数。有关更多信息,请参见pendulumDT0.m。这个函数使用简单的欧拉方法的集成,因为它是更有效的与该植物常微分方程。你可以选择其他的颂歌解决,如:

  • ode23数值为了更好的精度。

  • ode15sode23s僵硬的常微分方程。

在这个例子中,因为只有两种状态是可衡量的,一个扩展的卡尔曼滤波块员工提供所有植物状态的非线性状态估计。其状态转换函数中定义pendulumStateFcn.m和它的测量中定义的函数pendulumMeasurementFcn.m

非线性MPC设计

像线性MPC,非线性MPC还解决了一个约束优化问题在每个时间间隔的控制。然而,由于植物模型是非线性,非线性MPC将最优控制问题转化为一个非线性优化问题的非线性成本函数和非线性约束。

在这个例子中使用的成本函数的定义pendulumObjectiveFCN函数。它类似于标准成本函数采用线性MPC,状态参考跟踪和操纵变量移动抑制在哪里执行。更多细节,请参阅pendulumObjectiveFCN.m

这个示例中使用的约束函数的定义pendulumConstraintFCN函数。车的位置是有限的范围-10年10。这些约束应用在预测地平线。更多细节,请参阅pendulumConstraintFCN.m

像线性MPC,样品时间和预测地平线应该选择提供satisfacory控制性能避免过度的计算工作。这个要求对于非线性MPC尤其重要,因为非线性优化执行在每个时间间隔的控制。

设置示例:

t = 0.1;

设置预测地平线:

N = 10;

在MATLAB®闭环仿真

simiulation的初始条件是:

  • 购物车是静止的z= 0。

  • 钟摆是一个向下的平衡位置,θ=

  • 力应用于车是零。

x =[0, 0, -π;0];uopt = 0 (N, 1);

x植物状态的参考选点,美国按照以下顺序-z,zdot,θ,thetadot

uopt在预测地平线输入的力概要文件。

在第一阶段的模拟,钟摆摆动从平衡位置向下一个倒置的平衡位置。国家参考这个阶段都是零。

xref1 = (0, 0, 0, 0);

一次的10,马车从位置05参考美国成为:

xref2 = [5, 0, 0, 0);

在这个例子中,计算最优控制序列,使用fmincon函数的优化工具箱为非线性规划求解器进行求解。选择序列二次规划(SQP)算法,它是最常见的一种方法在非线性MPC的应用程序。

选择= optimoptions (“fmincon”,“算法”,“sqp”,“显示”,“没有”);

运行仿真20.秒,使用fmincon非线性成本函数定义和约束函数,pendulumObjectiveFCNpendulumConstraintFCN,分别。MV的上下边界约束优化变量fmincon

时间= 20;%施加MV约束,因为力上下界限。磅= -100 *的(N - 1);乌兰巴托= 100 *的(N - 1);%开始模拟流(仿真开始。这可能需要一段时间…\ n ')xHistory = x;ct = 1:(20 / Ts)%设置引用。如果ct * Ts < 10 xref = xref1;其他的xref = xref2;结束%计算非线性MPC与全状态反馈(无状态估计量)COSTFUN = @ (u) pendulumObjectiveFCN (u, x, Ts, N, xref, uopt (1));CONSFUN = @ (u) pendulumConstraintFCN (u, x, Ts, N);uopt = fmincon (COSTFUN uopt,[],[],[],[],磅,乌兰巴托,CONSFUN,选项);%实现第一次最优控制移动和更新植物状态。x = pendulumDT0 (x, uopt (1) Ts);%保存植物状态显示。xHistory = [xHistory x];% #好< * AGROW >结束流(“模拟完成! \ n”)
仿真开始。这可能需要一段时间……仿真完成!

情节闭环响应。

图;次要情节(2 2 1);情节(0:Ts:持续时间、xHistory (1:));包含(“时间”);ylabel (“z”);标题(“车位置”);次要情节(2,2,2);情节(0:Ts:持续时间、xHistory (2:));包含(“时间”);ylabel (“zdot”);标题(“车速度”);次要情节(2、2、3);情节(0:Ts:持续时间、xHistory (3:));包含(“时间”);ylabel (“θ”);标题(“摆角”);次要情节(2、2、4);情节(0:Ts:持续时间、xHistory (4:));包含(“时间”);ylabel (“thetadot”);标题(“摆速度”);

摆角图显示,天平是成功了的时间2秒。在摆起过程中,购物车是流离失所的灵敏度1,回到原来的位置的时候3秒。

车的位置图显示,购物车成功举措z=5左右的时候3秒。在移动过程中,钟摆是流离失所的灵敏度-0.85弧度(49度),并返回一个倒置的平衡位置的时间3秒。

在闭环仿真模型®金宝app

这个例子也需要仿真软件软件来模拟非线性MPC控制摆模型金宝app的仿真软件。

如果~ mpcchecktoolboxinstalled (“金宝app模型”)disp (仿金宝app真软件(TR)需要运行这个例子。)返回结束

验证非线性MPC的闭环仿真模型。金宝app

mdlMPC =“mpc_pendcartNMPC”;open_system (mdlMPC);

运行仿真30.秒,使用fmincon作为一个非本征函数在非线性MPC MATLAB函数块。

open_system ([mdlMPC/范围的]);sim (mdlMPC);

模型中的非线性模拟产生相同的摆起和车位置跟踪结果相比,M金宝appATLAB仿真。另外,推(脉冲干扰dF)应用于倒立摆的20.秒。非线性MPC成功拒绝干扰并返回购物车z=5和钟摆倒置的平衡位置。

请注意,fmincon不支持代码生成。金宝app

结论

这个示例演示了一个通用工作流设计和模拟非线性MPC在MATLAB和Simulink仿真。金宝app根据特定的非线性植物的特点和控制要求,实现细节可以发生显著的变化。关键设计挑战包括:

  • 选择一个ODE求解器

  • 设计一个非线性状态估计量

  • 选择一个非线性优化求解器进行求解

  • 设计非线性成本函数和约束功能

您可以使用功能和仿真软件模型在这个例子作为其他非线性MPC模金宝app板设计和仿真任务。

bdclose (mdlMPC);
这个主题有帮助吗?