MPC(3)常用车辆模型
上一篇中介绍了,模型预测控制的理论方面基础,无人驾驶车辆采用MPC控制方法来进行相关控制的时候,就考虑结合车辆的运动学以及动力学的相关约束。而且,如果在路径规划阶段(Local Planner)就考虑到车辆运动学和动力学约束,则车辆运动跟踪性能会更好。这篇文章就主要介绍的就是,前轮驱动小轿车目前常用的几种车辆运动学以及动力学模型。
阿克曼模型
车辆低速行驶时,轮胎不会产生侧滑,同时,车辆转向时,左前轮和右前轮偏转的角度是不同的,如下图所示(画图很麻烦,所以图片很多都是网上找的)

由于两个前轮的转向角度不同,造成了,两个后轮旋转半径也不相同,于是,做出了相应的简化,以车辆后轴中心点为旋转参考点,对车辆左前轮角度和右前轮角度取均值:

δ=12(δl+δr)(1)
\delta = \frac{1}{2}(\delta_l + \delta_r) \tag{1}
δ=21(δl+δr)(1)
式中,δ\deltaδ为简化后车辆前轮转向角,δl\delta_lδl和δr\delta_rδr分别为对应的车辆左侧前轮角度和右侧前轮转向角度。简化后的模型,称为自行车模型,自行车模型最大的好处就是把前轮转角与车辆后轴质心旋转的半径联系了起来。
tan δ=LR(2)
tan \space \delta = \frac{L}{R} \tag{2}
tan δ=RL(2)
其中,δ\deltaδ 为车辆前轮转角
LLL 为车辆前后轴之间的距离(Wheel Base)
RRR 为车辆在给定的前轮转角δ\deltaδ情况下,所遵循的圆轨迹的半径。
车辆运动学模型
如下图所示,车辆转向模型:

