Advertisement

MPC(模型预测控制)-Simulink仿真

阅读量:

文章目录

  • 一、采用MPC控制器的原因是什么?

    • 二、简述MPC控制器的概念是什么?
    • 三、如何配置MPC控制器的相关参数?
      • 3.1 采样周期设定
      • 3.2 预测区间与控制区间的选择
      • 3.3 系统限制条件设定
      • 3.4 权重分配方案
  • 四、自适应增益调度策略与非线性MPC控制

  • 五、基于Simulink的MPC控制器仿真系统

    • 5.1 理论分析与算法推导
  • 5.2 仿真实验设计与结果验证

一、为什么使用MPC控制器?

① MPC可以处理多输入耦合控制多输出的问题:

在这里插入图片描述

② MPC可以处理对于控制量有约束的问题

比如,驾驶汽车的时候,汽车速度和转角都有上限

③ MPC具有预测效果

即MPC并非仅以当前时间段内的参考输入来决定当前系统的操作(u_t),而是在预估未来\Delta T时间段内所需的参考输入序列\{r_{t},...,r_{t+\Delta T-1}\}的基础上求解最佳操作量序列\{u_t,...,u_{t+\Delta T-1}\}。例如,在车辆转向操作中,则可通过预判未来时间段内所需的状态和路径信息来推导出目前应采取的最佳转向角调整量。从而能够有效规避因过度急转向而导致的风险。

在这里插入图片描述

MPC计算资源消耗略高于其他控制方法,在动态预测精度方面表现更为突出。具体而言,在MPC控制过程中每个采样周期内都需要求解具有相同结构但参数不同的优化模型。

二、什么是MPC控制器?

在这里插入图片描述
  • 小车的数学模型:
在这里插入图片描述
item inputs outputs
Plant Model(被控对象的数学模型) 之后m个控制量 之后p个时间步的预测输出
  • 优化器:
在这里插入图片描述
item inputs outputs
优化器 (数学模型, 之后p个时间步的参考轨迹, 约束条件) 之后m个控制量

​ 优化器要考虑两点:

​ ① 预测轨迹与参考轨迹偏差最小

​ ②控制量不突变
Cost Function \doteq J = \sum_{i=1}^{p} w_e e_{k+i}^2 + \sum_{i=0}^{p-1} w_{\Delta u} {\Delta u_{k+i}}^2

然而优化器计算了未来p个时间段内的控制指令,在当前时间段内。
MPC仅将这个最有序列的第一步被应用于汽车上而忽略了剩下的所有步骤。

三、MPC控制器的参数如何设置?

参数既会影响控制器的性能,又会影响计算复杂度。

MPC主要的参数如下: * ① 采样时间
* ② 预测范围、控制范围
* ③ 约束
* ④ 损失函数的权重

3.1 采样时间

采样时间过大,当干扰发生,控制器无法做出及时的反应。

采样时间过小,会导致过多的计算负载。

在这里插入图片描述

可以测量系统的阶跃响应,根据上升时间选择采样时间

3.2 预测范围、控制范围

我们应该选择一个涵盖系统重要动态的预测范围

预测范围过短,无法及时反映,可能会在弯道处急转弯

预测范围过长,之后的不可预测事件可能会白白浪费算力。

我们通常选择 20-30个样本覆盖系统的动态响应,如下图:

在这里插入图片描述

一般而言,在预测任务中,前期几步的控制尤为关键(因为这些步骤必须引导趋向参考轨迹,并维持后续步骤的稳定性),由此可见,在实际应用中若选择较大的控制范围,则必然会带来显著的计算复杂度增加。

经验法则: 控制范围 = 10%~20% × 预测范围

3.3 约束条件

可以对 控制量、控制量变化率、状态量进行约束

约束分为硬约束和软约束,无法违反的(比如最大车速)叫硬约束

软约束可以违反,但我们不希望违反,可以把它设计到损失函数之中

建议采取输出约束设为软约束策略,并不建议对控制量及其变化率进行硬性设定。这可能造成系统无法求解问题

3.4 权重

损失函数由多个部分组成,需要设置权重

例如最基本的情况,在我们的研究中我们期望预测的轨迹与参考轨迹高度一致,并且在控制过程中确保控制量的变化过程较为平稳。

四、自适应增益调度和非线性MPC

在这里插入图片描述

对于满足以下条件的线性系统:具有线性约束时间不变的约束条件,则允许采用线性时间不变MPC控制器来解决相应的优化任务

在这里插入图片描述

但是如果系统是非线性的,就要使用自适应MPC、时间表MPC

自适应MPC:具体思路是在非线性模型的各个工作点,建立多套线性模型

自适应MPC的线性模型在不同工作点上的形式与超参数设置一致,并非主要区别仅在于矩阵参数的不同

在这里插入图片描述

时间表MPC: 根据不同的工作点需求, 应配置不同规模的超参数组合(如控制量数目、预测步长等)的模型

在这里插入图片描述

当是非线性时,则该优化问题将转化为多个极值点的非凸优化问题,并且变得较为复杂。

