【深蓝学院】移动机器人运动规划--第6章 模型预测控制(MPC)与运动规划--笔记

0. Outline

在这里插入图片描述

1. Reactive Control(反应式控制)

控制学中的 “Reactive Control” 通常指的是一种控制策略,它依赖于系统对特定事件或变化的即时反应,而不是按照预定的计划或策略行动。这种控制往往是基于当前的传感器输入来做出决策,而不是提前编程的指令。

与 “Reactive Control” 相对的是 “Proactive Control” 或者 “Feedforward Control”,后者是基于对系统将要发生的变化的预测和规划的控制方法。

如果我们提到 “Feedback Control”(反馈控制),则指的是系统输出会被反馈并与期望的参考值相比较,然后根据这种比较的结果来调整输入,以减少输出和参考值之间的误差。反馈控制是一种常见的控制机制,可以是连续的也可以是离散的,用于保证系统的稳定性和性能。

因此,尽管 “Reactive Control” 可以涵盖反馈机制作为对即时变化的响应,但它并不完全等同于 “Feedback Control”。反馈控制更侧重于基于输出和目标之间的比较来调整输入的过程。


在这里插入图片描述
ref[1],理想情况下,Multicopters的控制是由生成的traj
traj的生成,如果基于flat output,得到flat otput z ∗ ( t ) z^*(t) z(t)后,通过flatness transformation得到 x ∗ ( t ) = { p , v , R , ω } , u ∗ ( t ) = { f ( 推力 ) , τ ( 扭矩 ) } x^*(t)=\{p,v,R,\omega\},u^*(t)=\{f(推力),\tau(扭矩)\} x(t)={p,v,R,ω},u(t)={f(推力),τ(扭矩)}

理想情况下,Multicopters会沿着规划出的轨迹进行飞行,根据z轴desire和world z解算出tilt,而tilt和yaw可以计算出R,可算出具体推力,再使用动力学方程 p = p 0 + v 0 t + 1 2 a t 2 p=p_0+v_0t+\frac{1}{2}at^2 p=p0+v0t+21at2等计算出Multicopters pose。

但实际情况是会受到风阻,油门曲线误差等因素的影响,实际运动时实际 p , v p,v pv与理想 p , v p,v pv会存在误差,Reactive Control在计算预期推力 F d e s F_{des} Fdes会考虑 p , v p,v p,v误差,引入比例因子(类似于PID中的P)。

在这里插入图片描述
pros & cons

pros:易实现,考虑了实际误差。

cons:

  1. 复杂的系统求解需要考虑更多,Reactive Control可能不够。
  2. 调参麻烦
  3. 无法解决具有耦合关系的动态性和约束。
  4. 无法使用未来时刻的信息做出决策(如看到红灯提前减速)

2. Optimal Control(最优控制)

在这里插入图片描述
根据几何约束和动力学构建出自行车的动力学模型,汽车和自行车的模型具有相似性,只是自行车为2个轮子,汽车4个。

由初始时刻状态和输入量即可算出末端状态。

还有其他类型的自行车模型,此处仅介绍最简单的一种建模形式。

在这里插入图片描述
以跟随车道线为目标,建立目标函数:
分为两部分:stage cost + terminal cost
两部分形式可以相同也可以不同
stage cost中 e k e_k ek是偏离车道线的误差,加上平滑项,不希望频繁打杆,使控制更加顺滑。
terminal cost这里与stage cost形式类似,权重不同,如果增大terminal cost权重,就更希望车最终到达设定的末状态。

在这里插入图片描述
考虑等式约束(边界条件等)和不等式约束(控制限制等),避障(矩障碍物圆心距离大于障碍物半径)

在这里插入图片描述
最优控制流程。

在这里插入图片描述
开环最优控制存在的问题:

  1. 模型不准确,不适配,误差会累积。
  2. z ∗ ( t ) z^*(t) z(t)无法准确被执行,即执行误差。
  3. 长时间控制问题使问题不可解。
  4. 外部扰动会对系统控制产生影响。

简单理解:reactive control能使用误差信息,但无法处理具有耦合关系的约束等,optimal control处理了约束问题,但无法解决长时间控制问题,且没考虑扰动问题。

MPC结合了reactive control和optimal control的优点。

3. Model Predictive Control (MPC)

3.1 Preliminaries

在这里插入图片描述
ref[2]。

MPC只预测一小段的轨迹,然后只执行一部分,然后根据measurements继续执行预测,控制,测量的循环。

在这里插入图片描述
MPC Formulation,cost function和最优控制类似。

在这里插入图片描述

