参考

《车辆动力学理论与应用(Vehicle Dynamics Theory and Application)》

线性二自由度汽车模型的微分方程 - 静候佳茵 - 博客园 (cnblogs.com)

汽车二自由度模型公式推导及simulink模型——传递函数、状态空间 | 码农家园 (codenong.com)

二自由度汽车模型

忽略汽车的侧倾运动,车身坐标系的 z 轴与全域坐标系 Z 轴平行,xy 平面与路面上的 XY 平行,即为两轮车辆模型,也称自行车模型

  1. 忽略悬架的作用。

    • 汽车车身无法依靠减震器和弹性元件实现沿 z 轴的运动,无法上下振动。
    • 也没有所谓的独立悬架和非独立悬架之分,无法左右摇动,即绕 x 轴的侧倾运动
    • 没有弹性元件也无法完成绕 y 轴的俯仰运动
  2. 汽车前进速度不变。

    • 也不用考虑沿 x 轴运动。因为之后汽车理论将用运动学和动力学的方式联立等式(理论力学的内容),而沿x轴速度不变意味着x轴方向的加速度为 0,不用参与到联立的等式中。

上面两个假设限定了四个自由度,剩下的就是沿 y 轴的侧向运动绕 z 轴的横摆运动,这就是汽车的二自由度。


模型参数定义

如图所示为车辆二自由度模型图,其中:

  • $O$:质心
  • $a$:前轴到质心距离
  • $b$:后轴到质心距离
  • $L$:轴距
  • $v_1$:质心速度
  • $u$:质心沿 $x$ 轴速度分量
  • $v$:质心沿 $y$ 轴速度分量
  • $\beta$:质心侧偏角,$\beta=\arctan{\frac{v}{u}}$
  • $\omega_r$:横摆角速度
  • $O^\prime$:两车轮速度瞬心
  • $u_1$:前轮速度;$u_2$:后轮速度
  • $\alpha_1$:前轮侧偏角;$\alpha_2$:后轮侧偏角
  • $F_{Y1}$:前轮侧偏力;$F_{Y2}$:后轮侧偏力
  • $\delta$:前轮转向角
  • $\zeta$:航向角,$\zeta=\delta-\alpha_1$
  • $k_1$:前轮侧偏刚度;$k_2$:后轮侧偏刚度

微分方程

二自由度汽车外力 $F_Y$、外力矩 $M_Z$ 与运动参数的关系(动力学方程):

$$\sum F_{Y}=k_{1}\left(\beta+\frac{a w_{r}}{u}-\delta\right)+k_{2}\left(\beta-\frac{b w_{r}}{u}\right)$$
$$\sum M_{Z}=a k_{1}\left(\beta+\frac{a w_{r}}{u}-\delta\right)-b k_{2}\left(\beta-\frac{b w_{r}}{u}\right)$$

联立运动学方程

$$F_Y=m(\dot{v}+u\omega_r)$$
$$M_Z=I_Z\dot{\omega_r}$$

二自由度汽车运动微分方程

$$\left(k_{1}+k_{2}\right) \beta+\frac{1}{u}\left(a k_{1}-b k_{2}\right) w_{r}-k_{1} \delta=m\left(\dot{v}+u w_{r}\right)$$
$$\left(a k_{1}-b k_{2}\right) \beta+\frac{1}{u}\left(a^{2} k_{1}+b^{2} k_{2}\right) w_{r}-a k_{1} \delta=I_{Z} \dot{w}_{r}$$


传递函数

由微分方程可得侧向加速度和横摆角速度

$$\dot{v}=-\frac{1}{m} \frac{\left(k_{1}+k_{2}\right)}{u} v-\left(u+\frac{a k_{1}-b k_{2}}{m u}\right) \omega_{r}+\frac{k_{1}}{m} \delta$$
$$\dot{\omega}_{r}=-\frac{a k_{1}-b k_{2}}{I_{Z} u} v-\frac{a^{2} k_{1}+b^{2} k_{2}}{I_{Z} u} \dot{\omega}_{z}+\frac{a k_{1}}{I_{Z}} \delta$$

设参数

$$a_{11}=-\frac{1}{m} \frac{\left(k_{1}+k_{2}\right)}{u}$$

$$a_{12}=-\left(u+\frac{a k_{1}-b k_{2}}{m u}\right)$$

$$a_{21}=-\frac{a k_{1}-b k_{2}}{I_{Z} u}$$

$$a_{22}=-\frac{a^{2} k_{1}+b^{2} k_{2}}{I_{Z} u}$$