在这里插入图片描述

五、Simulink仿真MPC控制器

在这里插入图片描述
item value
输出量(状态量) (横向位置Y、偏航角\phi)
控制量 (前轮转角delta)

假定V_x恒为15m/s , 使用线性化汽车模型\\

模型下载位置:https://www.mathworks.com/matlabcentral/file-exchange/68992-designing-an-mpc-controller-with-simulink?s_eid=PSM_15028

在MATLAB界面中,默认设置下必须指定模型相关的文件夹作为路径设置。如果设置错误可能会导致plant和reference的相关标志无法正确加载显示(可能会以问号形式表示缺失),并且直接运行程序将导致系统报错提示

具体操作内容:https://ww2.mathworks.cn/help/releases/R2017b/mpc/examples/autonomous-vehicle-steering-using-model-predictive-control.html

5.1 数学分析

下面依次介绍各个模块:

① Plant: 车辆线性模型

右键Plant模块,选择Block Parameters:

在这里插入图片描述
变量 含义
V_x 小车平行于车身向前的速度
m 小车总质量
I_z Yaw夹角转动惯量(绕小车中心旋转的转动惯量)
l_f 小车质心到前轮的距离
l_r 小车质心到前轮的距离
C_{\alpha} 汽车转角刚度((轮胎侧偏角的单位增量所对应的横向力的增量) (N/rad)
\psi Yaw角

小车属于模制的自行车(bicycle model with two degrees of freedom),并且其中V_x始终保持在15 m/s

在这里插入图片描述

原理(1): 前轮的运动等于前轮相对车身的运动会加上车身相对质心处产生的旋转状态以及小车重心相对地面所呈现的运动会

原理(2): \Delta 轮胎受到垂直于车身的力 = C_{r}(或者C_{l} ) \Delta 轮胎转角

在将小车模型转换为自行车模型的过程中,请注意以下要点:当采用自行车作为运动载体时(即用自行车替代小汽车作为研究对象),由于车辆行驶方式的不同(由四轮驱动转变为仅两轮驱动),因此对应的空气动力学参数也需要相应调整。具体来说,在这种情况下C_f值应当是原有C_f值的两倍(即C_{f, \text{cycle}} = 2 C_{f,\text{auto}}})。

进行动力学分析:
由于\psi较小,简化为线性模型即: \dot{Y} = V_x \psi + V_y \quad [公式一]\\
\Delta 前轮相对于车身转角 = (\frac{V_y + \dot{\psi}l_f}{V_x}) \\ \Delta 后轮相对于车身转角 = (- \frac{V_y - \dot{\psi}l_r}{V_x}) \\ \Rightarrow \\ 前轮受到垂直于车身的力 = 2C_{f} (-\psi + \delta + \Delta 前轮相对于车身转角) \\ 后轮受到垂直于车身的力 = 2C_{r} (-\psi + \Delta 后轮相对于车身转角)\\ \Rightarrow \\ 根据[公式一]: \\ m \ddot{y} = -mV_x \dot{\psi} - m\dot{V_y}\\ m\dot{V_y}=前轮受到垂直于车身的力 + 后轮受到垂直于车身的力 \\ \Rightarrow m\ddot{y} = - m V_x \dot{\psi} + 2C_f[-\psi +\delta - \frac{V_y + \dot{\psi}l_f}{V_x}] +2 C_r (-\psi - \frac{V_y - \dot{\psi}l_r}{V_x}) \\ 将 [公式一]代入到上式: \\ {\color{Red}\ddot{y} = -\frac{2C_f+2C_r}{mV_x}\dot{y} -(V_x+\frac{2C_fl_f-2C_rl_r}{mV_x}) \dot{\psi} + \frac{2C_{\alpha} \delta}{m} \quad [公式二] }

推导出小车模型的状态空间表达式为:

\frac{d}{dt} \begin{bmatrix} \dot{y} \\ \psi \\ \dot{\psi} \end{bmatrix} = \begin{bmatrix} -\frac{2C_f + 2C_r}{mV_x} & 0 & -(V_x + \frac{2C_f l_f - 2C_r l_r}{mV_x}) \\ 0 & 0 & 1 \\ -\frac{2l_f C_f - 2l_r C_r}{I_z V_x} & 0 & -\frac{2l_f^2 C_f + 2l_r^2 C_r}{I_z V_x} \end{bmatrix} \begin{bmatrix} \dot{y} \\ \psi \\ \dot{\psi} \end{bmatrix} + \begin{bmatrix} 2\frac{C_f}{m} \\ 0 \\ \frac{2l_f C_f}{I_z} \end{bmatrix}\delta

其中正是来自Parameters中的A、B、C、D矩阵

5.2 实验过程

导入矩阵和参考轨迹参数,双击Params.mat即可:

在这里插入图片描述

需要更换参考轨迹的话,参考以下方法生成新的posRef和yawRef

打开APP->Driving Scenario designer->选择道路和参考轨迹

在这里插入图片描述

开始仿真:

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~