别名:
Open Loop Optimal Feedback 开环最优反馈
Reactive Scheduling 响应式调度
Receding Horizon Control 滚动时域控制,滚动优化控制。

  1. 考虑未来的信息(相对optimal control而言)
  2. 补偿误差,
  3. 减小问题的规模(每次只求解一小段问题,warm-start 即t和t+1时刻MPC求解只相差了一个time step,t时刻解可作为t+1时刻求解的初值,加快收敛)。

在这里插入图片描述
MPC源自业界,后来才在学界有了理论研究,学习MPC要持有学以致用的心态。

在这里插入图片描述
两个MPC的应用:
ref[3] 四旋翼坏掉一个桨的MPC控制悬停及降落。
ref[4] 轮腿式机器人的步态生成。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

MPC的设计:

  1. 预测模型的选择:是求解精读和复杂性的trade-off,ref [5,6](大部分自动驾驶,工业AGV使用左边模型就足够)。
  2. MPC cost funtion设计:不同要求会有不同的参数设计
  3. 预测时长PH:最优控制的预测时长是整段轨迹时长,而MPC只针对一小段轨迹。recursive feasiability:虽然只优化一小段,但是保证问题一定有解,常见实现方法是给PH终点的末状态增加约束。(在ref[8]中有所提及)

3.2 Linear MPC

3.2.1 Unconstrained Case

先讲解简单的无约束MPC:
在这里插入图片描述
线性MPC假设系统模型是线性的,即系统的未来状态可以用当前状态和控制输入的线性函数来表示。由于线性模型的预测较为简单且计算量较小,线性MPC在工业和工程应用中非常流行。

x k x_k xk是系统状态, y k y_k yk是系统输出,一般是系统状态的一部分或者线性组合。

在这里插入图片描述
线性系统cost funtion为二次costs,系数矩阵 P , Q , R P,Q,R P,Q,R均为正定,保证问题有解。

costs可能也是stage cost + terminal cost

在这里插入图片描述

把目标函数中系统未来N个时刻的状态组成的向量 z z z 表示成关于未来的控制输入和初始状态 x 0 x_0 x0 的形式,带入原cost function可进一步整理。

在这里插入图片描述
ref[7]

对整理过后的cost funtion进行优化,简单的思路是求导等于0,解出最优解 z ∗ = − H − 1 F T x 0 z^*=-H^{-1}F^Tx_0 z=H1FTx0,发现线性系统最优解竟然与初始状态 x 0 x_0 x0呈线性关系,所以无约束的线性MPC又称为线性状态反馈,最优解又称为batch solution。

这种linear MPC的推导(把系统状态 x x x和输入 u u u分开写)又叫做condense MPC,如果把 x , u x,u x,u放在一起表示,则可以推导出非稠密的MPC(Non-condensed MPC),ref[7]:
在这里插入图片描述

推导出来的系数矩阵是稀疏的,不过non-condenced MPC会引入额外的系统状态转移约束,在无约束linear MPC中一般不使用,在有约束的情况下可能比dense MPC求解更快。

在这里插入图片描述

condensed-MPC的batch solution存在解析解,但需要对大矩阵 H H H求逆,时间复杂度 O ( n 3 ) O(n^3) O(n3),需要考虑更快的求解方法,引出了接下来要讲的LQR方法。

3.2.2 LQR线性二次调节器(控制器)

在这里插入图片描述
使用了问题的序列化结构。

首先介绍贝尔曼法则Bellman princlple
如果一个问题可分为很多步来实现,该问题的最优解中,那么整个问题在某个状态之后的最优解部分,仍然是剩余的子问题的最优解。

如MPC中整个问题最优解 z ∗ z^* z x ∗ = ( x 0 ∗ , x 1 ∗ , ⋯ x k ∗ , ⋯ , x N ∗ ) x^*=(x_0^*,x_1^*,\cdots x_k^*,\cdots,x_N^*) x=(x0,x1,xk,,xN) u ∗ = ( u 0 ∗ , u 1 ∗ , ⋯ , u k ∗ , ⋯ , u N − 1 ∗ ) u^*=(u_0^*,u_1^*,\cdots,u_k^*,\cdots,u_{N-1}^*) u=(u0,u1,,uk,,uN1)
那么在 x k x_k xk时,有子问题“从 x k x_k xk x N x_N xN的最优解”,该子问题的最优解与 z ∗ z^* z中对应的部分相同,即 x ∗ = ( x k ∗ , ⋯ , x N ∗ ) x^*=(x_k^*,\cdots,x_N^*) x=(xk,,xN) u ∗ = ( u k ∗ , ⋯ , u N − 1 ∗ ) u^*=(u_k^*,\cdots,u_{N-1}^*) u=(uk,,uN1)

在这里插入图片描述
求出的 u N − 1 u_{N-1} uN1仍然只和 x N − 1 x_{N-1} xN1有关。