$$b_{1}=\frac{k_{1}}{m}$$

$$b_{2}=\frac{ak_{1}}{I_{Z}}$$

$$\dot{v}=a_{11} v+a_{12} \omega_{r}+b_{1} \delta$$
$$\dot{\omega}_{r}=a_{21} v+a_{22} \omega_{r}+b_{2} \delta$$

$$(s-a_{11}) v=a_{12} \omega_{r}+b_{1} \delta$$
$$(s-a_{22})\omega_{r}= a_{21}v+b_{2} \delta$$

联立得二阶系统传递函数

$$\frac{v}{\delta}=\frac{b_{1} s+a_{12} b_{2}-a_{22} b_{1}}{s^{2}-\left(a_{11}+a_{22}\right) s+\left(a_{11} a_{22}-a_{12} a_{21}\right)}$$

$$\frac{\omega_{r}}{\delta_{f}}=\frac{b_{2} s+\left(a_{21} b_{1}-a_{11} b_{2}\right)}{s^{2}-\left(a_{11}+a_{22}\right) s+\left(a_{11} a_{22}-a_{21} a_{12}\right)}$$


matlab 代码 m 文件

%% 横摆角速度计算函数
% 输入(车速,时间戳,转向角);返回横摆角速度
function hbj = hbjf(u,t,delta)
% 参数定义
m=2050;                                  %车辆质量
Iz=5600;                                 %转动惯量
a=1.5;                                   %质心到前轴的距离
b=1.8;                                   %质心到后轴的距离
L=3.3;                                   %总轴距
k1=-38900;                               %前轮综合侧偏刚度
k2=-39200;                               %后轮综合侧偏刚度
for i = 1:size(u)
    a11(i)=(k1+k2)./m/u(i);
    a12(i)=(a.*k1-b.*k2-m.*u(i).^2)./m/u(i).^2;
    a21(i)=(a.*k1-b.*k2)./Iz;
    a22(i)=(a.^2*k1+b.^2*k2)./Iz/u(i);
    b11(i)=-k1./m/u(i);
    b21(i)=-a*k1./Iz;
    b12(i)=-k2./m/u(i);
    b22(i)=b*k2./Iz;
    b1(i)=b21(i);
    b2(i)=a21(i).*b11(i)-a11(i).*b21(i);
    b3(i)=-a11(i)-a22(i);
    b4(i)=a11(i).*a22(i)-a12(i).*a21(i);
    % 传递函数
    num(i,:)=[b1(i),b2(i)];               %传递函数分子多项式系数
    den(i,:)=[1,b3(i),b4(i)];             %传递函数分母多项式系数
    Gb(i)=tf(num(i),den(i));              %传递函数
end
% 计算横摆角速度
hbj=lsim(Gb',delta(1:i),t(1:i));
end
%% 质心侧偏角计算函数
% 输入(车速,时间戳,转向角);返回质心侧偏角
function cpj = cpjf(u,t,delta)
% 参数定义
m=2050;                                    %车辆质量
Iz=5600;                                   %转动惯量
a=1.5;                                     %质心到前轴的距离
b=1.8;                                     %质心到后轴的距离
L=3.3;                                     %总轴距
k1=-38900;                                 %前轮综合侧偏刚度
k2=-39200;                                 %后轮综合侧偏刚度
% 计算传递函数各项系数
for i = 1:size(u)
    a11(i)=(k1+k2)./m/u(i);
    a12(i)=(a.*k1-b.*k2-m.*u(i).^2)./m/u(i).^2;
    a21(i)=(a.*k1-b.*k2)./Iz;
    a22(i)=(a.^2*k1+b.^2*k2)./Iz/u(i);
    b11(i)=-k1./m/(i);
    b21(i)=-a*k1./Iz;
    b12(i)=-k2./m/u(i);
    b22(i)=b*k2./Iz;
    b1(i)=b11(i);
    b2(i)=a12(i)*b21(i)-a22(i)*b11(i);
    b3(i)=-a11(i)-a22(i);
    b4(i)=a11(i)*a22(i)-a12(i)*a21(i);
    % 传递函数
    num(i,:)=[b1(i),b2(i)];                 %传递函数分子多项式系数
    den(i,:)=[1,b3(i),b4(i)];               %传递函数分母多项式系数
    Gw(i)=tf(num(i),den(i));                %传递函数
end
% 计算质心偏转角
vy = lsim(Gw',delta(1:i),t(1:i));
cpj = atan2(vy,u);
end

simulink 模型

改天再写。