汽車控制(1)-汽車動力學及MATLAB
1 人贊了文章
對於高精度模擬的情況,現在多數使用ADASM或者CARSIM(軟體幾百萬的費用),其模型相對精度較高,但對於一般模擬而言使用較為簡單的經典動力學模型即可。
4.1汽車動力學的術語及坐標
注意下角度符號,看多了就熟悉了。坐標系如:
例如Z軸,沿著Z軸的移動為垂直運動,繞Z軸的旋轉為橫擺。
另外還有一些需要注意的角度(因為坐標系基礎的不同,這點在carsim輸出時要注意,以及matlab模擬做人-車-環境轉換的時候要變換)
ψ是x與X軸間的夾角,heading angle方向角。ν(汽車速度方向與X軸夾角)航向角,β(x軸與汽車實際運動方向夾角)側偏角.
有時候需要控制ν方向角的時候(carsim裡面沒有直接輸出的,便需要將ψ+β得到),在matlab裡面則會進行坐標轉換。
除此之外需要知道的是輪胎的一些角度:
其中Mz是回正力矩,δ轉向角一般在車輪朝向和汽車朝向之間。其中camber angle外傾角.
對於摩擦圓的概念即橫縱動力中有一個界限,其中決定摩擦圓大小的是μ摩擦係數。
通常來說我們有興趣的是在摩擦圓的範圍內:縱向力,橫向力,回正力矩等。
輪胎力是非常複雜的,非常難以建模。簡化的輪胎模型如刷子模型和魔術公式等經常會用在模擬中。把橫縱輪胎力結合起來是合力超過摩擦圓範圍,發生側滑。
4.2車輛縱向運動
D是空氣阻力,R是掛鉤牽引力(轎車考慮少),Rx為滾動阻力。
其中
f為滾動係數(一般在0.01-0.4之間)
如果設置一些參數:
則我們可以獲得:
Cd是空氣阻力係數。
4.3軸向載荷
前後軸都有靜態載荷,但在加速剎車的時候會發生載荷轉移
平地上的時候theta可以認為是0,而在小角度的時候由sin(theta)=theta, cos(theta) = 1. 在低速下忽略空氣阻力的時候。通常看在角度很小時,向前加速的載荷轉移與ax/g,h/L是成比例的。
4.4縱向運動
把dt移到另一邊,再簡化一番
簡單的matlab程序:
% Init. time, final time, and initial% values of the variable x are:ti=0.0; tf=10.0; ui = [12.0];% Tol and trace are used% by the integration routine ode23:tol = 1.0E-4; trace = 1;% Perform integration and store% the results in x[t,u] = ode23(『Ex3_3a』,ti,tf,ui,tol,trace);% Plot the resultsplot(t,u,『r』)title(『Vehicle Forward Speed』);xlabel(『Time (sec)』)ylabel(『u (m/sec)』); grid;function udot = Ex3_3a(t,u);% Equations of longitudinal motion% for a vehicle.% The parameters are:% u - vehicle forward velocity% m - vehicle mass% Fx - tractive or braking force% W - vehicle weight, W = m*g% Theta - road grade angle in radians% f - rolling friction coefficient% rho - density of air% Cd - aerodynamic drag coefficient% A - cross sectional area of vehicle% uw - wind velocity%% Parameter values):m=2000; g=9.8; W=m*g;Fx=-2000; Theta=0.0; f=0.02;rho=1.202; Cd=0.4; A=2; uw=0.0;%if u > 0udot = [(1/m)*(Fx-W*sin(Theta)- f*W*cos(Theta)-0.5*rho*Cd*A*(u+uw)?2)];elseudot=0;end
結果如圖:
4.3側向整車運動
一般也就是二自由度三自由度的操穩研究。
二自由度是比較經典的:自行車模型,也是車輛專業所學的第一個操穩模型。
轉向角為:
L是軸距,ay是側向加速度。其中Kus大小會決定汽車是否過度轉向還是不足轉向。
其中兩個增益是:
一個是側向加速度增益,一個是橫擺角速度增益。
看上面轉向角的公式,考慮再不足轉向的時候,得到特徵速度為:
在穩態轉向的時候,由牛頓第二定律得
最後如果寫成狀態方程的話:
或者加一點狀態量:
三自由度的整車有非簧載質量m(nr)
推導挺複雜的,
放個結果:
同樣
來對兩種進行模擬一波:
% 2DOF modela = 1.14; % distance c.g. to front axle (m)L = 2.54; % wheel base (m)m = 1500; % mass (kg)Iz = 2420.0; % yaw moment of inertia (kg-m?2)Caf = 44000*2; % cornering stiffness--front axle (N/rad)Car = 47000*2; % cornering stiffness-- rear axle (N/rad)b=L-a; g=9.81;Kus = m*b/(L*Caf) - m*a/(L*Car); % (rad/(m/sec?2))u_char = (L/Kus)?0.5; % understeer vehicleu = u_char;A=[-(Caf+Car)/(m*u), (b*Car-a*Caf)/(m*u)-u(b*Car-a*Caf)/(Iz*u), -(a?2*Caf+b?2*Car)/(Iz*u)];B=[Caf/m; a*Caf/Iz];C_lat = [1 0]; D_lat = 0; % Lateral speedC_yaw = [0 1]; D_yaw = 0; % Yaw rateC_acc=A(1,:) + u*[0,1];D_acc = B(1); % Lateral accelerationC = [C_lat; C_yaw; C_acc];D = [D_lat; D_yaw; D_acc];t=[0:0.01:6];U=0.5*pi/180*sin(1/3*2*pi*t); % 0.5 degree, 0.333Hz% sine steeringY=lsim(A,B,C,D,U,t); % Note small lsimsubplot(221)plot(t,Y(:,1),『r』); gridxlabel(『time (sec)』)ylabel(『Lateral speed (m/sec)』)subplot(222)plot(t,Y(:,2)*180/pi,『r』); gridxlabel(『time (sec)』)ylabel(『Yaw rate (deg/sec)』)subplot(223)plot(t,Y(:,3),『r』); gridxlabel(『time (sec)』)ylabel(『Lat. Accel.(m/sec?2)』)subplot(224)plot(t,U*180/pi,『r』); gridxlabel(『time (sec)』)ylabel(『Steering (deg)』)
三自由度:
% 3DOF modelmR=1363.64; mNR=136.36; m=(mR + mNR); % KgIzzNR=220.0; IxxR=400.0; IxzR=75.0; IzzR=2200.0; % Kg-m?2c=0.14; e=1.4; h=0.35; b=1.4; a=1.14; % metersL=a+b; g=9.81;u=33.7256; % vehicle speedTheta_R=(5.0*pi/180); % Theta_R = 5 degreeCaf=44000*2; % cornering stiffnessfront axle (N/rad)Car=47000*2; % cornering stiffness-rear axle (N/rad)Cgf=2000*2; % camber thrust stiffness (N/rad)dgfdf=0.8; % degree incline change per degree rollddrdf=-0.095; % degree rear steering per degree rollkR=700*180/pi; % N-m per radian of rollcR=21.0*180/pi; % N-m per rad/sec of roll rate% Define the coefficients in the matrix equations:Ix=IxxR + mR*(h?2) - 2*Theta_R*IxzR + (Theta_R?2) *IzzR;Ixz=mR*h*c - IxzR + Theta_R*IzzR;Iz=IzzR + IzzNR + mR*(c?2) + mNR*(e?2);Yb = -(Caf+Car); Yr = (b*Car-a*Caf)/u;Yf = (Car*ddrdf)+(Cgf*dgfdf); Yd = Caf;Nb = b*Car - a*Caf; Nr = -(a?2*Caf+b?2*Car)/u;Nf=a*Cgf*dgfdf - b*Car*ddrdf; Nd= a*Caf;Lp= -cR; Lf = (mR*g*h-kR);% Transform into state equation form:E=[m*u 0 mR*h 0;0 Iz Ixz 0;mR*h*u Ixz Ix 0;0 0 0 1];F=[-Yb (m*u-Yr) 0 -Yf;-Nb -Nr 0 -Nf;0 mR*h*u -Lp -Lf;0 0 -1 0];G=[Yd;Nd;0;0];A=-(inv(E)*F); B=inv(E)*G;% Define the outputs as% lat speed, lat accel, yaw rate and roll angleC=[u 0 0 0u*(A(1,:)+[0 1 0 0])+(mR*h/m)*A(3,:)0 1 0 00 0 0 1];D=[0;u*B(1)+(mR*h/m)*B(3);0;0];t=[0:0.01:6];U=0.5*pi/180*sin(1/3*2*pi*t); %0.5 degree, 0.333Hz%sine steeringY=lsim(A,B,C,D,U,t);subplot, subplot(221)plot(t,Y(:,1),『r』); title(『3 DOF』);xlabel(『time (sec)』); ylabel(『Lateral speed (m/sec)』); grid;subplot(222)plot(t,Y(:,3)*180/pi,『r』); title(『3 DOF』);xlabel(『time (sec)』); ylabel(『Yaw rate (deg/sec)』); grid;subplot(223)plot(t,Y(:,2),『r』); title(『3 DOF』);xlabel(『time (sec)』); ylabel(『Lat. Accel.(m/sec?2)』); grid;subplot(224)plot(t,Y(:,4)*180/pi,『r』); title(『3 DOF』);xlabel(『time (sec)』); ylabel(『roll angle (rad)』); grid;
模擬結果:
趨勢還是挺一致的。
4.4垂向動力學
不是做懸架和NVH等的。不做筆記了。
畢竟玄乎~
推薦閱讀:
※AMEsim & Matlab聯合模擬 ---軟體安裝方法
※Matlab安裝包+教程視頻,讓你從入門到精通!
※CodyNote009:索引定址系列探討(Part.1)
※光流法研究筆記1(附送測試matlab源碼)
※Tools(002)基於插值的曲面優化顯示