在这里插入图片描述
最终可推导出代数Riccati方程。
在这里插入图片描述
LQR小结:

  1. LQR比batch solution计算效率高,为线性复杂度。
  2. MPC可以施加约束,而LQR无法施加。
  3. MPC通常用于有限的PH,而LQR的PH趋于无穷。
  4. MPC更通用,LQR只能用于目标函数为二次型的cost funtion。

在这里插入图片描述
考虑系统延迟,未来的状态至于现在状态和过去输入有关,与当前输入无关,考虑延迟不仅仅适用于linear MPC,也适用于其他MPC,这里提一下,仅做了解。

在这里插入图片描述

目标函数式二次型,且约束为线性约束的问题称为二次规划问题QP(可回顾上一章博客3.4.1节对凸优化问题的介绍),上图给出了一些常用的QP求解器。

3.3 Other MPC methods

3.3.1 Explict MPC显式MPC(多用于有约束线性MPC)

在这里插入图片描述

无约束的MPC可以推出闭式解batch solution,而有约束的MPC无法推出,只能使用QP求解器进行在线求解。

显式MPC思想:按照初始状态落在不同的区间内提前算好闭式解,使用时查表。

在这里插入图片描述
对于优化问题,如果是等式约束,可以使用Lagrange乘子法求解,对于不等式约束求极值,使用KKT条件求解。


KKT(Karush-Kuhn-Tucker)条件是数学优化领域的一组非常重要的条件,主要用于非线性规划问题的最优解判定。KKT条件是对线性规划中的单纯形方法和对偶理论在非线性情况下的推广。

在一个有约束的优化问题中,如果目标函数和不等式约束是连续可微的,那么在某些正则性条件下,任何局部最优解都必须满足KKT条件。这些条件包括:

  1. 梯度条件:目标函数的梯度必须可以表示为各个约束函数梯度的线性组合。
  2. 原始可行条件:解必须满足问题中所有的约束。
  3. 对偶可行条件:涉及拉格朗日乘子的不等式必须非负。
  4. 互补松弛条件:拉格朗日乘子与相应的不等式约束的乘积应该为零。

这些条件在求解实际问题时非常有用,特别是在工程设计、经济学和运筹学中。对于某些优化问题,只要找到满足KKT条件的点,就能确定它是问题的局部最优解,有时甚至是全局最优解。KKT条件是非线性规划领域的基石之一,对于理论研究和实际应用都有极其重要的意义。


GPT4分析:

对于给出的优化问题,我们有目标函数 ( J ( z , x ) = 1 2 z 2 J(z, x) = \frac{1}{2} z^2 J(z,x)=21z2) 和约束条件 ( z ≤ 1 + 3 x z \leq 1 + 3x z1+3x)。要列出这个问题的KKT条件,我们首先需要构造拉格朗日函数 ( L ( z , x , λ ) L(z, x, \lambda) L(z,x,λ)),其中 ( λ \lambda λ) 是拉格朗日乘子。

拉格朗日函数为:
L ( z , x , λ ) = J ( z , x ) + λ ( 1 + 3 x − z ) L(z, x, \lambda) = J(z, x) + \lambda (1 + 3x - z) L(z,x,λ)=J(z,x)+λ(1+3xz) L ( z , x , λ ) = 1 2 z 2 + λ ( 1 + 3 x − z ) L(z, x, \lambda) = \frac{1}{2} z^2 + \lambda (1 + 3x - z) L(z,x,λ)=21z2+λ(1+3xz)

接下来我们根据KKT条件列出:

  1. 梯度条件(stationarity): 解必须使拉格朗日函数的梯度为零。对 ( z z z) 和 ( λ \lambda λ) 分别求偏导,我们得到:
    ∂ L ∂ z = z − λ = 0 \frac{\partial L}{\partial z} = z - \lambda = 0 zL=zλ=0 ∂ L ∂ λ = 1 + 3 x − z = 0 \frac{\partial L}{\partial \lambda} = 1 + 3x - z = 0 λL=1+3xz=0
  2. 原始可行性(primal feasibility): 解必须满足原始问题的约束。
    z − ( 1 + 3 x ) ≤ 0 z - (1 + 3x) \leq 0 z(1+3x)0
  3. 对偶可行性(dual feasibility): 拉格朗日乘子对于不等式约束必须非负。
    λ ≥ 0 \lambda \geq 0 λ0
  4. 互补松弛性(complementary slackness): 对于每个乘子和对应约束的乘积为零。
    λ ( z − ( 1 + 3 x ) ) = 0 \lambda (z - (1 + 3x)) = 0 λ(z(1+3x))=0

