基于Matlab Simulink的4轮分布式电驱动车辆23自由度动力学模型搭建及其输出量研究...

基于Matlab/simulink搭建4轮分布式电驱动车辆23自由度动力学模型,包括车身6自由度、4个车轮的旋转和垂向自由度、1个转向自由度以及开环驾驶员模型。 输入量为第一轴转向角度和各轮转矩,输出量包括横摆角速度、质心侧偏角、滑移率、横纵向加速度、车速、运动轨迹、车轮垂向力等。 文件包括.m文件、slx文件、参考文献。

直接上手搞四轮分布式电驱动模型这事儿,比想象中带劲多了。今儿咱们要折腾的23自由度模型,说人话就是把车拆成会动的积木------车身能上下蹦跶、左右摇摆、前后晃悠,四个轮子各自带着电机转圈圈,外加方向盘带着前轮扭屁股。

先说悬架这茬,Simulink里用S-Function实现弹簧阻尼模型最实在。看这段代码:

matlab 复制代码
function F = suspension_model(z,zdot)
    k = 25000;  % 弹簧刚度/N·m⁻¹
    c = 1500;   % 阻尼系数/N·s·m⁻¹
    F = k*z + c*zdot;  % 悬架力计算公式
end

这里边儿藏着玄机:刚度过大会让车轮像踩了钉子似的乱蹦,阻尼太小又像坐船似的晃不停。实际调参时得开着仿真看垂向力曲线跳舞,找到那个既不颠屁股又能吃住地的平衡点。

转向系统这块,搞了个齿轮齿条模型。关键是要处理转向角到前轮转角的非线性关系:

matlab 复制代码
steer_ratio = 16:1;  % 转向传动比
delta_wheel = steer_input / steer_ratio;
% 阿克曼转向几何修正
left_angle = delta_wheel * (1 - wheelbase/(2*track_width));
right_angle = delta_wheel * (1 + wheelbase/(2*track_width));

注意那个阿克曼修正系数,直接关系到转弯时内外轮转角差。实测发现当车速超过80km/h时,这修正量得动态调整,否则高速变道时横摆角速度会抽风。

电机扭矩分配是重头戏,四台永磁同步电机的协同控制直接决定车辆稳定性。这个状态流图特别实用:

matlab 复制代码
function torque_distribute(vx, ay, slip)
    % 基于车速和侧向加速度的动态分配
    front_bias = 0.6 - 0.2*(vx/100);
    rear_bias = 1 - front_bias;
    torque_matrix = [front_bias*0.7, front_bias*0.3; 
                    rear_bias*0.4, rear_bias*0.6];
    % 考虑滑移率的扭矩限制
    torque_limit = 1./(1 + exp(5*(slip-0.15)));
    final_torque = torque_matrix .* torque_limit;
end

这个分配策略在冰雪路面实测时,能把滑移率控制在0.12-0.18之间。注意那个sigmoid函数的应用,比硬阈值顺滑得多,避免扭矩突变导致的车身抖动。

验证模型时最爽的是看轨迹跟踪效果。跑双移线工况时,把期望轨迹和实际轨迹叠在一起:

matlab 复制代码
plot(ref_x,ref_y,'b--',sim_x,sim_y,'r-');
legend('参考轨迹','实际轨迹');
title('蛇形绕桩轨迹跟踪');
xlabel('纵向位移(m)'); 
ylabel('横向位移(m)');
grid on;

这时候如果发现轨迹像喝醉似的画龙,八成是横摆惯量参数设错了。记得检查簧载质量与非簧载质量的转动惯量匹配度,这玩意儿对操控特性影响比想象中还大。

模型跑起来后,车轮垂向力的实时监测特别重要。用这个结构体存储数据:

matlab 复制代码
wheel_force.Fz = zeros(4,1);
wheel_force.Fx = zeros(4,1);
wheel_force.Fy = zeros(4,1);
% 更新函数里这么搞
for i=1:4
    wheel_force(i).Fz = calculate_vertical_force(...);
    [wheel_force(i).Fx, wheel_force(i).Fy] = pacejka_model(...);
end

注意垂向力突变往往意味着悬架触底或者车轮离地,这时候得赶紧检查轮胎模型里的法向力-滑移率耦合关系是不是没处理好。

最后说个坑:千万别在同一个模型里混用固定步长和变步长求解器!之前因为电机控制模块用了ode45而整车模型用ode15s,结果仿真到3.2秒必崩溃。统一改用ode23tb后稳如老狗,虽然计算速度慢点儿,但数值稳定性真不是盖的。

模型文件打包时记得把参考文献的Bakker轮胎模型参数表带上,那堆魔术公式系数可不是拍脑袋能编出来的。整个工程跑顺之后,试着给扭矩分配加个PID闭环,立马能看见滑移率曲线老实多了------不过那就是另一个故事了。

相关推荐
梓贤Vigo20 天前
【Axure高保真原型】密码组输入框
交互·产品经理·axure·原型
招风的黑耳20 天前
Axure可视化大屏原型模板库:学习设计/提高效率/快速可视化
学习·axure·数据可视化·大屏设计
招风的黑耳21 天前
500+带交互的元件库:Axure原型设计的活字典
交互·axure·原型
雪碧聊技术25 天前
什么是Axure?
产品经理·axure·根据需求,画页面原型
十八朵郁金香1 个月前
【H5工具】一个简约高级感渐变海报H5设计工具
前端·javascript·产品运营·axure·个人开发
asdfsdgss1 个月前
Axure 组件不用手绘:ElementUI/Plus 元件库 + 大厂规范现成资源
elementui·axure·photoshop
xingxing_F1 个月前
Axure RP 11 for Mac 交互式原型设计软件
macos·ui·axure·photoshop
PM老猫2 个月前
最新版谷歌浏览器Axure插件(免翻墙)
axure
梓贤Vigo2 个月前
【Axure教程】中继器表格间筛选
交互·产品经理·axure·原型·中继器