前言
本文主要记录线性二次型调节器(Linear quadratic regulator,LQR)原理和推导过程,并使用基于运动学模型的LQR实现车辆路径跟踪。
提示:以下是本篇文章正文内容,下面案例可供参考
一、全状态反馈控制系统
假设有一个线性系统用状态向量表示:
x
˙
=
A
x
+
B
u
y
˙
=
C
x
+
D
u
\begin{align} \dot{x} =Ax+Bu \\ \dot{y} =Cx+Du \\ \end{align}
x˙=Ax+Buy˙=Cx+Du
其中,
x
(
t
)
∈
R
n
x(t) \in R^n
x(t)∈Rn,
u
(
t
)
∈
R
m
u(t) \in R^m
u(t)∈Rm。
设计状态反馈控制器
u
=
−
K
x
\begin{align} u = -Kx \end{align}
u=−Kx
将式(3)带入系统状态方程中,可得:
x
˙
=
(
A
−
B
K
)
x
=
A
c
x
\begin{align} \dot{x}=(A-BK)x=A_cx \end{align}
x˙=(A−BK)x=Acx
设定系统中的各个状态量都可知,式(1)所示的开环系统,传递函数的极点就是系统矩阵A的特征值。式(4)所示的闭环系统,通过配置反馈矩阵 K K K,可以使得闭环系统达到所期望的系统状态。
二、LQR控制器
LQR(Linear Quadratic Regulator,线性二次型调节器)是一种用于解决最优控制问题的数学方法,特别是在系统可以表示为线性方程,且性能指标可以表示为二次型的情况下。LQR通常用于设计线性系统的控制器,使得系统从一个初始状态转移到期望的最终状态,同时最小化一个给定的性能指标。
2.1 连续时间
LQR目标是找到一组控制量
u
0
,
u
1
,
.
.
.
u_0, u_1, ...
u0,u1,...,使得
x
0
,
x
1
,
.
.
.
x_0, x_1, ...
x0,x1,...能够快速、稳定地趋近于零,并保持平衡(系统达到稳定状态),同时控制量
u
0
,
u
1
,
.
.
.
u_0, u_1, ...
u0,u1,...尽可能小。
这是一个典型的多目标优化最优控制稳定,选取目标函数为
J
=
1
2
∫
0
∞
(
x
T
Q
x
+
u
T
R
u
)
d
t
\begin{align} J=\frac{1}{2} \int_{0}^{\infty } (x^TQx + u^TRu)dt \end{align}
J=21∫0∞(xTQx+uTRu)dt
其中,Q、R分别是需要设计的半正定矩阵和正定矩阵。Q矩阵元素变大意味着希望状态量能够快速趋近于零,R矩阵元素变大意味着希望控制输入能够尽可能小,系统的状态衰减将变慢。Q、R的设置需结合具体的实际应用场景来调节。
将
u
=
−
K
x
u=-Kx
u=−Kx带入代价函数,可得:
J
=
1
2
∫
0
∞
x
T
(
Q
+
K
T
R
K
)
x
d
t
\begin{align} J=\frac{1}{2} \int_{0}^{\infty } x^T(Q + K^TRK)xdt \end{align}
J=21∫0∞xT(Q+KTRK)xdt
假设存在一个常量矩阵
P
P
P,使得:
d
d
t
x
T
P
x
=
−
x
T
(
Q
+
K
T
R
K
)
x
\begin{align} \frac{d}{dt}x^TPx=-x^T(Q + K^TRK)x \end{align}
dtdxTPx=−xT(Q+KTRK)x
将式(7)带入式(6)可得:
J
=
−
1
2
∫
0
∞
d
d
t
(
x
T
P
x
)
d
t
=
−
1
2
x
T
P
x
∣
0
∞
=
1
2
x
T
(
0
)
P
x
(
0
)
\begin{align} J=-\frac{1}{2} \int_{0}^{\infty } \frac{d}{dt}(x^TPx) dt=-\frac{1}{2}x^TPx|_0^\infty =\frac{1}{2}x^T(0)Px(0) \end{align}
J=−21∫0∞dtd(xTPx)dt=−21xTPx∣0∞=21xT(0)Px(0)
上式当
t
→
∞
t \to \infty
t→∞时,系统状态向量
x
(
t
)
x(t)
x(t)趋近于0。
将式(7)左边微分展开,可得:
x
˙
T
P
x
+
x
T
P
x
˙
+
x
T
(
Q
+
K
T
R
K
)
x
=
0
\begin{align} \dot x^TPx + x^TP\dot x+x^T(Q + K^TRK)x = 0 \end{align}
x˙TPx+xTPx˙+xT(Q+KTRK)x=0
将
x
˙
=
(
A
−
B
K
)
x
\dot x=(A-BK)x
x˙=(A−BK)x带入上式并整理可得:
x
T
(
A
T
P
−
K
T
B
T
P
+
P
A
−
P
B
K
+
Q
+
K
T
R
K
)
x
=
0
\begin{align} x^T(A^TP - K^TB^TP+PA-PBK+Q+K^TRK)x = 0 \end{align}
xT(ATP−KTBTP+PA−PBK+Q+KTRK)x=0
若上式有解,则括号中的部分必须为零,即:
A
T
P
−
K
T
B
T
P
+
P
A
−
P
B
K
+
Q
+
K
T
R
K
=
0
\begin{align} A^TP - K^TB^TP+PA-PBK+Q+K^TRK = 0 \end{align}
ATP−KTBTP+PA−PBK+Q+KTRK=0
令
K
=
R
−
1
B
T
P
K=R^{-1}B^TP
K=R−1BTP,上式可化简为:
A
T
P
+
P
A
−
P
B
R
−
1
B
T
P
+
Q
=
0
\begin{align} A^TP +PA-PBR^{-1}B^TP+Q= 0 \end{align}
ATP+PA−PBR−1BTP+Q=0
式(12)中,
A
,
B
,
Q
,
R
A, B, Q, R
A,B,Q,R都是已知量,通过上式可求解出
P
P
P,式(12)就是著名的连续时间代数Riccati方程。
连续时间下的LQR算法步骤如下:
1.选择参数矩阵
Q
,
R
Q, R
Q,R(分别满足半正定和正定)
2.根据公式(12)求解Riccati方程得到矩阵P
A
T
P
+
P
A
−
P
B
R
−
1
B
T
P
+
Q
=
0
\begin{aligned} A^TP +PA-PBR^{-1}B^TP+Q= 0 \end{aligned}
ATP+PA−PBR−1BTP+Q=0
3. 根据
P
P
P计算增益
K
=
R
−
1
B
T
P
K=R^{-1}B^TP
K=R−1BTP
4. 计算控制量
u
∗
=
−
K
x
u^{*} = -Kx
u∗=−Kx
2.2 离散时间
假设一个离散系统表示为
x
k
+
1
=
A
x
k
+
1
+
B
u
k
\begin{align} \mathrm{x}_{k+1}= A \mathrm{x}_{k+1}+B \mathrm{u}_{k} \end{align}
xk+1=Axk+1+Buk
离散LQR代价函数为:
J
=
∑
k
=
0
N
−
1
(
x
k
T
Q
x
k
+
u
k
T
R
u
k
)
+
x
N
T
Q
f
x
N
\begin{align} J= \sum_{k=0}^{N-1} (\mathrm{x}_k^T Q \mathrm{x}_k+\mathrm{u}_k^TR\mathrm{u}_k)+\mathrm{x}_N^TQ_f\mathrm{x}_N \end{align}
J=k=0∑N−1(xkTQxk+ukTRuk)+xNTQfxN
其中,
Q
Q
Q为状态代价矩阵,
Q
f
Q_f
Qf为最终状态代价矩阵,
R
R
R为输入代价矩阵,
N
N
N为时间范围。
求解离散LQR的方法有最小二乘法、动态规划算法等,在此不做详细介绍,详情参考基础算法 - LQR - 离散时间有限边界
根据参考链接中动态规划算法的求解结果,给出离散LQR的求解步骤:
- 确定迭代范围 N N N,设置迭代初始值 P N = Q f P_N=Q_f PN=Qf;
- 循环迭代,
k
=
N
,
.
.
.
,
1
k= N,...,1
k=N,...,1
P k − 1 = Q + A T P k A − A T P k B ( R + B T P k B ) − 1 B T P k A \begin{aligned} P_{k-1}=Q+A^TP_{k}A - A^TP_{k}B(R+B^TP_{k}B)^{-1}B^TP_{k}A \end{aligned} Pk−1=Q+ATPkA−ATPkB(R+BTPkB)−1BTPkA - 反馈系数 K k = − ( R + B T P k + 1 B ) − 1 B T P k + 1 A K_k=-(R+B^TP_{k+1}B)^{-1}B^TP_{k+1}A Kk=−(R+BTPk+1B)−1BTPk+1A
- 优化的控制量 u k = K k x t \mathrm{u}_k = K_k\mathrm{x}_t uk=Kkxt
三、基于车辆运动学模型的LQR优化
采用以车辆后轴中心为原点的运动学模型