将第一个梯度条件 ( z − λ = 0 z - \lambda = 0 zλ=0) 代入互补松弛性的条件,我们得到:
λ ( z − ( 1 + 3 x ) ) = λ z − λ ( 1 + 3 x ) = 0 \lambda (z - (1 + 3x)) = \lambda z - \lambda (1 + 3x) = 0 λ(z(1+3x))=λzλ(1+3x)=0
由于 ( z = λ z = \lambda z=λ),这可以简化为:
λ 2 − λ ( 1 + 3 x ) = 0 \lambda^2 - \lambda (1 + 3x) = 0 λ2λ(1+3x)=0 λ ( λ − ( 1 + 3 x ) ) = 0 \lambda (\lambda - (1 + 3x)) = 0 λ(λ(1+3x))=0

这意味着要么 ( λ = 0 \lambda = 0 λ=0),要么 ( λ = 1 + 3 x \lambda = 1 + 3x λ=1+3x)。根据对偶可行性的规则,我们知道 ( λ \lambda λ) 必须非负,因此
( λ = 0 \lambda = 0 λ=0) 或者 ( λ \lambda λ) 是一个非负值。

  1. λ = 0 \lambda=0 λ=0时,z=0
  2. λ > 0 \lambda>0 λ>0时, z = 3 x + 1 > 0 z=3x+1>0 z=3x+1>0

即可得出上图中满足约束时的J的曲线。

可以证明,对于一个严格凸的QP,其多参数优化的解是连续分段线性的。


在这里插入图片描述
Explicit MPC根据状态的区间个数来计算最优解,但问题是区间的个数与有效约束的个数呈指数级增长,存储和查找区间的代价非常高昂。所以Explicit MPC多用于自动化控制,而在Robotics领域很少使用。

3.3.2 Linear Time-Varying MPC and Nonlinear MPC(线性时变MPC和非线性MPC)

3.3.2.1 Linear Time-Varying MPC

在这里插入图片描述
线性时变模型:典型的线性时变系统是火箭动力,随着火箭的上升,消耗的燃料增加,质量减少,系统方程随着时间发生改变。

非线性模型:系统方程无法线性表示。处理方法一般是对非线性模型进行线性化(如一阶Taylor展开,然后对线性化的模型进行处理),由于线性化点不同,不同时刻的系统方程也不同,所以也是时变系统。

在这里插入图片描述
线性化之后进行离散化,得到离散的线性化MPC模型,从而在线求解。

在这里插入图片描述
图为自行车模型,通过状态转移方程可知系统为非线性时变系统。
在这里插入图片描述
上述推导,使用了一阶泰勒展开,以 p x ˙ \dot{p_x} px˙为例,简要推导。
Taylor公式,展开点为 x 0 x_0 x0
f ( x ) = f ( x 0 ) + f ( 1 ) ( x 0 ) 1 ! ( x − x 0 ) + f ( 2 ) ( x 0 ) 2 ! ( x − x 0 ) 2 ⋯ f(x)=f(x_0)+\frac{f^{(1)}(x_0)}{1!}(x-x_0)+\frac{f^{(2)}(x_0)}{2!}(x-x_0)^2\cdots f(x)=f(x0)+1!f(1)(x0)(xx0)+2!f(2)(x0)(xx0)2

取第一阶导进行线性化,忽略高阶导,在 ( v ˉ , ϕ ˉ , δ ˉ ) (\bar{v},\bar{\phi},\bar{\delta}) (vˉ,ϕˉ,δˉ)处进行展开,则
p ( x ) ˙ = v ˉ c o s ( ϕ ˉ ) + ∂ ( p x ˙ ) ∂ v ( v − v ˉ ) + ∂ ( p x ˙ ) ∂ ϕ ( ϕ − ϕ ˉ ) = v ˉ c o s ( ϕ ˉ ) + c o s ( ϕ ˉ ) ( v − v ˉ ) − v ˉ s i n ( ϕ ˉ ) ( ϕ − ϕ ˉ ) = c o s ( ϕ ˉ ) v − v ˉ s i n ( ϕ ˉ ) ( ϕ − ϕ ˉ ) \begin{align*} \dot{p(x)} &=\bar{v}cos(\bar{\phi})+\frac{\partial(\dot{p_x})}{\partial v}(v-\bar{v})+ \frac{\partial(\dot{p_x})}{\partial \phi}(\phi-\bar{\phi}) \notag \\ &=\bar{v}cos(\bar{\phi})+cos(\bar{\phi})(v-\bar{v})-\bar{v}sin(\bar{\phi})(\phi-\bar{\phi})\\ &=cos(\bar{\phi})v-\bar{v}sin(\bar{\phi})(\phi-\bar{\phi}) \end{align*} p(x)˙=vˉcos(ϕˉ)+v(px˙)(vvˉ)+ϕ(px˙)(ϕϕˉ)=vˉcos(ϕˉ)+cos(ϕˉ)(vvˉ)vˉsin(ϕˉ)(ϕϕˉ)=cos(ϕˉ)vvˉsin(ϕˉ)(ϕϕˉ)但是在对 p x ˙ \dot{p_x} px˙进行整理时,我的结果为
p x ˙ = [ 0 0 c o s ( ϕ ˉ ) − v ˉ s i n ( ϕ ˉ ) ] [ p x p y v ϕ ] + [ 0 0 ] [ a δ ] + [ v ˉ ϕ ˉ s i n ( ϕ ˉ ) ] \dot{p_x}= \begin{bmatrix} 0 &0&cos(\bar{\phi})&-\bar{v}sin(\bar{\phi}) \end{bmatrix} \begin{bmatrix} p_x\\p_y\\v\\ \phi \end{bmatrix} + \begin{bmatrix} 0&0 \end{bmatrix} \begin{bmatrix} a\\\delta \end{bmatrix} + \begin{bmatrix} \bar{v}\bar{\phi}sin(\bar{\phi}) \end{bmatrix} px˙=[00cos(ϕˉ)vˉsin(ϕˉ)] pxpyvϕ +[00][aδ]+[vˉϕˉsin(ϕˉ)]
与课程所给的结果有出入,但是整体推导思路应该没错。

