MPC算法
引言\n\n模型预测控制(MPC)是一种控制方法,在每个控制周期内解决优化问题,以确定基于给定车辆模型的最优控制序列。计算得到的控制输入序列用于控制系统。
简单来说,MPC控制器计算一系列控制输入,以优化状态和输出轨迹,达到期望的行为。MPC控制系统的关键特性可以总结为以下几点:
未来轨迹预测:MPC通过预测未来状态和输出轨迹来计算控制序列。第一个控制输入应用于系统,并在每个控制周期中以滚动时间窗的方式重复此过程。
约束处理:MPC能够在优化阶段处理状态和输入变量的约束,确保系统在规定的限制内运行。
复杂动态处理:MPC算法可以处理复杂的动力学,无论是线性还是非线性。
选择线性或非线性模型或约束方程取决于MPC问题的具体形式。如果运动方程或约束中存在任何非线性表达式,优化问题就变为非线性。在接下来的章节中,我们将逐步解释如何在MPC框架内解决线性和非线性优化问题。请注意,在本文件中,我们利用线性化方法来适应非线性模型。
线性MPC的公式化
公式化为优化问题
本节专门介绍线性系统的MPC。在下一节中,还将展示作为应用的车辆路径跟随问题的公式化。
在线性MPC公式化中,所有运动和约束表达式都是线性的。对于路径跟随问题,假设系统的运动可以通过一组方程来描述,称为(1)。状态演变和测量以离散状态空间格式呈现,其中矩阵、和分别表示状态转移、控制和测量矩阵。
方程(1)表示状态空间方程,其中表示内部状态,表示输入,表示由线性化或问题结构引起的已知干扰。测量由变量表示。
值得注意的是,MPC的另一个优点是能够有效处理干扰项。虽然在这里称其为干扰,但只要遵循方程的结构,它可以采取多种形式。
方程(1)中的状态转移和测量方程是迭代的,从时间移至时间。通过从初始状态和控制对出发,并结合指定的预测步数,可以预测状态和测量的轨迹。
为简化起见,假设初始状态为且。\n\n首先,我们可以使用方程(1)计算时的状态,将初始状态代入方程。由于我们正在寻找输入序列的解,我们将输入表示为符号表达式中的决策变量。
然后,当时,使用方程(2),我们得到
当时,从方程(3)可得
如果,那么
将(2)到(5)中的所有方程结合在一起,得到以下矩阵方程:
在这种情况下,测量(输出)变为;,因此
我们可以将方程(6)和(7)组合为以下形式:
这种形式与原始状态空间方程(1)相似,但引入了新矩阵:状态转移矩阵、控制矩阵、干扰矩阵和测量矩阵。在这些方程中,表示预测状态,给定为
现在,已经知道、、和,我们可以将输出行为表示为输入的函数。这使得我们能够计算控制输入,使得跟随目标轨迹。
接下来的步骤是定义成本函数。成本函数通常使用以下二次形式;
其中是目标或稳态输入,围绕此输入线性化用于。\n\n这个成本函数与LQR控制器的成本函数是相同的。的第一项惩罚与参考轨迹的偏差。第二项惩罚与参考(或稳态)控制轨迹的偏差。和是正的和正半定的矩阵的成本权重。
注意:在某些情况下,被使用,但这可能意味着即使车辆正在转弯,转向角也应设置为0。因此在这里使用进行解释。这个可以根据目标轨迹的曲率或稳态分析进行预先计算。\n\n由于结果轨迹输出现在为,成本函数仅依赖于和初始状态条件,这导致成本。让我们找到最小化。
将方程(8)代入方程(9),并整理的方程。
这个方程是的二次形式(即)。
的二次项系数矩阵是正定的,因为和的正定和半正定性要求。因此,成本函数在中是一个凸二次函数,可以通过凸优化有效地求解。
应用于车辆路径跟随问题(非线性问题)
由于具有运动学车辆模型的路径跟随问题是非线性的,因此我们无法直接使用前面描述的线性MPC方法。有几种方法可以处理非线性,例如使用非线性优化解算器。在这里,我们沿着参考轨迹对非线性车辆模型进行线性化,因此非线性模型被转化为线性时变模型。
对于非线性运动学车辆模型,离散时间更新方程如下:
车辆参考点为后轴中心,所有状态在该点进行测量。状态、参数和控制变量如下表所示。
符号 | 含义 |
---|---|
在后轴中心测量的车辆速度 | |
全局坐标系中的偏航(航向角) | |
车辆转向角 | |
车辆目标转向角 | |
车辆轴距(后轴与前轴之间的距离) | |
一阶转向动态的时间常数 |
在本示例中,假设MPC只生成转向控制,而轨迹生成器提供沿轨迹的车辆速度。运动学车辆模型的离散更新方程包含三角函数;正弦和余弦,并且车辆坐标、和偏航角是全局坐标。在路径跟踪应用中,通常将模型重新公式化为误差动态,以将控制转换为调节器问题,使目标变为零(零误差)。
我们对以下线性方程的推导做小角假设。考虑非线性动力学,省略纵向坐标,结果方程组变为:
其中 是沿轨迹的曲率,参数化为弧长。
在更新方程中,有三个表达式受线性近似的影响:横向偏差(或横向坐标)、航向角(或航向角误差)以及转向。我们可以对航向角做小角假设。
在路径跟踪问题中,已知轨迹的曲率。在较低速度时,Ackermann公式近似参考转向角(此值对应于上述提到的)。Ackermann转向表达式可以写为:
当车辆转弯时,其转向角应接近的值。因此,可以表示为:
将此方程代入方程(12),并近似为小值。
利用此表达式,可以表示为:
最终,线性化的时间变化模型方程变为:
这个方程与线性MPC假设的方程(1)有相同的形式,但是矩阵、和根据坐标变换而变化。为使其明确,整个方程写为:
与方程(1)比较,。这意味着矩阵是在轨迹附近的线性近似,在经过步后(即秒)获得,如果提前知道轨迹。
利用此方程,依次写出更新方程(2)到(6)。
由于它与方程(6)的形式相同,因此可以在之前的部分应用凸优化。
成本函数和约束条件
在本节中,我们详细说明如何设置成本函数和约束条件。
成本函数
误差和输入的权重
MPC状态和控制权重以类似于LQR的方式出现在成本函数中(9)。在上述描述的车辆路径跟随问题中,如果是单位矩阵,则输出。(为了避免与y方向偏差混淆,此处使用表示横向偏差。)
作为示例,我们确定预测步数系统的评价函数的权重矩阵如下:
在成本函数(9)的第一项()中如下所示(设置为):
这表明是横向误差的权重,是角度误差的权重。在这个例子中,充当比例-P增益,而充当导数-D增益,用于横向跟踪误差。这些因素的平衡(包括)将通过实际实验来确定。
非对角线项的权重
MPC可以在其计算中处理非对角线项(只要结果矩阵是正定的)。
例如,写出系统的如下:
使用展开评价函数的第一项:
的值按变化的量加权,这将防止轮胎快速移动。通过添加这一部分,系统可以评估跟踪精度与转向角变化之间的平衡。
由于权重矩阵可以线性相加,因此最终权重可设置为。\n\n此外,MPC在一段时间内进行优化,可以考虑时间变化的权重。
约束条件
输入约束
MPC控制器的主要优势是能够处理任何状态或输入约束。约束可以表示为盒约束,例如“轮胎角度必须在±30度以内”,可以以以下形式表示:
约束必须在线性MPC应用中保持线性和凸性。
输入导数约束
我们还可以对输入的偏差施加约束。由于转向角的导数是,其盒约束为:
我们将离散化为,并将两侧乘以,得到的约束变为线性和凸性:
沿着预测或控制时间段,例如设置时:
并对不等式符号进行排列:
我们可以获得形式为
的约束方程矩阵表达式。
因此,将此不等式调整为上述形式,可以在一阶近似级别包含对的约束。