在惯性坐标系XOY下,(Xf,Yf)(X_f,Y_f)(Xf,Yf)和(Xr,Yr)(X_r,Y_r)(Xr,Yr)分别代表车辆后轴中心和前轴中心的坐标,φ\varphiφ表示车辆的航向角,δf\delta_fδf表示前轮偏角,vrv_rvr表示车辆后轴中心沿车辆轴线方向的速度,vfv_fvf表示车辆前轴中心沿着前轮偏角方向的速度,lll表示车辆前后轴之间的距离。
在车辆后轴中心(Xr,Yr)(X_r,Y_r)(Xr,Yr)处,有
vr=X˙r∗cos(φ)+Y˙r∗sin(φ)(3)
v_r = \dot{X}_{r}*cos (\varphi) + \dot{Y}_{r}*sin(\varphi) \tag{3}
vr=X˙r∗cos(φ)+Y˙r∗sin(φ)(3)
前、后轴的运动学约束(车辆无横向侧滑):
{X˙f∗sin(φ+δf)−Y˙f∗cos(φ+δf)=0X˙r∗sin(φ)−Y˙r∗cos(φ)=0(4)
\begin{cases}
\dot{X}_{f}*sin(\varphi + \delta_f) - \dot{Y}_{f}*cos(\varphi + \delta_f) = 0 \\
\dot{X}_{r}*sin(\varphi) - \dot{Y}_{r}*cos(\varphi) = 0
\end{cases} \tag{4}
{X˙f∗sin(φ+δf)−Y˙f∗cos(φ+δf)=0X˙r∗sin(φ)−Y˙r∗cos(φ)=0(4)
根据式(3)、式(4)可以得出:
{X˙r=vr∗cos(φ)Y˙r=vr∗sin(φ)(5)
\begin{cases}
\dot{X}_{r} = v_r*cos(\varphi) \\
\dot{Y}_{r} = v_r*sin(\varphi) \\
\end{cases} \tag{5}
{X˙r=vr∗cos(φ)Y˙r=vr∗sin(φ)(5)
根据前后轮的位置关系有:
{Xf=Xr+l∗cosφYf=Yr+l∗sinφ(6)
\begin{cases}
X_f = X_r + l*cos\varphi \\
Y_f = Y_r + l*sin\varphi \\
\end{cases} \tag{6}
{Xf=Xr+l∗cosφYf=Yr+l∗sinφ(6)
将(5)、(6)带入(4)可以得出横摆角ω\omegaω速度为:
φ˙=ω=vrl∗tan(δf)(7)
\dot\varphi=\omega = \frac{v_r}{l}*tan(\delta_f) \tag{7}
φ˙=ω=lvr∗tan(δf)(7)
由横摆角ω\omegaω和车速vrv_rvr可以计算出车辆在不同的前轮转向角的条件下,对应的不同转向半径(可以看出与阿克曼模型的转弯半径计算方式相同):
{R=vr∗ωδf=arctan(lR)(8)
\begin{cases}
R = v_r*\omega \\
\delta_f = arctan(\frac{l}{R})
\end{cases} \tag{8}
{R=vr∗ωδf=arctan(Rl)(8)
由式(5),(7)可以得出车辆运动学模型
[X˙rY˙rφ˙]=[cosφsinφtan(δf)/l]∗vr(9)
\begin{bmatrix}
\dot{X}_{r} \\
\dot{Y}_{r} \\
\dot{\varphi}
\end{bmatrix} = \begin{bmatrix}
cos \varphi \\
sin \varphi \\
tan(\delta_f)/l
\end{bmatrix} *v_r \tag{9}
⎣⎡X˙rY˙rφ˙⎦⎤=⎣⎡cosφsinφtan(δf)/l⎦⎤∗vr(9)
车辆的可控制量为vrv_rvr和δf\delta_fδf,而在实际使用中,最好的方式是希望以[vr,ω][v_r,\omega][vr,ω]作为控制量,将式(7)带入式(9)中,可以将车辆运动学模型可以被转换为以下形式:
[X˙rY˙rφ˙]=[cosφsinφ0]∗vr+[001]∗ω(10)
\begin{bmatrix}
\dot{X}_{r} \\
\dot{Y}_{r} \\
\dot{\varphi}
\end{bmatrix} = \begin{bmatrix}
cos \varphi \\
sin \varphi \\
0
\end{bmatrix} *v_r + \begin{bmatrix}
0 \\
0 \\
1
\end{bmatrix} * \omega \tag{10}
⎣⎡X˙rY˙rφ˙⎦⎤=⎣⎡cosφsinφ0⎦⎤∗vr+⎣⎡001⎦⎤∗ω(10)
由车辆运动学模型可以看作是对阿克曼运动模型的延伸,通过运动学方程可以计算出控制时域内,可以计算出车身后轴中心点坐标XXX,YYY以及航向角φ\varphiφ在预测时间内的变化量。
车辆动力学模型
在进行车辆动力学建模时,首先要进行以下理想化假设:
- 假设车辆在平坦路面上行驶,忽略车辆的垂向运行
- 忽略悬架系统运动造成的相关影响
- 只考虑纯侧偏轮胎特性,忽略轮胎力的纵横向耦合关系
- 忽略车辆前后以及左右向的载荷转移
- 忽略纵向横向的空气动力学
同样,设定车辆为前轮驱动,以车辆质心为原点OOO,沿着车辆纵向轴线指向车头方向为XXX轴正向,垂直于车辆,车身水平面内垂直于XXX轴且指向车身左侧方向为YYY轴,ZZZ轴垂直于XYXYXY面且垂直向上。具体如下图所示:

关于其中轮胎受力定义如下:
Flf,Flr F_{lf},F_{lr}\spaceFlf,Flr —— 前、后轮胎受到的纵向力
Fcf,FcrF_{cf},F_{cr}Fcf,Fcr —— 前、后轮胎受到的侧向力
Fxf,FxrF_{xf},F_{xr}Fxf,Fxr —— 前、后轮胎受到的x方向的力
Fyf,FyrF_{yf},F_{yr}Fyf,Fyr —— 前、后轮胎收到的y方向的力
根据牛顿第二定律,分别可得沿xxx轴,yyy轴和绕zzz轴的受力平衡方程
在XXX轴方向上:
m∗x¨=m∗y˙∗φ˙+2∗Fxf+2∗Fxr(11)
m*\ddot{x} = m*\dot{y}*\dot{\varphi} + 2*F_{xf} + 2*F_{xr} \tag{11}
m∗x¨=m∗y˙∗φ˙+2∗Fxf+2∗Fxr(11)
在YYY轴方向上:
m∗y¨=−m∗x˙∗φ˙+2∗Fyf+2∗Fyr(12)
m*\ddot{y} = -m*\dot{x}*\dot{\varphi} + 2*F_{yf} + 2*F_{yr} \tag{12}
m∗y¨=−m∗x˙∗φ˙+2∗Fyf+2∗Fyr(12)
绕ZZZ轴方向:
Iz∗φ¨=2∗a∗Fyf−2∗b∗Fyr(13)
I_{z}*\ddot{\varphi}= 2*a*F_{yf}-2*b*F_{yr} \tag{13}
Iz∗φ¨=2∗a∗Fyf−2∗b∗Fyr(13)
式中,aaa和bbb分别为质心到前、后轴的距离,mmm为车辆装备质量,IzI_zIz为车辆绕zzz轴的转动惯量。
轮胎在x,yx,yx,y方向上受到的合力与纵向、侧向力的转换关系如下:
{Fxf=Flf∗cos(δf)−Fcf∗sin(δf)Fxr=Flr∗cos(δr)−Fcr∗sin(δr)Fyf=Flf∗sin(δf)+Fcf∗cos(δf)Fyr=Flr∗sin(δr)+Fcr∗cos(δr)(14)
\begin{cases}
F_{xf} = F_{lf}*cos(\delta_f)-F_{cf}*sin(\delta_f) \\
F_{xr} = F_{lr}*cos(\delta_r)-F_{cr}*sin(\delta_r) \\
F_{yf} = F_{lf}*sin(\delta_f)+F_{cf}*cos(\delta_f) \\
F_{yr} = F_{lr}*sin(\delta_r)+F_{cr}*cos(\delta_r) \tag{14}
\end{cases}
⎩⎪⎪⎪⎨⎪⎪⎪⎧Fxf=Flf∗cos(δf)−Fcf∗sin(δf)Fxr=Flr∗cos(δr)−Fcr∗sin(δr)Fyf=Flf∗sin(δf)+Fcf∗cos(δf)Fyr=Flr∗sin(δr)+Fcr∗cos(δr)(14)
轮胎的纵向力、侧向力可以表示为轮胎的侧偏角、滑移率、路面摩擦系数和垂向载荷等参数的复杂函数:
{Fl=fl(α,s,μ,Fz)Fc=fc(α,s,μ,Fz)(15)
\begin{cases}
F_l=f_l(\alpha,s,\mu,F_z) \\
F_c=f_c(\alpha,s,\mu,F_z)
\end{cases} \tag{15}
{Fl=fl(α,s,μ,Fz)Fc=fc(α,s,μ,Fz)(15)
式中,α\alphaα为轮胎侧偏角,sss为滑移率,μ\muμ为路面摩擦系数,FzF_zFz为轮胎所受到的垂向载荷。
轮胎的侧偏角α\alphaα可以由几何关系计算得到:
α=arctanvcvl(16)
\alpha= arctan \frac{v_c}{v_l} \tag{16}
α=arctanvlvc(16)
式中,vcv_cvc与vlv_lvl为轮胎在侧向、纵向的速度,可以用坐标系方向的速度vxv_xvx和vyv_yvy表示:
{vl=vy∗sinδ+vx∗cosδvc=vy∗cosδ−vx∗sinδ(17)
\begin{cases}
v_l=v_y*sin\delta+v_x*cos\delta \\
v_c=v_y*cos\delta-v_x*sin\delta
\end{cases} \tag{17}
{vl=vy∗sinδ+vx∗cosδvc=vy∗cosδ−vx∗sinδ(17)
式中,δ\deltaδ为轮胎偏转角。
轮胎的速度获取通常比较麻烦,现在的车子四个轮子在旋转时会发出相应的脉冲信号,通过解析这些信号获取四个轮子的轮速是一种很方便且精确的方式,另外一种就是通过车辆速度计算得出,这种方法虽说没有上一种方式精确,但是使用范围广泛,具体公式如下:
vyf=y˙+a∗φ˙vyr=y˙−b∗φ˙vxf=x˙vxr=x˙(18)
\begin{matrix}
v_{yf}= \dot{y}+a*\dot{\varphi} \\
v_{yr}= \dot{y}-b*\dot{\varphi} \\
v_{xf} = \dot{x} \\
v_{xr} = \dot{x}
\end{matrix} \tag{18}
vyf=y˙+a∗φ˙vyr=y˙−b∗φ˙vxf=x˙vxr=x˙(18)
轮胎在地面上的滑移率sss的计算公式:
s={r∗wtv−1if v>r∗wt,v=/ 01−vr∗wtif v<r∗wt,wt=/ 0(19)
s= \begin{cases}
\frac{r*w_t}{v}-1 & \text{if} \space v>r*w_t,v {=}\mathllap{/\,}0 \\
1-\frac{v}{r*w_t} & \text{if} \space v<r*w_t,w_t {=}\mathllap{/\,}0
\end{cases} \tag{19}
s={vr∗wt−11−r∗wtvif v>r∗wt,v=/0if v<r∗wt,wt=/0(19)
式中,rrr为车轮半径,wtw_twt为车轮旋转角速度。
车辆前后轴所受的垂向载荷:
{Fzf=b∗m∗g2∗(a+b)Fzr=a∗m∗g2∗(a+b)(20)
\begin{cases}
F_{zf}=\frac{b*m*g}{2*(a+b)} \\
F_{zr}=\frac{a*m*g}{2*(a+b)}
\end{cases} \tag{20}
{Fzf=2∗(a+b)b∗m∗gFzr=2∗(a+b)a∗m∗g(20)
最后,考虑车身坐标系以及惯性坐标系之间的关系有:
{Y˙=x˙∗sinφ+y˙∗cosφX˙=x˙∗cosφ−y˙∗sinφ(21)
\begin{cases}
\dot{Y}=\dot{x}*sin\varphi+\dot{y}*cos\varphi \\
\dot{X}=\dot{x}*cos\varphi-\dot{y}*sin\varphi
\end{cases} \tag{21}
{Y˙=x˙∗sinφ+y˙∗cosφX˙=x˙∗cosφ−y˙∗sinφ(21)
以上就是车辆非线性动力学模型。路面摩擦系数μ\muμ为路面固有信息,滑移率sss的控制需要由另一套控制系统来控制(ABS),在此我们假设此控制系统已经很好,滑移率sss就是一个已知量。
总结
以上三个模型都是常用的车辆模型,但是每个都有不同的用处以及不足,实际应用运动学和动力学要求都必须考虑到,当然,车速很低的情况下,需要考虑的因素较少,实践出真理,现有的MPC控制算法证明已经是可行的方案,唯一的缺陷就是MPC一旦预测步长过多,对算力的要求比较高。因此,模型的简化和算力之间的平衡,需要实际情况实际考虑,在此就不赘述了。
更多推荐


所有评论(0)