在这里插入图片描述
线性化之后,进行离散化。

在这里插入图片描述
回到问题的cost function,由两部分组成:最小化轨迹跟踪误差;对轨迹进行smooth,使变化率不会太大。

有一个模型的技巧,称为Augmented model,把系统的新的状态量 x k + 1 x_{k+1} xk+1和输入 u k + 1 u_{k+1} uk+1当做新状态,把输入量的增量 Δ u k \Delta {u_k} Δuk当做新的输入(有点类似增量式PID的思想,控制比例,积分,微分的增量,而不是绝对量。)

最后,读输入和状态进行约束,交给求解器求解。

在这里插入图片描述
这里比较重要的一点是线性化点如何给定,如果知道了线性化点,那就没有必要进行求解了,输入先有鸡还是先有蛋的问题(The chicken or the egg)

给线性化点有一些工程上的策略:

  1. 根据参考轨迹给出。
  2. warm-start:使用 k − 1 k-1 k1时刻的解( u k − 1 ∗ , x k − 1 ∗ u_{k-1}^*,x_{k-1}^* uk1,xk1)来作为 k k k时刻线性化的点(会不会出现SLAM中的线性化点不同而导致的解零空间的退化问题,那里是因为Jacobian的线性化点不同会导致Jacobian在被marg掉的点处不再发生变化,导致information matrix中多加了信息,有可能改变解的零空间。有类似于EFJ算法来解决这个问题。)
3.3.2.2 Nonlinear MPC

在这里插入图片描述
非线性可以由cost funtion、系统方程、约束带来。

前面讲解了对非线性优化问题进行线性化、离散化求解,也可以直接对非线性优化进行求解,即求解NLP,但是后者难度更大,因为QP问题是凸的,local munimum就是global minimum,而非凸NLP的local minimum不一定是global minimum。

一些NLP求解方法:

  1. SQP
  2. 内点法

求解非线性MPC(即NMPC)有FORCES Pro,可以基于MATLAB代码生成C代码。

3.3.3 Tube MPC(抗扰动)

在这里插入图片描述
非线性MPC难点:

  1. 系统辨识难(通常是对系统参数进行辨识)
  2. 迭代求解的可行性和稳定性无法保证(可能求着求着就无解了)

提出一种方法:Tube MPC。具体思路是:MPC+反应式控制器。MPC使用nominal model(名义模型,标称模型),后面接上一个反应式控制器,使得实际的状态收敛到MPC规划出的名义的管道内(nominal tube)。这里MPC实际上是一个规划器,后面的feedback controller才是控制器,一个辅助反馈控制器,其目的是保持实际状态在忽略干扰计算出的名义轨迹周围的一个不变的“管”内。

所以Tube MPC本身就具有一定的抗干扰能力,常用于鲁棒控制。

在这里插入图片描述

例子:名义模型使用了三积分模型(以jerk作为系统输入),feedback controller使用了PID控制器。
整个控制框架很像串级控制。内外环的反馈均使用了真实的系统测量。

3.3.4 Hybrid MPC(混合MPC)

在这里插入图片描述
主要指系统的状态和约束由“连续” 变为 “连续 + 逻辑”混合。
在这里插入图片描述
汽车就是连续+逻辑的混合系统。

