前言
笔者最近学习MPC相关论文,发现好几个月前学的基础建模部分都快忘完了/(ㄒoㄒ)/~~,因此决定在博客上记录一下自己学习思考的过程,一是分享,二是为自己复习巩固用。
本文基于Bilibili 忠厚老实的老王,主页:https://space.bilibili.com/287989852
思路
通过简化车运动状态,基于几何关系建立微分方程,适用于低速、大转弯半径情况。
建模
设定在惯性坐标系XOY下,有一简化的车辆模型,如下图所示。
其中:
- C G CG CG表示质心
- δ f \delta _{f} δf与 δ r \delta _{r} δr分别表示前后轮与车辆朝向夹角
- a a a、 b b b分别表示车辆前后轮与质心的距离
- φ φ φ表示车辆的横摆角(车辆朝向与惯性坐标系X轴夹角)
- β β β表示质心侧滑角(车辆速度与朝向的夹角,比如车辆漂移时就会存在大侧滑角)
- φ + β φ+\beta φ+β表示车辆的偏航角
- V 、 V x 、 V y V、V_{x}、V_{y} V、Vx、Vy分别表示质心速度以及其在 x 、 y x、y x、y方向上的分量
- R R R表示车辆转弯半径,为前轮转角垂线与后轮转角垂线焦点与质心CG的连线
对于一辆汽车,从驾驶员角度出发,我们能控的只有方向盘和油门刹车,简化为
V
与
δ
,即
u
=
[
V
δ
]
V与δ,即 u=\begin{bmatrix} V & \delta \end{bmatrix}
V与δ,即u=[Vδ],同时设定状态量为车辆的横纵向分速度与偏航角速度,则
x
=
[
V
x
V
y
φ
˙
+
β
˙
]
x=\begin{bmatrix} V_x & V_y &\dot{\varphi}+\dot{\beta} \end{bmatrix}
x=[VxVyφ˙+β˙]。
由几何关系可得:
{
V
x
=
V
∗
c
o
s
(
β
+
φ
)
V
y
=
V
∗
s
i
n
(
β
+
φ
)
φ
˙
+
β
˙
=
V
/
R
(1)
\left\{\begin{matrix} V_x = V*cos(\beta+\varphi ) \\ V_y = V*sin(\beta+\varphi ) \\ \dot{\varphi}+\dot{\beta} = V/R \end{matrix}\right.\tag{1}
⎩
⎨
⎧Vx=V∗cos(β+φ)Vy=V∗sin(β+φ)φ˙+β˙=V/R(1)
上式第三行可将车辆转弯理解为绕质心CG做圆周运动,根据线速度与角速度公式
ω
=
V
/
R
\omega=V/R
ω=V/R得到。至此我们就完成了建模的第一步,下面进行近似与变形。
几何近似
根据简单的几何关系,标出图中三角形内各角度如下:
根据正弦公式(三角形一条边比上对角=另一条边比上对角),我们可以得到:
a
s
i
n
(
δ
f
−
β
)
)
=
R
s
i
n
(
π
2
−
δ
f
)
)
(2)
\frac{a}{sin(\delta _f-\beta))}=\frac{R}{sin(\frac{\pi}{2}-\delta _f))}\tag{2}
sin(δf−β))a=sin(2π−δf))R(2)
b
s
i
n
(
δ
r
+
β
)
)
=
R
s
i
n
(
π
2
−
δ
r
)
)
(3)
\frac{b}{sin(\delta _r+\beta))}=\frac{R}{sin(\frac{\pi}{2}-\delta _r))}\tag{3}
sin(δr+β))b=sin(2π−δr))R(3)
将上两式变形可得:
a
R
=
s
i
n
(
δ
f
−
β
)
s
i
n
(
π
2
−
δ
f
)
=
s
i
n
δ
f
c
o
s
β
−
c
o
s
δ
f
s
i
n
β
c
o
s
δ
f
=
t
a
n
δ
f
c
o
s
β
−
s
i
n
β
(4)
\frac{a}{R}=\frac{sin(\delta_f-\beta)}{sin(\frac{\pi}{2}-\delta_f)}=\frac{sin\delta_fcos\beta-cos\delta_fsin\beta}{cos\delta_f}=tan\delta_fcos\beta-sin\beta\tag{4}
Ra=sin(2π−δf)sin(δf−β)=cosδfsinδfcosβ−cosδfsinβ=tanδfcosβ−sinβ(4)
b
R
=
s
i
n
(
δ
r
+
β
)
s
i
n
(
π
2
−
δ
r
)
=
s
i
n
δ
r
c
o
s
β
+
c
o
s
δ
r
s
i
n
β
c
o
s
δ
r
=
t
a
n
δ
r
c
o
s
β
+
s
i
n
β
(5)
\frac{b}{R}=\frac{sin(\delta_r+\beta)}{sin(\frac{\pi}{2}-\delta_r)}=\frac{sin\delta_rcos\beta+cos\delta_rsin\beta}{cos\delta_r}=tan\delta_rcos\beta+sin\beta\tag{5}
Rb=sin(2π−δr)sin(δr+β)=cosδrsinδrcosβ+cosδrsinβ=tanδrcosβ+sinβ(5)
因为
C
G
CG
CG表示质心,其位置会随车辆运动过程动态变化,因此
a
、
b
a、b
a、b并非定值,但其和
a
+
b
=
L
a+b=L
a+b=L始终为车辆轴距长度,因此我们将式(4)(5)相加得:
a
+
b
R
=
t
a
n
δ
f
c
o
s
β
−
s
i
n
β
+
t
a
n
δ
r
c
o
s
β
+
s
i
n
β
=
L
R
(6)
\frac{a+b}{R}=tan\delta_fcos\beta-sin\beta+tan\delta_rcos\beta+sin\beta=\frac{L}{R}\tag{6}
Ra+b=tanδfcosβ−sinβ+tanδrcosβ+sinβ=RL(6)
因此:
1
R
=
1
L
(
t
a
n
δ
f
c
o
s
β
+
t
a
n
δ
r
c
o
s
β
)
(7)
\frac{1}{R}=\frac{1}{L}(tan\delta_fcos\beta+tan\delta_rcos\beta)\tag{7}
R1=L1(tanδfcosβ+tanδrcosβ)(7)
前文我们提过,运动学模型一般仅考虑低速的、大转弯半径的车况,因此通常忽略车辆的侧滑问题,也就是
V
y
≈
0
V_y \approx 0
Vy≈0,因此
β
=
a
r
c
t
a
n
V
y
V
x
≈
0
(8)
\beta = arctan \frac{V_y}{V_x} \approx 0\tag{8}
β=arctanVxVy≈0(8) 于是偏航角
β
+
φ
≈
φ
\beta+\varphi \approx \varphi
β+φ≈φ。同时我们一般认为车辆后轮无转向,即
δ
r
≈
0
\delta_r\approx0
δr≈0(低速),最终得到:
{
V
x
=
V
⋅
c
o
s
φ
V
y
=
V
⋅
s
i
n
φ
φ
˙
=
V
L
⋅
t
a
n
δ
f
(9)
\left\{\begin{matrix} V_x = V \cdot cos \varphi\\ V_y = V \cdot sin \varphi\\ \dot \varphi = \frac{V}{L} \cdot tan\delta_f \end{matrix}\right.\tag{9}
⎩
⎨
⎧Vx=V⋅cosφVy=V⋅sinφφ˙=LV⋅tanδf(9) 至此就完成了简化的车辆运动学模型建模。
总结
对于一般的控制仿真,我们可以使用简化的运动学模型建立微分方程,但是其存在明显的缺点:
1. 忽略了地面摩擦、轮胎形变、侧向力等众多影响因素,过于简化,模型保真度不足,无法应对复杂问题;
2. 控制量
V
V
V与
δ
δ
δ相互耦合,不易计算;