图中的部分符号和定义如下:
A
、
B
A、B
A、B:车辆前轴、后轴中心点;
P
P
P:规划路径中距后轴中心最近的点;
L
L
L:车辆轴距;
v
v
v:车辆后轴中心处的速度;
s
˙
\dot s
s˙:目标点处的速度;
ψ
\psi
ψ:车辆航向角;
ψ
t
\psi_t
ψt:
P
P
P点处的航向角;
δ
f
\delta_f
δf:车辆的前轮转角;
ψ
e
\psi_e
ψe:
P
P
P点处航向角与车辆航向角之间的偏差;
e
y
e_y
ey:前轴中线点到
P
P
P点切线方向的偏差;
d
d
d:后轴中心点到目标点的距离;
对应的运动学模型如下:
x
˙
=
v
⋅
cos
ψ
y
˙
=
v
⋅
sin
ψ
ψ
˙
=
v
⋅
tan
δ
f
L
\begin{align} \dot x = v \cdot \cos \psi \\ \dot y = v \cdot \sin \psi \\ \dot \psi = \frac{v \cdot \tan \delta_f}{L} \end{align}
x˙=v⋅cosψy˙=v⋅sinψψ˙=Lv⋅tanδf
状态量为:
X
=
[
x
,
y
,
ψ
]
T
X=[x,y,\psi]^T
X=[x,y,ψ]T,控制量为:
u
=
[
v
,
δ
]
T
\mathrm{u}=[v,\delta]^T
u=[v,δ]T。
将上述模型在参考点
X
r
=
[
x
r
,
y
r
,
ψ
r
]
X_r=[x_r,y_r,\psi_r]
Xr=[xr,yr,ψr]处利用泰勒级数展开线性化:
X
˙
=
f
(
X
,
u
)
X
˙
=
X
˙
r
+
f
X
′
(
X
r
,
u
r
)
[
X
−
X
r
]
+
f
u
′
(
X
r
,
u
r
)
[
u
−
u
r
]
\begin{gather} \dot X =f(X, u) \\ \dot X =\dot X_{r} + f^{'}_{X}(X_{r},u_{r})[X-X_{r}]+f^{'}_{u}(X_{r},u_{r})[u-u_{r}]\\ \end{gather}
X˙=f(X,u)X˙=X˙r+fX′(Xr,ur)[X−Xr]+fu′(Xr,ur)[u−ur]
可得状态误差方程:
X
~
˙
=
A
X
~
+
B
u
~
\begin{align} \dot{\tilde{X}} =A\tilde{X}+B\tilde{\mathrm{u}} \end{align}
X~˙=AX~+Bu~
其中:
X
~
=
[
x
−
x
r
y
−
y
r
ψ
−
ψ
r
]
\tilde{X}=\begin{bmatrix} x - x_r \\ y - y_r \\ \psi - \psi_r \end{bmatrix}
X~=
x−xry−yrψ−ψr
u ~ = [ v − v r δ − δ r ] \tilde{\mathrm{u}}=\begin{bmatrix} v - v_r \\ \delta - \delta_r \end{bmatrix} u~=[v−vrδ−δr]
A = [ 0 0 − v r sin ψ r 0 0 v r cos ψ r 0 0 0 ] A=\begin{bmatrix} 0& 0& -v_r\sin \psi _r\\ 0& 0& v_r\cos \psi _r\\ 0& 0& 0 \end{bmatrix} A= 000000−vrsinψrvrcosψr0
B = [ cos ψ r 0 sin ψ r 0 tan δ r L v r L ⋅ cos 2 δ r ] B=\begin{bmatrix} \cos \psi _r& 0 \\ \sin \psi _r& 0 \\ \frac{\tan \delta _r}{L} & \frac{v_r}{L\cdot \cos ^2 \delta _r} \end{bmatrix} B= cosψrsinψrLtanδr00L⋅cos2δrvr
将上述方程利用前向欧拉法进行离散化可得:
X
~
(
k
+
1
)
=
A
~
X
~
(
k
)
+
B
~
u
~
(
k
)
\begin{align} \tilde{X}(k+1) = \tilde{A}\tilde{X}(k)+\tilde{B}\tilde{\mathrm{u}}(k) \end{align}
X~(k+1)=A~X~(k)+B~u~(k)
其中:
X
~
(
k
)
=
[
x
(
k
)
−
x
r
y
(
k
)
−
y
r
ψ
(
k
)
−
ψ
r
]
\tilde{X}(k)=\begin{bmatrix} x(k) - x_r \\ y(k) - y_r \\ \psi(k) - \psi_r \end{bmatrix}
X~(k)=
x(k)−xry(k)−yrψ(k)−ψr
u
~
(
k
)
=
[
v
(
k
)
−
v
r
δ
(
k
)
−
δ
r
]
\tilde{\mathrm{u}}(k)=\begin{bmatrix} v(k) - v_r \\ \delta(k) - \delta_r \end{bmatrix}
u~(k)=[v(k)−vrδ(k)−δr]
A
~
=
A
⋅
T
+
I
=
[
1
0
−
v
r
⋅
T
⋅
sin
ψ
r
0
1
v
r
⋅
T
⋅
cos
ψ
r
0
0
1
]
\tilde{A}=A\cdot T+I=\begin{bmatrix} 1& 0& -v_r \cdot T \cdot \sin \psi _r \\ 0& 1& v_r \cdot T \cdot \cos \psi _r \\ 0& 0& 1 \end{bmatrix}
A~=A⋅T+I=
100010−vr⋅T⋅sinψrvr⋅T⋅cosψr1
B ~ = B ⋅ T = [ T cos ψ r 0 T sin ψ r 0 T ⋅ tan δ r L v r ⋅ T L ⋅ cos 2 δ r ] \tilde{B}=B\cdot T=\begin{bmatrix} T\cos \psi _r & 0 \\ T\sin \psi _r & 0 \\ \frac{T \cdot \tan \delta _r}{L} & \frac{v_r \cdot T}{L\cdot \cos ^2 \delta _r} \end{bmatrix} B~=B⋅T= TcosψrTsinψrLT⋅tanδr00L⋅cos2δrvr⋅T
式中, T T T为采样步长, I I I为单位矩阵,维度与矩阵 A A A一致。
采用LQR进行控制量求解的步骤包括:
- 确定迭代范围 N N N,预设精度 e p s eps eps;
- 设置 Q 、 R Q、R Q、R矩阵,设置迭代初始值为 P N = Q P_N=Q PN=Q;
- 根据车辆状态信息、目标点计算偏差方程中的 A 、 B A、B A、B矩阵(对应上述偏差方程中 A ~ 、 B ~ \tilde{A}、\tilde{B} A~、B~);
- 循环迭代,
k
=
N
,
.
.
.
,
1
k= N,...,1
k=N,...,1
P k − 1 = Q + A T P k A − A T P k B ( R + B T P k B ) − 1 B T P k A \begin{aligned} P_{k-1}=Q+A^TP_{k}A - A^TP_{k}B(R+B^TP_{k}B)^{-1}B^TP_{k}A \end{aligned} Pk−1=Q+ATPkA−ATPkB(R+BTPkB)−1BTPkA
若 ∣ ∣ P k − 1 − P k ∣ ∣ < e p s ||P_{k-1} - P_{k}||<eps ∣∣Pk−1−Pk∣∣<eps,结束循环; - 计算反馈系数 K = − ( R + B T P k B ) − 1 B T P k A K=-(R+B^TP_{k}B)^{-1}B^TP_{k}A K=−(R+BTPkB)−1BTPkA
- 优化的控制偏差量为 u ~ = K X ~ \tilde{\mathrm{u}} = K\tilde{X} u~=KX~
- 进一步计算得控制量 u \mathrm{u} u。
车辆前进和后退控制的唯一区别是:前进速度为正,后退速度为负;
车辆方向信息始终采用车辆朝向,即车头对应的方向。
参考文献
1、【控制理论】离散及连续的LQR控制算法原理推导
2、基础算法 - LQR - 离散时间有限边界
3、基于车辆运动学模型的LQR轨迹跟踪控制器
&spm=1001.2101.3001.5002&articleId=139081578&d=1&t=3&u=1d6be16320ac418bb48a9a84ea84e83d)
1万+

被折叠的 条评论
为什么被折叠?