在连续动态系统中混合着逻辑变量或约束的系统称为混合逻辑动态(MLD)系统
这里 y ≤ 0 y \leq 0 y0表示的是反弹的过程,实际 y y y不可能小于0,但用符号来代表不同的运动过程。
简言之, y > 0 y>0 y>0表示下落, y ≤ 0 y\leq 0 y0表示反弹,将这种逻辑约束用含有逻辑变量 δ \delta δ的不等式进行表示
在这里插入图片描述
速度转移方程可如下表示:
在这里插入图片描述

在这里插入图片描述
将逻辑约束转换为混合整数线性不等式,就能使用线性/非线性方法求解。

上图为一个无人机拉重物的例子,物体对无人机的拉力 T T T,在绳子紧绷时等于 m L a m_La mLa,松弛时 T = 0 T=0 T=0
T T T为无人机推力, q q q为无人机相对重物(load)方向, m L m_L mL为重物质量, p L ¨ \ddot{p_L} pL¨为重物位置的二阶导,即加速度, l l l为无人机距离重物距离, l 0 l_0 l0为绳长(假设身子为刚性,无形变)。

第二个式子表示当 l l l小于绳长时,拉力就为0。

3.3.5 MPCC(模型预测轮廓控制)

GPT4:
模型预测轮廓控制(Model Predictive Contouring Control,简称 MPCC)是一种先进的控制策略,它是模型预测控制(Model Predictive Control,MPC)的一个变体,专门用于控制系统在保持特定轨迹或轮廓精度方面的性能。

模型预测控制是一种基于模型的控制算法,能够考虑系统的未来行为,并在每一个控制步骤中解决一个优化问题,以确定当前的最优控制动作。MPC的这个特点使得它非常适合处理多变量系统、受约束的系统和非线性系统。

MPCC特别关注于在给定的轨迹或轮廓上实现高精度跟踪,这在很多工业应用中非常重要,比如机器人路径跟踪、CNC机床加工和汽车路径跟踪等。MPCC不仅考虑系统的动态和可能的约束,而且还将轨迹跟踪误差最小化作为关键的优化目标。它通常可以分为两个主要部分:轨迹规划和轨迹跟踪。

轨迹规划负责生成理想的、可执行的路径或轮廓,而轨迹跟踪则确保控制系统能够尽可能精确地跟随这个路径。MPCC通过在线优化实时控制输入,不仅可以减少轨迹偏差,还可以应对外部扰动,从而保证系统沿着预定轨迹高精度运行。

MPCC的实施通常需要强大的计算能力,因为它需要在实时或准实时条件下解决优化问题。随着计算技术的发展,MPCC已经成为许多高精度和高性能控制应用的首选方法。


在这里插入图片描述

把MPCC应用在无人机的抗扰动鲁棒飞行中(讲师工作ref[8])。
Contribution:

  1. 是精度和跟踪速度的trade-off
  2. 用末端轨迹速度约束来保证可行性(末端速度小于参考轨迹的速度)
  3. 使用tube MPC抗扰动
  4. 使用flight corridor保证飞行的安全性

任务是跟踪一个小球的轨迹。

在这里插入图片描述
把非时变MPC转化为线性时变MPC。

θ \theta θ表示跟踪的小球的位置,输入是无人机的jerk和小球的jerk

在这里插入图片描述
− q ⋅ v θ -q\cdot v_{\theta} qvθ项是最大化跟踪进度(不是很理解),
约束:
第一行:系统线性化,离散化
第二、三行:状态和输入的最值约束
第四行:安全约束,使用flight corridor,但由于优化过程中对处于两个flight corridor间的轨迹不知道属于哪个corridor,不知如何优化,处理方法是:做该点速度方向的法平面,与flight corridor相较,沿着速度方向向外拉,与flight corridor组成的平面就作为安全约束(不是很清楚,需要看论文)。

算法效果如下:
在这里插入图片描述
飞行过程中遭遇打击也能正常飞行。

在这里插入图片描述

在这里插入图片描述

4. Summary

