本文仅供学习使用
本文参考:
B站:DR_CAN
Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-3 线性二次型调节器(LQR)
本章将讨论基于贝尔曼最优化理论的动态规划方法以及线性二次型调节器。动态规划是一种针对最优控制问题的优化方法,它将问题分解为一系列子问题,并使用递归的方式求解这些子问题,最终得到最优解。本章将首先介绍动态规划的基本原理和贝尔曼最优化理论的核心概念,然后讨论如何使用数值方法求解动态规划问题。
在讨论动态规划方法的同时,本章还将专注于线性系统和使用二次型作为性能指标的最优控制问题。我们将介绍连续型以及离散型系统解析解的求解方法,通过计算系统的状态反馈增益矩阵,实现对系统性能的优化控制。同时,本章也会详细讨论如何实现非零参考点控制,即轨迹追踪控制。最后,将以无人机高度控制作为案例详细说明线性二次型调节器的构建与使用。
本章的学习目标包括:
- 理解动态规划的概念。
- 掌握动态规划的数值求解方法。
- 掌握线性二次型调节器的控制方法,学习线性二次型调节器的设计原理和应用方法,包括离散形式和连续形式的线性二次型调节器。
- 掌握轨迹追踪问题的控制方法,学习如何通过矩阵变换将轨迹追踪控制问题转换为调节控制问题,并了解不同参数对控制表现的影响。
1. 贝尔曼最优化理论
动态规划(dynamic programming)
的名字里面有一个 programming,虽然在这里并非指编程(而是指规划),但是可以从编程的思路来理解它。此方法是建立在理查德·贝尔曼(Richard Bellman)
于20世纪50年代提出的最优化理论的基础上的,并应用于多个领域,包括航空工程和经济学等。贝尔曼最优化理论的英文原文是这样描述的:
An optimal policy has the property that whatever the initial state and initial decisionare, the remaining decisions must constitute an optimal policy with regard to the stateresulting from the first decision.
这段话主要包含两个重要部分:第一,不管初始状态是什么,也不管初始控制决策是什么;第二,剩余的决策一定要符合最优策略。
动态规划就是贝尔曼最优化控制的一个方法。下面通过一个最短路径的例子来直观地讲解动态规划。
图中的起点是A点,目的地是C点,在A、C两点之间在一个正方形的障碍物。线段上的数字表示距离,目标是找到一条从起点出发到终点的短路径。
从A点到C点有两条最短路径,分别为路径一A-B-D-E-C(1+2+1+2=6)
和路径二 A-B-F-G-C(1+2+1+2=6)
。由贝尔曼最优化理论可知,从这两条最短径的任意一点出发,后续的路径都是最优的。例如初始点的位置在D点,从D点到C点的最优路径必然与路径一的后半段重合,即D-E-C(1+2=3),而不会是一条新的路径,如D-E-G-C(1+1+2=4)。同理,如果初始位置在F点,则它到C点的最优路径必定与路径二的后半段重合,即F-G-C(1+2=3)。
如果由于某种原因,从A点出发后走到了H点,那么此刻的最优路径就是A-B-H-E-C(1+5+2+2=10),它也与路径一中的最后一段E-C重合。虽然A-B-H-E-C并不是全局的最优解,但是当初始位置在点时,这条路径便是当前初始位置条件下的最优解。
贝尔曼最优化理论充分体现了“动态”的概念,
动态规划是面向未来的。这意味着不论前面的选择是否为最优,在以当下时刻为初始状态时,后续的决策一定都是最优的决策最优路径在最后的阶段总会“殊途同归”
2. 数值方法
本节将通过一个例子深入分析并详细讲解如何将动态规划的理念运用在控制问题中并且使用数值求解的方法得到最优控制解。
2.1 问题提出–无人机高度控制
考虑无人机高度控制案例,动态方程为:
m
d
2
h
(
t
)
d
t
2
=
f
(
t
)
−
m
g
m\frac{\mathrm{d}^2h\left( t \right)}{\mathrm{d}t^2}=f\left( t \right) -mg
mdt2d2h(t)=f(t)−mg
其中:
x
1
(
t
)
x_1\left( t \right)
x1(t)表示高度;
x
2
(
t
)
=
d
h
(
t
)
d
t
=
v
(
t
)
x_2\left( t \right) =\frac{\mathrm{d}h\left( t \right)}{\mathrm{d}t}=v\left( t \right)
x2(t)=dtdh(t)=v(t)表示速度。假设无人机的质量为
m
=
1
k
g
m=1\mathrm{kg}
m=1kg,重力加速度为
h
=
10
m
/
s
2
h=10\mathrm{m}/\mathrm{s}^2
h=10m/s2,可得无人机的加速度:
d
2
h
(
t
)
d
t
2
=
a
(
t
)
=
(
u
(
t
)
−
g
)
=
(
u
(
t
)
−
10
)
\frac{\mathrm{d}^2h\left( t \right)}{\mathrm{d}t^2}=a\left( t \right) =\left( u\left( t \right) -g \right) =\left( u\left( t \right) -10 \right)
dt2d2h(t)=a(t)=(u(t)−g)=(u(t)−10)
为了简化分析,在本节中设本系统的输入为:
u
a
(
t
)
=
(
u
(
t
)
−
10
)
u_{\mathrm{a}\left( t \right)}=\left( u\left( t \right) -10 \right)
ua(t)=(u(t)−10)
在本例中,
u
a
u_{\mathrm{a}}
ua作为标量处理,即无人机的加速度
考虑以下控制场景:控制无人机在最短的时间内从地面 x 1 ( t 0 ) = 0 m x_1\left( t_0 \right) =0\mathrm{m} x1(t0)=0m上升到 x 1 ( t f ) = 10 m x_1\left( t_{\mathrm{f}} \right) =10\mathrm{m} x1(tf)=10m的高度,并且保证无人机在静止位置出发,在达到目标高度的同时速度降为0m/s,即 x 2 ( t 0 ) + x 2 ( t f ) = 10 m / s x_2\left( t_0 \right) +x_2\left( t_{\mathrm{f}} \right) =10\mathrm{m}/\mathrm{s} x2(t0)+x2(tf)=10m/s。 t 0 t_0 t0为初始时间, t f t_f tf为末端时间。
同时为无人机设置约束条件为:
−
3
m
/
s
2
⩽
u
a
(
t
)
⩽
2
m
/
s
2
0
m
/
s
⩽
x
2
(
t
)
⩽
3
m
/
s
-3\mathrm{m}/\mathrm{s}^2\leqslant u_{\mathrm{a}\left( t \right)}\leqslant 2\mathrm{m}/\mathrm{s}^2 \\ 0\mathrm{m}/\mathrm{s}\leqslant x_2\left( t \right) \leqslant 3\mathrm{m}/\mathrm{s}
−3m/s2⩽ua(t)⩽2m/s20m/s⩽x2(t)⩽3m/s
这一约束条件限制了无人机的加速度和速度。综合起来便构成了带有约束的最优控制问题。
2.2 暴力算法
对于求解最短时间的最优化问题,其性能指标可以定义为:
J
=
∫
t
0
t
f
d
t
=
t
f
−
t
0
J=\int_{t_0}^{t_{\mathrm{f}}}{\mathrm{d}t}=t_{\mathrm{f}}-t_0
J=∫t0tfdt=tf−t0
其中,
t
0
t_0
t0为初始时间,
t
f
t_f
tf为末端时间。此时的控制目标是找到合适的
u
(
t
)
u(t)
u(t),使得性能指标
J
J
J最小且满足约束条件。这个看似简单的问题处理起来并不容易,这是因为“时间”并不是系统的状态变量(不能够简单地使用控制量来表达)。为了解决这个问题,我们可以从动态规划的本质入手,通过数值模拟的方法找到最优解。
首先将该系统进行离散化分析,所示,横轴是速度的离散,纵轴是高度的离散。在本小节中,为了便于分析讲解,高度
x
1
(
t
)
x_1\left( t \right)
x1(t)将以2m的间隔划分(离散)为5个区间,因此离散后的高度有
n
x
1
=
6
n_{\mathrm{x}_1}=6
nx1=6个节点;速度
x
2
(
t
)
x_2\left( t \right)
x2(t)将以1m/s划分(离散)为3个区间,因此离散后的速度有
n
x
2
=
4
n_{\mathrm{x}_2}=4
nx2=4个节点。无人机起点与终点的位置是固定的,在图中显示为两个实心的节点
[
0
,
0
]
T
\left[ 0, 0 \right] ^{\mathrm{T}}
[0,0]T与
[
10
,
0
]
T
\left[ 10,0 \right] ^{\mathrm{T}}
[10,0]T。图中的空心圆圈则表示了无人机所有的可能状态,可以预见,如果离散区间更小,就会有更多的可能状态。
虚线显示了一条无人机可能的行进轨迹,如果按照这一轨迹运行,它将从起点 [ 0 , 0 ] T \left[ 0, 0 \right] ^{\mathrm{T}} [0,0]T出发,在高度 2m的时候速度为 1m/s;接着上升到 4m的位置,此时速度为2m/s。以此类推,完整的运行轨迹为00-21-42-63-82-10 0。为了找到时间最短的一条路径,最简单的办法就是将所有可能的路径都标注出来,采用暴力求解的算法(穷举法)计算每一条路径所需的时间。在不考虑约束的条件下,从起点到2m的高度时有 n x 2 = 4 n_{\mathrm{x}_2}=4 nx2=4条可行路径。之后每一个高度区间的每一个节点都有 n x 2 = 4 n_{\mathrm{x}_2}=4 nx2=4条可行路径。因此,使用举法,从起点到终点一共存在256条可行的路径。这意味着暴力算法需要计算并存储256组结果,之后将其中不满足约束条件的路径过滤掉,再对所有可行路径所需的时间进行比较,选择最短的时间作为最优结果.
随着高度离散区间(在动态规划里也称为级(stage)
)的增加,运算的次数呈指数增长,对于本例,如果将总长度离散为
n
x
1
=
100
n_{\mathrm{x}_1}=100
nx1=100个区间(高度控制分辨率为0.1m),速度离散为
n
x
2
=
500
n_{\mathrm{x}_2}=500
nx2=500个区间,使用穷举法将需要分析惊人的1.9x10^267条路径,因此暴力算法很难应用在实时控制中
2.3 逆向分级求解方法
使用动态规划的算法可以有效地提高运算效率,最优路径在最后的阶段总会殊途同归。根据这一思想,可以采用逆向分级(backward multi stages)
的分析方法,将原问题分解为若干子问题(级)进行求解,可以有效地避免重复的计算。在本例中,级是通过高度
x
1
(
t
)
x_1\left( t \right)
x1(t),划分的,每一级之间的距离为
Δ
x
1
=
2
m
\varDelta x_1=2\mathrm{m}
Δx1=2m。在离散系统中,控制量
u
a
(
t
)
u_{\mathrm{a}\left( t \right)}
ua(t)在两级之间保持不变,即无人机加速度保持不变,因此速度的变化是线性的,在两级之间的平均速度为
v
a
v
g
[
k
→
k
+
1
]
=
1
2
(
v
[
k
]
+
v
[
k
+
1
]
)
=
1
2
(
x
2
[
k
]
+
x
2
[
k
+
1
]
)
v_{\mathrm{avg}\left[ k\rightarrow k+1 \right]}=\frac{1}{2}\left( v\left[ k \right] +v\left[ k+1 \right] \right) =\frac{1}{2}\left( x_2\left[ k \right] +x_2\left[ k+1 \right] \right)
vavg[k→k+1]=21(v[k]+v[k+1])=21(x2[k]+x2[k+1])
其中,
x
2
[
k
]
x_2\left[ k \right]
x2[k]和
x
2
[
k
+
1
]
x_2\left[ k+1 \right]
x2[k+1]是无人机在
k
k
k级和
k
+
1
k+1
k+1级的速度,使用方括号代表离散变量。因此无人机从
k
k
k级到
k
+
1
k+1
k+1级所需要的时间为:
Δ
t
[
k
→
k
+
1
]
=
Δ
x
1
v
a
v
g
[
k
→
k
+
1
]
=
2
Δ
x
1
x
2
[
k
]
+
x
2
[
k
+
1
]
\varDelta t\left[ k\rightarrow k+1 \right] =\frac{\varDelta x_1}{v_{\mathrm{avg}\left[ k\rightarrow k+1 \right]}}=\frac{2\varDelta x_1}{x_2\left[ k \right] +x_2\left[ k+1 \right]}
Δt[k→k+1]=vavg[k→k+1]Δx1=x2[k]+x2[k+1]2Δx1
k
k
k级到
k
+
1
k+1
k+1级系统的控制量即加速度为
u
a
[
k
→
k
+
1
]
=
v
[
k
+
1
]
−
v
[
k
]
Δ
t
[
k
→
k
+
1
]
=
x
2
[
k
+
1
]
−
x
2
[
k
]
2
Δ
x
1
x
2
[
k
]
+
x
2
[
k
+
1
]
=
x
2
[
k
+
1
]
2
−
x
2
[
k
]
2
2
Δ
x
1
u_{\mathrm{a}\left[ k\rightarrow k+1 \right]}=\frac{v\left[ k+1 \right] -v\left[ k \right]}{\varDelta t\left[ k\rightarrow k+1 \right]}=\frac{x_2\left[ k+1 \right] -x_2\left[ k \right]}{\frac{2\varDelta x_1}{x_2\left[ k \right] +x_2\left[ k+1 \right]}}=\frac{x_2\left[ k+1 \right] ^2-x_2\left[ k \right] ^2}{2\varDelta x_1}
ua[k→k+1]=Δt[k→k+1]v[k+1]−v[k]=x2[k]+x2[k+1]2Δx1x2[k+1]−x2[k]=2Δx1x2[k+1]2−x2[k]2
1. 数学推导