车辆二自由度动力学模型验证 matlab与simulink联合仿真车辆二自由度动力学模型验证,将相同的前轮转角和车速输入carsim和动力学模型,对比carsim和二自由度动力学模型输出的横摆角和车辆轨迹。

半瓶可乐往桌上一搁,工程男的周末从Simulink模型验证开始。今儿咱们要干件挺实在的事——用Matlab/Simulink搭个二自由度车辆模型,跟CarSim真刀真枪比划比划。这事儿听着简单,真动起手来,转向系参数、轮胎模型、积分方法这些坑一个都躲不过。

先看这个二自由度模型的骨架。说白了就是两个微分方程撑起的天下:

function dx = twoDOF_vehicle(t,x,delta,Vx)
    % 参数初始化
    m = 1723;   % 整车质量
    lf = 1.232; % 前轴到质心距离
    lr = 1.468;  % 后轴到质心距离
    Iz = 4175;  % 横摆转动惯量
    Cf = 66900; % 前轮侧偏刚度
    Cr = 62700; % 后轮侧偏刚度

    beta = x(1);
    gamma = x(2);
    
    alpha_f = delta - beta - lf*gamma/Vx;
    alpha_r = -beta + lr*gamma/Vx;
    
    Fyf = Cf * alpha_f;
    Fyr = Cr * alpha_r;
    
    dx(1) = (Fyf + Fyr)/(m*Vx) - gamma;
    dx(2) = (lf*Fyf - lr*Fyr)/Iz;
    dx = dx';
end

这段代码藏着几个关键点:1.轮胎力用线性模型简单粗暴处理,和CarSim的非线性胎比起来就是个青铜选手;2.纵向速度Vx假设恒定,直接忽略了纵向动力学的影响。但好处是计算快如闪电,适合控制算法快速验证。

Simulink这边咱也别闲着,直接上S函数把模型串起来:

function sys = mdlDerivatives(t,x,u,car)
    delta = u(1);
    Vx = u(2);
    
    beta = x(1);
    gamma = x(2);
    
    % 和前面代码相同的计算过程...
    
    sys = [dx_beta; dx_gamma];
end

注意这里把车辆参数打包成结构体car传入,比全局变量优雅多了。积分器建议选ode4(龙格库塔),步长和CarSim输出保持同步,别让采样时间不一致毁了对比结果。

当数据开始流动时,真相逐渐浮出水面。处理对比曲线的脚本得留点心眼:

% 读取CarSim数据
carsim_data = readtable('carsim_output.csv');
psi_ref = carsim_data.YawAngle;
X_ref = carsim_data.X_Coord;
Y_ref = carsim_data.Y_Coord;

% 计算轨迹误差
cumulative_error = trapz(t, abs(psi_model - psi_ref));
disp(['横摆角累计误差: ', numum2str(cumulative_error), ' rad·s']);

% 可视化暴击
figure('Position',[200 200 800 600])
subplot(2,1,1)
plot(t, psi_ref, 'b--', t, psi_model, 'r','LineWidth',1.5)
legend('CarSim','2DOF')
title('横摆角对比')

subplot(2,1,2)
plot(X_ref, Y_ref, 'b--', X_model, Y_model, 'r','LineWidth',1.5)
axis equal
title('行驶轨迹对比')

跑出来的曲线八成会出现这种情况:低速时哥俩好,速度一上80km/h,二自由度模型的轨迹就开始飘了。这不奇怪,毕竟忽略了轮胎非线性特性和悬架影响。不过有意思的是在ESC验证这种需要快速迭代的场景,二自由度模型的实时性优势就凸显出来了。

最后给个硬核建议:把方向盘角输入做成sin扫频信号,从0.5Hz慢慢怼到4Hz,观察模型在哪频段开始崩。这时候会明显看到,当输入频率超过2Hz时,二自由度的相位滞后开始放飞自我,而CarSim还能坚挺——这就是考虑更多自由度的价值所在。

验证完别急着关电脑,记得把模型参数导出成mat文件,下回做MPC控制器时直接调用,省得重复搬砖。这年头,不会薅CarSim羊毛的工程师,和咸鱼有什么区别?

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