在这里插入图片描述

  1. Reactive Control & Optimal Control
    reactive control能使用误差信息,但无法处理具有耦合关系的约束等,optimal control处理了约束问题,但无法解决长时间控制问题,且没考虑扰动问题。

  2. Model Predictive Control
    与最优控制不同,MPC只预测一小段的轨迹,然后只执行一部分,然后根据measurements继续执行预测,控制,测量的循环。
    MPC pros:1. 能够考虑未来的信息(相对最优控制而言),2. 补偿误差,3. 减小问题的规模。
    MPC design

    1. 预测模型的选择:是求解精读和复杂性的trade-off,ref [5,6]
    2. MPC cost funtion设计:不同要求会有不同的参数设计
    3. 预测时长PH:最优控制的预测时长是整段轨迹时长,而MPC只针对一小段轨迹。recursive feasiability:虽然只优化一小段,但是保证问题一定有解,常见实现方法是给PH终点的末状态增加约束。(在ref[8]中有所提及)
  3. Linear MPC (unconstrained and constrained case)

    • unconstrained case可以推导出closed-form solution:
      1. condensed batch solution,但是求逆较慢, O ( n 3 ) O(n^3) O(n3)
      2. non-condenced MPC,会引入新的约束,不常用。
    • LQR:鉴于condensed batch solution O ( n 3 ) O(n^3) O(n3)的复杂度,针对二次规划问题,提出LQR方法,使用Bellman princlple,最优解的对应部分仍然是子问题的最优解,从后往前一步步推导,直至推导完整个问题的最优解。但仅适用于cost function为二次型情况。

    有约束情况在explicit MPC开始考虑,使用KKT条件添加约束。

  4. MPC with delays
    考虑系统延迟,未来的状态至于现在状态和过去输入有关,与当前输入无关,考虑延迟不仅仅适用于linear MPC,也适用于其他MPC。

  5. Explicit MPC
    针对有约束MPC,无约束的MPC可以推出闭式解batch solution,而有约束的MPC无法推出。

    等式约束一般使用Langrange乘子法构建问题,不等式约束一般使用KKT条件构建问题。

    我们简述了KKT条件:1.梯度条件;2. 原始可行条件;3. 对偶可行条件;4.互补松弛条件。

    并在3.3.1节举例说明。

    对于Explicit MPC:

    1. 显式MPC思想:按照初始状态落在不同的区间内提前算好闭式解,使用时查表。
    2. 缺点:根据状态的区间个数来计算最优解,但问题是区间的个数与有效约束的个数呈指数级增长,存储和查找区间的代价非常高昂。故Explicit MPC仅常用于自动控制领域,robotics领域不常用。
  6. Linear Time-Varying MPC and Nonlinear MPC
    针对非线性系统,可对系统进行线性化近似(一阶泰勒展开),并离散化,转化为线性时变系统求解。

    关于线性化点的给定,给出两个策略:1. 根据参考轨迹给出。2. warm-start,使用 k − 1 k-1 k1时刻的解作为 k k k时刻的线性化点。

  7. Tube MPC
    非线性MPC难点:

    1. 系统辨识难(通常是对系统参数进行辨识)。
    2. 迭代求解的可行性和稳定性无法保证(可能求着求着就无解了)。

    提出 Tube MPC。具体思路是:MPC+反应式控制器。MPC使用nominal model(名义模型,标称模型),通常是做规划器,反应式控制器实施控制,使输出维持在nominal trajectory的tube内,提高预测控制稳定性。

  8. Hybrid MPC
    hybrid MPC对于逻辑量,将其处理为混合整数或互补约束。

  9. Model Predictive Contouring Control
    一种具体算法,用于轮廓控制,具体可参考ref[8],添加了末端速度约束以保证feasiability,使用Tube MPC增加了控制鲁棒性。

5. Assignment

在这里插入图片描述
给出一些拓展学习资料:
ref[9],youtube学习MPC的一个视频。

ref[10]一个MPC课程网站,IMT School for Advanced Studies Lucca(意大利卢卡高级研究学院)一位老师做的。

ref[2]一本讲预测控制的书,前几章包含一些优化的数学知识。

6. Reference

[1] Mellinger, Daniel, and Vijay Kumar. “Minimum snap trajectory generation and control for quadrotors.” 2011 IEEE international conference on robotics and automation. IEEE, 2011.

[2] Borrelli, Francesco, Alberto Bemporad, and Manfred Morari. Predictive control for linear and hybrid systems. Cambridge University Press, 2017.

[3] Nan, Fang, et al. “Nonlinear MPC for Quadrotor Fault-Tolerant Control.” arXiv preprint arXiv:2109.12886 (2021).

[4] Bjelonic, Marko, et al. “Whole-body mpc and online gait sequence generation for wheeled-legged robots.” 2021 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2020.

[5] Kong, Jason, et al. “Kinematic and dynamic vehicle models for autonomous driving control design.” 2015 IEEE intelligent vehicles symposium (IV). IEEE, 2015.

[6] Liniger, Alexander, Alexander Domahidi, and Manfred Morari. “Optimization-based autonomous racing of 1: 43 scale RC cars.” Optimal Control Applications and Methods 36.5 (2015): 628-647.

[7] Wang, Yang, and Stephen Boyd. “Fast model predictive control using online optimization.” IEEE Transactions on control systems technology 18.2 (2009): 267-278.

