本文简单介绍下线性定常系统(Linear Time-Invariant System)的最优跟踪问题,主要介绍L-Q问题(LQT)。
本文主要讨论跟踪(Tracking)问题,不详细讨论调节(Regulation)问题,且本文中均假设参考轨迹在任意时刻已知,即不讨论伺服问题和模型跟踪问题。
离散时间系统
姑且不考虑观测器问题,假设系统状态完全可得,考虑如下线性定常离线时间系统: ξ t + 1 = A ξ t + B u t \xi_{t+1} = A\xi_{t} + Bu_{t} ξt+1=Aξt+But 或者展开写成更清晰的形式: [ x t + 1 x ˙ t + 1 ] = [ I Δ t ⋅ I 0 I ] [ x t x ˙ t ] + [ 0 Δ t ⋅ I ] u t \begin{bmatrix} x_{t+1} \\ \dot{x}_{t+1} \end{bmatrix} = \begin{bmatrix} I & \Delta t\cdot I \\ \mathbf{0} & I \end{bmatrix} \begin{bmatrix} x_{t} \\ \dot{x}_{t} \end{bmatrix} + \begin{bmatrix} \mathbf{0} \\ \Delta t\cdot I \end{bmatrix}u_t [xt+1x˙t+1]=[I0Δt⋅II][xtx˙t]+[0Δt⋅I]ut 其中, x t ∈ R D , ξ t ∈ R C D , u t ∈ R D x_{t} \in\mathbb{R}^{D}, \xi_{t} \in \mathbb{R}^{CD},u_{t}\in\mathbb{R}^{D} xt∈RD,ξt∈RCD,ut∈RD.
批处理方法(Batch Form)
那么,定义LQ指标为:
C
=
(
ξ
^
T
−
ξ
T
)
⊤
Q
T
(
ξ
^
T
−
ξ
T
)
+
∑
t
=
1
T
−
1
(
(
ξ
^
t
−
ξ
t
)
⊤
Q
t
(
ξ
^
t
−
ξ
t
)
+
u
t
⊤
R
t
u
t
)
C = (\hat{\xi}_{T} - \xi_{T})^{\top}Q_{T}(\hat{\xi}_{T} - \xi_{T}) + \sum_{t=1}^{T-1}\left( (\hat{\xi}_{t} - \xi_{t})^{\top}Q_{t}(\hat{\xi}_{t} - \xi_{t}) + u^{\top}_{t}R_{t}u_{t} \right)
C=(ξ^T−ξT)⊤QT(ξ^T−ξT)+t=1∑T−1((ξ^t−ξt)⊤Qt(ξ^t−ξt)+ut⊤Rtut) 其中
Q
Q
Q为半正定矩阵,
R
R
R为正定矩阵。将上式写成更紧凑形式:
C
=
(
ξ
^
−
ξ
)
⊤
Q
~
(
ξ
^
−
ξ
)
+
U
⊤
R
~
U
C = (\hat{\xi} - \xi)^{\top}\tilde{Q}(\hat{\xi} - \xi)+U^{\top}\tilde{R}U
C=(ξ^−ξ)⊤Q~(ξ^−ξ)+U⊤R~U 其中
ξ
∈
R
T
C
D
,
U
∈
R
(
T
−
1
)
D
\xi \in \mathbb{R}^{TCD}, U\in\mathbb{R}^{(T-1)D}
ξ∈RTCD,U∈R(T−1)D分别是状态和输入向量,
ξ
^
∈
R
T
C
D
\hat{\xi}\in\mathbb{R}^{TCD}
ξ^∈RTCD为参考状态,可以看出
Q
~
=
d
i
a
g
(
Q
1
,
Q
2
,
…
,
Q
T
)
∈
R
T
C
D
×
T
C
D
\tilde{Q} = diag(Q_{1},Q_{2},\dots,Q_{T}) \in \mathbb{R}^{TCD \times TCD}
Q~=diag(Q1,Q2,…,QT)∈RTCD×TCD 且
R
~
=
d
i
a
g
(
R
1
,
R
2
,
…
,
R
T
)
∈
R
(
T
−
1
)
C
D
×
(
T
−
1
)
C
D
\tilde{R}=diag(R_{1}, R_{2},\dots,R_{T})\in \mathbb{R}^{(T-1)CD \times (T-1)CD}
R~=diag(R1,R2,…,RT)∈R(T−1)CD×(T−1)CD
对于离散时间系统,我们可以将系统状态序列写成如下形式:
ξ
2
=
A
ξ
1
+
B
u
1
ξ
3
=
A
(
A
ξ
1
+
B
u
1
)
+
B
u
2
⋮
ξ
T
=
A
T
ξ
1
+
A
T
−
1
B
u
1
+
A
T
−
2
B
u
2
+
⋯
B
u
T
\begin{aligned} \xi_{2} &= A\xi_{1} + Bu_{1} \\ \xi_{3} &= A(A\xi_{1} + Bu_{1}) + Bu_{2} \\ &\vdots \\ \xi_{T} &= A^{T}\xi_{1} + A^{T-1}Bu_{1}+A^{T-2}Bu_{2} + \cdots Bu_{T} \end{aligned}
ξ2ξ3ξT=Aξ1+Bu1=A(Aξ1+Bu1)+Bu2⋮=ATξ1+AT−1Bu1+AT−2Bu2+⋯BuT 如此,我们可以将
1
∼
T
1\sim T
1∼T 时刻所有的状态及输入写称紧凑形式:
[
ξ
1
ξ
2
ξ
3
⋮
ξ
T
]
=
[
I
A
A
2
⋮
A
T
]
ξ
1
+
[
0
0
⋯
0
B
0
⋯
0
A
B
B
⋯
0
⋮
⋮
⋱
⋮
A
T
−
1
B
A
T
−
2
B
⋯
B
]
[
u
1
u
2
⋮
u
T
−
1
]
\begin{bmatrix} \xi_{1} \\ \xi_{2} \\ \xi_{3} \\ \vdots \\ \xi_{T} \end{bmatrix} = \begin{bmatrix} I \\ A \\ A^{2} \\ \vdots \\ A^{T} \end{bmatrix}\xi_{1} + \begin{bmatrix} \mathbf{0} & \mathbf{0} & \cdots & \mathbf{0} \\ B & \mathbf{0} & \cdots & \mathbf{0} \\ AB & B & \cdots & \mathbf{0} \\ \vdots & \vdots & \ddots & \vdots \\ A^{T-1}B & A^{T-2}B & \cdots & B \end{bmatrix} \begin{bmatrix} u_{1} \\ u_{2} \\ \vdots \\ u_{T-1} \end{bmatrix}
ξ1ξ2ξ3⋮ξT
=
IAA2⋮AT
ξ1+
0BAB⋮AT−1B00B⋮AT−2B⋯⋯⋯⋱⋯000⋮B
u1u2⋮uT−1
即
ξ
=
S
ξ
ξ
1
+
S
u
U
\xi = S^{\xi}\xi_{1} + S^{u}U
ξ=Sξξ1+SuU 可见
S
ξ
∈
R
T
C
D
×
C
D
,
S
u
∈
R
T
C
D
×
(
T
−
1
)
D
S^{\xi}\in\mathbb{R}^{TCD\times CD}, S^{u}\in\mathbb{R}^{TCD\times (T-1)D}
Sξ∈RTCD×CD,Su∈RTCD×(T−1)D。此时,我们可以将上述公式代入到优化指标函数中:
C
=
(
ξ
^
−
S
ξ
ξ
1
−
S
u
U
)
⊤
Q
~
(
ξ
^
−
S
ξ
ξ
1
−
S
u
U
)
+
U
⊤
R
~
U
C = (\hat{\xi}-S^{\xi}\xi_{1}-S^{u}U)^{\top}\tilde{Q}(\hat{\xi}-S^{\xi}\xi_{1}-S^{u}U)+U^{\top}\tilde{R}U
C=(ξ^−Sξξ1−SuU)⊤Q~(ξ^−Sξξ1−SuU)+U⊤R~U 如此,问题转换成了一个无约束凸二次优化问题:
arg min
U
C
\argmin_{U} C
UargminC 利用梯度下降法,对
U
U
U求梯度并令其为零得:
U
∗
=
(
S
u
⊤
Q
~
S
u
+
R
~
)
−
1
S
u
⊤
Q
~
(
ξ
^
−
S
ξ
ξ
1
)
U^{*} = ({S^{u}}^{\top}\tilde{Q}S^{u}+\tilde{R})^{-1}{S^{u}}^{\top}\tilde{Q}(\hat{\xi}-S^{\xi}\xi_{1})
U∗=(Su⊤Q~Su+R~)−1Su⊤Q~(ξ^−Sξξ1) 这其实等同于一个基于岭回归的最小二乘参数估计。
迭代方法(Iterative Form)
当然,我们亦可以采用迭代方法求解该最优跟踪问题。方便起见,我们定义LQ指标为:
C
=
1
2
(
ξ
^
T
−
ξ
T
)
⊤
Q
T
(
ξ
^
T
−
ξ
T
)
+
1
2
∑
t
=
1
T
−
1
(
(
ξ
^
t
−
ξ
t
)
⊤
Q
t
(
ξ
^
t
−
ξ
t
)
+
u
t
⊤
R
u
t
)
C = \frac{1}{2}(\hat{\xi}_{T} - \xi_{T})^{\top}Q_{T}(\hat{\xi}_{T} - \xi_{T}) + \frac{1}{2}\sum_{t=1}^{T-1}\left( (\hat{\xi}_{t} - \xi_{t})^{\top}Q_{t}(\hat{\xi}_{t} - \xi_{t}) + u_{t}^{\top}Ru_{t} \right)
C=21(ξ^T−ξT)⊤QT(ξ^T−ξT)+21t=1∑T−1((ξ^t−ξt)⊤Qt(ξ^t−ξt)+ut⊤Rut) 各个变量定义与前文无异。加入系数单纯为了推导方便。此时,利用动态规划方法,我们可以得到离散线性系统的最优跟踪控制律为:
u
t
=
−
K
t
ξ
ξ
t
−
K
t
β
β
t
u_{t} = -K_{t}^{\xi}\xi_{t}-K_{t}^{\beta}\beta_{t}
ut=−Ktξξt−Ktββt 此时最优的性能指标为:
C
∗
=
1
2
ξ
0
⊤
P
0
ξ
0
+
ξ
0
⊤
β
0
+
1
2
α
0
C^{*} = \frac{1}{2}\xi_{0}^{\top}P_{0}\xi_{0} + \xi_{0}^{\top}\beta_{0}+\frac{1}{2}\alpha_{0}
C∗=21ξ0⊤P0ξ0+ξ0⊤β0+21α0
其中每一项迭代过程如下:
- 矩阵 P P P: P T = Q T P t = A ⊤ P t + 1 A − A ⊤ P t + 1 B ( R t + B ⊤ P t + 1 B ) − 1 B ⊤ P t + 1 A + Q t \begin{aligned} P_{T} &= Q_{T} \\ P_{t} &= A^{\top}P_{t+1}A - A^{\top}P_{t+1}B(R_{t}+B^{\top}P_{t+1}B)^{-1}B^{\top}P_{t+1}A+Q_{t} \end{aligned} PTPt=QT=A⊤Pt+1A−A⊤Pt+1B(Rt+B⊤Pt+1B)−1B⊤Pt+1A+Qt
- 矩阵 K ξ K^{\xi} Kξ: K t ξ = ( R t + B ⊤ P t + 1 B ) − 1 B ⊤ P t + 1 A K^{\xi}_{t} = (R_{t}+B^{\top}P_{t+1}B)^{-1}B^{\top}P_{t+1}A Ktξ=(Rt+B⊤Pt+1B)−1B⊤Pt+1A
- 矩阵 K β K^{\beta} Kβ: K t β = ( R t + B ⊤ P t + 1 B ) − 1 B ⊤ K^{\beta}_{t} = (R_{t}+B^{\top}P_{t+1}B)^{-1}B^{\top} Ktβ=(Rt+B⊤Pt+1B)−1B⊤
- 向量 β \beta β: β T = − Q T ξ ^ T β t = ( A − B K t ξ ) ⊤ β t + 1 − Q t ξ ^ t \begin{aligned} \beta_{T} &= -Q_{T}\hat{\xi}_{T} \\ \beta_{t} &= (A-BK_{t}^{\xi})^{\top}\beta_{t+1}-Q_{t}\hat{\xi}_{t} \end{aligned} βTβt=−QTξ^T=(A−BKtξ)⊤βt+1−Qtξ^t
- 向量 α \alpha α: α T = ξ ^ T ⊤ Q T ξ ^ T α t = α t + 1 + ξ ^ t ⊤ Q t ξ ^ t − β t + 1 ⊤ K t β ⊤ ( R t + B ⊤ P t + 1 B ) K t β β t + 1 \begin{aligned} \alpha_{T} &= \hat{\xi}_{T}^{\top} Q_{T}\hat{\xi}_{T} \\ \alpha_{t} &= \alpha_{t+1} + \hat{\xi}_{t}^{\top}Q_{t}\hat{\xi}_{t}-\beta_{t+1}^{\top}{K_{t}^{\beta}}^{\top}(R_{t}+B^{\top}P_{t+1}B)K^{\beta}_{t}\beta_{t+1} \end{aligned} αTαt=ξ^T⊤QTξ^T=αt+1+ξ^t⊤Qtξ^t−βt+1⊤Ktβ⊤(Rt+B⊤Pt+1B)Ktββt+1
所有符号系统来源于附录引文1,推导从略。
有些资料中还将其写成:
u
t
=
K
t
(
ξ
^
t
−
ξ
t
)
+
f
t
u_{t} = K_{t}(\hat{\xi}_{t} - \xi_{t}) + f_{t}
ut=Kt(ξ^t−ξt)+ft 即反馈项+前馈项。其中参数定义如下:
- 矩阵 K K K: K t = ( B ⊤ P t B + R t ) − 1 B ⊤ P t A K_{t} = (B^{\top}P_{t}B+R_{t})^{-1}B^{\top}P_{t}A Kt=(B⊤PtB+Rt)−1B⊤PtA 其中 P P P 的定义与前一种方法相同。
- 前馈向量 f t f_{t} ft: f t = − ( B ⊤ P t B + R t ) − 1 B ⊤ ( P t ( A ξ ^ t − ξ ^ t ) + d t ) f_{t} = -(B^{\top}P_{t}B+R_{t})^{-1}B^{\top}(P_{t}(A\hat{\xi}_{t} - \hat{\xi}_{t})+d_{t}) ft=−(B⊤PtB+Rt)−1B⊤(Pt(Aξ^t−ξ^t)+dt)
- 向量 d t d_{t} dt: d t = ( A ⊤ − A ⊤ P t + 1 B ( B ⊤ P t + 1 B + R t ) − 1 B ⊤ ) ( P t + 1 ( A ξ ^ t − ξ ^ t + 1 ) + d t + 1 ) d_{t} = (A^{\top}-A^{\top}P_{t+1}B(B^{\top}P_{t+1}B+R_{t})^{-1}B^{\top})(P_{t+1}(A\hat{\xi}_{t} - \hat{\xi}_{t+1})+d_{t+1}) dt=(A⊤−A⊤Pt+1B(B⊤Pt+1B+Rt)−1B⊤)(Pt+1(Aξ^t−ξ^t+1)+dt+1) 其中 d T = 0 d_{T} = 0 dT=0。
LQT与多维高斯分布
假定要跟着的任务轨迹满足多维高斯分布,即
ξ
t
∼
N
(
μ
t
,
Σ
t
)
\xi_{t}\sim\mathcal{N}(\mu_{t}, \Sigma_{t})
ξt∼N(μt,Σt)。那么对于上述LQT问题,我们可以取:
ξ
^
t
=
μ
t
,
Q
t
=
Σ
t
−
1
\hat{\xi}_{t} = \mu_{t}, \quad Q_{t} = \Sigma_{t}^{-1}
ξ^t=μt,Qt=Σt−1 其它不变。
此时,对于批处理LQT方法,目标函数变为:
C
=
(
μ
−
S
ξ
ξ
1
−
S
u
U
)
⊤
Σ
−
1
(
μ
−
S
ξ
ξ
1
−
S
u
U
)
+
U
⊤
R
~
U
C = \left( \mu - S^{\xi}\xi_{1}-S^{u}U \right)^{\top}\Sigma^{-1}\left( \mu - S^{\xi}\xi_{1}-S^{u}U \right) + U^{\top}\tilde{R}U
C=(μ−Sξξ1−SuU)⊤Σ−1(μ−Sξξ1−SuU)+U⊤R~U 其中
μ
∈
R
T
C
D
,
Σ
∈
R
(
T
C
D
)
×
(
T
C
D
)
\mu \in\mathbb{R}^{TCD}, \Sigma\in\mathbb{R}^{(TCD)\times(TCD)}
μ∈RTCD,Σ∈R(TCD)×(TCD)。此时控制信号为:
U
∗
=
(
S
u
⊤
Σ
−
1
S
u
+
R
~
)
−
1
S
u
⊤
Σ
−
1
(
μ
−
S
ξ
ξ
1
)
U^{*} = ({S^{u}}^{\top}\Sigma^{-1}S^{u}+\tilde{R})^{-1}{S^{u}}^{\top}\Sigma^{-1}(\mu-S^{\xi}\xi_{1})
U∗=(Su⊤Σ−1Su+R~)−1Su⊤Σ−1(μ−Sξξ1)
对于高斯轨迹分布,LQT控制器还可以拓展为多坐标系下的任务参数化(Task-Parameterized)LQT控制器。假定系统中存在 P P P 个坐标系,此时我们可以将目标函数拓展为: C = ∑ j = 1 P ( μ ( j ) − ξ ) ⊤ Σ ( j ) − 1 ( μ ( j ) − ξ ) + U ⊤ R ~ U C = \sum_{j=1}^{P}\left( \mu^{(j)} - \xi \right)^{\top}{\Sigma^{(j)}}^{-1}\left( \mu^{(j)} - \xi \right) + U^{\top}\tilde{R}U C=j=1∑P(μ(j)−ξ)⊤Σ(j)−1(μ(j)−ξ)+U⊤R~U 其中 μ ( j ) , Σ ( j ) \mu^{(j)}, \Sigma^{(j)} μ(j),Σ(j) 均是定义在第 j j j 个坐标系下的均值与协方差。求解此问题,等同于首先求解: μ = arg min ξ ∑ j = 1 P ( μ ( j ) − ξ ) ⊤ Σ ( j ) − 1 ( μ ( j ) − ξ ) \mu = \argmin_{\xi}\sum_{j=1}^{P}\left( \mu^{(j)} - \xi \right)^{\top}{\Sigma^{(j)}}^{-1}\left( \mu^{(j)} - \xi \right) μ=ξargminj=1∑P(μ(j)−ξ)⊤Σ(j)−1(μ(j)−ξ) 然后求解: U ∗ = arg min U ( μ − ξ ) ⊤ Σ − 1 ( μ − ξ ) + U ⊤ R ~ U U^{*} = \argmin_{U}(\mu - \xi)^{\top}\Sigma^{-1}(\mu - \xi)+U^{\top}\tilde{R}U U∗=Uargmin(μ−ξ)⊤Σ−1(μ−ξ)+U⊤R~U 即首先求最优轨迹分布,然后就最优控制信号。对于批处理方式,可求得最优控制信号为: U ∗ = ( S u ⊤ Σ − 1 S u + R ~ ) − 1 S u ⊤ Σ − 1 ( μ − S ξ ξ 1 ) U^{*} = \left( {S^{u}}^{\top}\Sigma^{-1}S^{u} + \tilde{R} \right)^{-1}{S^{u}}^{\top}\Sigma^{-1}\left( \mu - S^{\xi}\xi_{1} \right) U∗=(Su⊤Σ−1Su+R~)−1Su⊤Σ−1(μ−Sξξ1) 其中: Σ − 1 = ∑ j = 1 P Σ ( j ) − 1 , μ = Σ ∑ j = 1 P Σ ( j ) − 1 μ ( j ) \Sigma^{-1} = \sum_{j=1}^{P}{\Sigma^{(j)}}^{-1},\quad \mu = \Sigma\sum_{j=1}^{P}{\Sigma^{(j)}}^{-1}\mu^{(j)} Σ−1=j=1∑PΣ(j)−1,μ=Σj=1∑PΣ(j)−1μ(j)
- 感谢 钟宜生——《最优控制》清华大学出版社,2015年。
- Thanks Sylvein Calinon, A Tutorial on Task-Parameterized Movement Learning and Retrieval in International Service Robotis, 2016.
- Thanks Sylvein Calinon, et al, Learning Control. in Humanoid Robotics: a Reference, 2019.