[8] Ji, Jialin, et al. “CMPCC: Corridor-based model predictive contouring control for aggressive drone flight.” International Symposium on Experimental Robotics. Springer, Cham, 2020.

[9] https://www.youtube.com/watch?v=XaD8Lngfkzk

[10] http://cse.lab.imtlucca.it/~bemporad/mpc_course.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/488083.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【电路笔记】-RC放电电路

RC放电电路 文章目录 RC放电电路1、概述2、RC放电电路3、RC放电电路示例当电压源从完全充电的 RC 电路中移除时,电容器 C 将通过电阻 R 放电。 1、概述 RC 放电电路利用电阻器-电容器组合的固有 RC 时间常数以指数衰减率对电容器进行放电。 在之前的 RC 充电电路教程中,我们…

【MySQL】数据类型(常见类型)-- 详解

一、数据类型分类 二、数值类型 1、tinyint 类型 在 MySQL 中,整型可以指定是有符号的和无符号的,默认是有符号的。 有符号: 插入数据越界测试: 在 MySQL 表中建立属性列时,我们可以发现列名称在前,类型在…

java医院综合信息管理云HIS系统源码(前后端分离、SaaS模式)

目录 综合管理系统 业务系统 技术框架 系统基础数据录入 系统功能介绍 云his综合管理系统 云his业务系统 门诊管理系统 住院管理系统 药房管理系统 药库管理系统 系统管理 云HIS系统分为两个大的系统:综合管理系统和业务系统 综合管理系统 由运营商、开…

3DIoUMatch: Leveraging IoU Prediction for Semi-Supervised 3D Object Detection

3DIoUMatch: Leveraging IoU Prediction for Semi-Supervised 3D Object Detection 论文链接:https://arxiv.org/pdf/2012.04355.pdf 代码链接:https://github.com/yezhen17/3DIoUMatch 作者单位:Stanford University等 发表平台:…

漫漫数学之旅032

文章目录 经典格言数学习题古今评注名人小传 经典格言 数学天才与艺术天才彼此灵犀相通。——哥斯塔米塔格勒弗莱(Gsta Mittag-Leffler) 哥斯塔米塔格勒弗莱,这位数学界的“大魔法师”,曾用他那根智慧的魔杖揭示了数学与艺术之间…

Jenkins详解

目录 一、Jenkins CI/CD 1、 Jenkins CI/CD 流程图 2、介绍 Jenkins 1、Jenkins概念 2、Jenkins目的 3、特性 4、产品发布流程 3、安装Jenkins 1、安装JDK 2、安装tomcat 3.安装maven 4安装jenkins 5.启动tomcat,并页面访问 5.添加节点 一、Jenkins CI/…

第3部分 原理篇2去中心化数字身份标识符(DID)(3)

3.2.2.4. DID文档 (DID Document) 本聪老师:DID标识符和DID URL还都只是ID,必须为它附加一个基本属性才可以证明是该主体独有的。这个就是我们下面介绍的DID文档。 本聪老师:每个DID标识符都唯一对应一个DID文档,也可以说&#x…

【数学建模规则】2024年第九届数维杯大学生数学建模挑战赛参赛指南

一、竞赛介绍 数维杯大学生数学建模挑战赛每年分为两场,每年上半年为数维杯国赛(5月,俗称小国赛),下半年为数维杯国际赛(11月),2023年第八届数维杯大学生数学建模挑战赛共有近1.4万名学生参赛,…

【vscode】按F5无法执行调试python或go

原因: 找不到解析器,需要安装插件(python,或go 等) 安装插件后,还是无法执行,按 ctrlshiftp,看不到解析器 正常应该是: 解决方法: 1、判断python是否安装成功 pyth…

目标检测卷王YOLO卷出新高度:YOLOv9问世

论文摘要:如今的深度学习方法重点关注如何设计最合适的目标函数,使得模型的预测结果能够最接近真实情况。 同时,必须设计一个适当的架构,可以帮助获取足够的信息进行预测。 现有方法忽略了一个事实,即当输入数据经过逐层特征提取和空间变换时,大量信息将会丢失。 本文将深…

Linux-基础知识(黑马学习笔记)

硬件和软件 我们所熟知的计算机是由:硬件和软件组成。 硬件:计算机系统中电子,机械和光电元件等组成的各种物理装置的总称。 软件:是用户和计算机硬件之间的接口和桥梁,用户通过软件与计算机进行交流。 而操作系统…

leet hot 100-4 移动零

移动零 原题链接思路代码 原题链接 leet hot 100-4 283. 移动零 思路 遍历数组 将非0数字 移动到数组前端 数字0就会被移动到数组末端 时间复杂度O(n) 空间复杂度(n) 代码 class Solution { public:void moveZeroes(vector<int>& nums) {int start 0;int ind…