首页
/
行业洞察
/
正文
INDUSTRY INSIGHT · 深度
爆胎动力学仿真建模:Simulink中Dugoff与UniTire轮胎模型搭建与对比
📅 2026/9/26 14:07:10
✍️ 爱科研究院
👁 阅读 3,247
很多人问我自己搭一套爆胎动力学仿真模型到底图什么。市面上CarSim、TruckSim都有现成的爆胎场景模块论文里也经常看到联合仿真。但真到自己做底盘控制或者车辆稳定性研究时就会发现商业黑盒模型很难让你拆分轮胎力的变化过程更没法把爆胎瞬间的载荷转移、侧偏刚度衰减、滚动阻力突增这些因素逐个拧出来分析。所以我选择了在Simulink里自己搭整车动力学模型核心是两套轮胎模型——Dugoff和UniTire一套偏工程快速迭代一套偏精度和极限工况。这篇文章就把整个搭建过程、模型原理、关键参数和踩过的坑完整记录下来适合正在做车辆动力学仿真、底盘控制算法验证或者准备用Simulink做数学建模竞赛车辆方向题目的朋友参考。1. 爆胎动力学建模的整体思路为什么轮胎模型决定仿真成败1.1 爆胎工况与常规轮胎建模的差异先想清楚一件事常规的轮胎模型研究重点是稳态工况下轮胎力的精确表达比如不同滑移率、侧偏角下的纵向力与侧向力曲线。但爆胎工况完全不是这个套路。爆胎发生后轮胎的物理属性会在几十毫秒内发生剧烈变化胎内气压骤降导致有效滚动半径减小胎侧支撑力丧失导致垂直刚度下降接地印迹形状改变导致侧偏刚度退化同时滚动阻力系数可能增大到正常状态的十倍以上。这些变化不是简单的参数微调而是轮胎力学特性的质变。所以在建模时不能只关心轮胎模型的静态精度更要关注模型能否在参数突变后保持数值稳定以及能否反映出爆胎后车辆横摆力矩的变化趋势。这才是爆胎动力学建模的核心矛盾——不是轮胎模型本身多高级而是它能不能承载爆胎这个动态过程。1.2 选型判断Dugoff与UniTire各自的位置我在最初选型时列了几个候选Magic Formula魔术公式、Dugoff、UniTire还有Fiala模型。Magic Formula精度高但参数繁多有些参数在爆胎工况下根本没有实测数据可参考强行使用只会让仿真变成一个大型参数拟合现场。Fiala模型太简单只有侧向力有解析表达纵向力和联合工况的表达偏弱。最后我圈定了Dugoff和UniTire这两个方向。Dugoff模型胜在参数少、结构清晰只有纵向刚度、侧偏刚度、峰值附着系数这几个核心参数计算量小到可以在实时硬件上跑非常适合作为爆胎控制器快速验证的底层模型。UniTire则是郭孔辉院士团队提出的统一轮胎模型理论体系完整对联合工况、大滑移率、大侧偏角的描述能力强于Dugoff极限工况下的力衰减特性更接近真实轮胎。两台模型我都搭了一套用同一个整车框架去对接这么做的好处是后期可以交叉验证——同一组爆胎参数两套轮胎模型给出的车辆响应是否一致本身就是对建模逻辑的校验。2. Dugoff轮胎模型Simulink实现从耦合公式到可跑模块2.1 Dugoff模型的力学本质与核心公式Dugoff模型的出发点是一个很朴素的假设轮胎接地区域的压力近似均匀分布胎体变形可以用整体刚度来表征。它最有价值的地方是把纵向力和侧向力统一在一个摩擦圆框架下面避免了分别建模再人工协调的麻烦。我实现的版本采用以下核心公式纵向滑移率定义为[ s \frac{R\omega - v_x}{\max(R\omega, v_x)} ]侧偏角定义为[ \alpha \arctan\left(\frac{v_y}{v_x}\right) ]定义组合滑移参数[ \lambda \frac{\mu F_z (1s)}{2\sqrt{(C_s s)^2 (C_\alpha \tan\alpha)^2}} ]其中(C_s) 是纵向刚度(C_\alpha) 是侧偏刚度(\mu) 是轮胎与地面的峰值附着系数。再引入一个饱和函数 (f(\lambda))当 (\lambda 1) 时(f(\lambda) 1)当 (\lambda \geq 1) 时(f(\lambda) \frac{1}{\lambda}(2 - \frac{1}{\lambda}))最终纵向力和侧向力为[ F_x C_s \frac{s}{1s} f(\lambda) ][ F_y C_\alpha \frac{\tan\alpha}{1s} f(\lambda) ]注意这里的 (\lambda) 是一个介于0和无穷之间的值(\lambda) 越小代表轮胎越接近附着极限。当 (\lambda 1) 时说明当前需求已经超过了路面附着能力模型会自动衰减输出力这正好可以模拟爆胎后附着能力下降的场景。2.2 MATLAB Function模块搭建细节Simulink里的实现我建议用MATLAB Function模块不要用S-Function Builder原因后面踩坑部分会细说。MATLAB Function模块的好处是代码和框图分离参数传递直观调试时还能直接在模块断点看中间变量。模块的输入输出接口我当时是这样设计的function [Fx, Fy] dugoff_tire(s_alpha_params, state)其中s_alpha_params是一个参数结构体包含Cs、Calpha、mu、Fzstate 是来自整车模型的运动状态包括 (v_x)、(v_y)、(\omega)、(\delta)前轮转角。具体代码简化后如下function [Fx, Fy] dugoff_tire(Cs, Calpha, mu, Fz, vx, vy, omega, delta) % 计算滑移率和侧偏角 % 注意前轮转角要计入侧偏角计算 if abs(vx) 0.1 s 0; alpha 0; else s (omega * 0.3 - vx) / max(abs(omega * 0.3), abs(vx)); alpha atan2(vy, vx) - delta; % 前轮需减去转角 end % 组合滑移参数 denominator 2 * sqrt((Cs * s)^2 (Calpha * tan(alpha))^2); if denominator 1e-6 lambda mu * Fz; else lambda mu * Fz * (1 s) / denominator; end % 饱和函数 if lambda 1 f_lambda 1; else f_lambda (1 / lambda) * (2 - (1 / lambda)); end % 计算力 Fx Cs * s / (1 s) * f_lambda; Fy Calpha * tan(alpha) / (1 s) * f_lambda; end这里有一个细节当 (v_x) 接近0时滑移率的定义会出现分母趋零的问题必须在代码里做保护。我用的方法是直接置零虽然会丢失低速工况的精度但在高速爆胎场景下完全够用。2.3 纵向滑移率计算的闭环逻辑轮胎模型不是一个孤立模块它和车轮旋转动力学方程是闭环耦合的。车轮转速 (\omega) 不是外部输入而是由以下方程积分得到[ I_w \dot{\omega} T_d - T_b - F_x \cdot R_{eff} ]也就是说仿真过程中每一时刻的 (F_x) 会通过这个方程影响下一时刻的 (\omega)进而影响滑移率再反过来影响 (F_x)。这个代数环如果不处理Simulink会直接报错或者计算卡死。我的解决办法是把车轮旋转方程放到轮胎模型上游的积分模块里用上一时刻的力去更新转速本质上是一种显式离散化。或者用Simulink的Memory模块打破代数环效果类似。这个细节后面踩坑部分还会展开讲。3. UniTire轮胎模型的建立过程统一滑移描述与参数标定3.1 UniTire的无量纲总切力表达UniTire模型的理论框架比Dugoff复杂得多它的核心思想是引入无量纲滑移率 (\phi)把纵向滑移和侧向滑移统一成一个标量表示。这样做的好处是联合工况下的轮胎力不再需要像Dugoff那样用组合参数近似而是直接通过统一的切力表达式描述。我采用的UniTire简化版本中无量纲总切力表达式为[ \bar{F} \mu F_z \left[ 1 - \exp\left(-\phi - E\phi^2\right) \right] ]其中 (\phi) 是无量纲总滑移率由纵向和侧向无量纲滑移合成[ \phi \sqrt{\phi_x^2 \phi_y^2} ]纵向无量纲滑移[ \phi_x \frac{K_x s_x}{\mu F_z} ]侧向无量纲滑移[ \phi_y \frac{K_y s_y}{\mu F_z} ]这里 (K_x) 是纵向刚度(K_y) 是侧偏刚度(s_x) 是纵向滑移率(s_y \tan\alpha) 是侧向滑移率。得到总切力后再根据纵向力和侧向力的占比投影到各自方向[ F_x \bar{F} \cdot \frac{\phi_x}{\phi} ][ F_y \bar{F} \cdot \frac{\phi_y}{\phi} ]这个形式的好处是清晰、自然有明确的物理意义。当 (\phi) 增大时指数项迅速衰减力趋于饱和比Dugoff公式中分段函数的过渡更平滑。在爆胎工况下(K_x)、(K_y)、(\mu) 都会衰减UniTire能通过一个统一的 (\phi) 把这些变化都吸收进去不需要额外修改公式结构这是它相比Dugoff最核心的优势。3.2 爆胎参数如何在UniTire中体现用UniTire模拟爆胎关键不是改公式而是改参数。我总结的爆胎参数映射关系如下正常轮胎状态以下为245/45R18规格半经验参考值参数正常值爆胎后-80%胎压纵向刚度 (K_x)30000 N/单位滑移18000 N/单位滑移侧偏刚度 (K_y)2500 N/rad1200 N/rad峰值附着系数 (\mu)0.90.6有效滚动半径 (R_{eff})0.33 m0.26 m滚动阻力系数 (f_r)0.0120.18注意这些值是我在自己仿真和文献对照中采用的近似值具体项目需要根据不同轮胎规格和爆胎程度重新标定。但总体趋势是一致的爆胎后刚度掉30%-50%附着系数掉30%左右滚动半径掉20%左右滚动阻力系数暴涨一个数量级。3.3 参数标定与数据来源UniTire参数标定是整套建模里最费时的一步。Dugoff参数少用经验值就能跑UniTire参数多直接抄经验值很容易让仿真结果和实车对不上。我的标定思路是分层走首先利用Pacejka或UniTire官方文档中的参考参数把正常工况仿真结果和文献中同规格轮胎的实验数据比对微调 (K_x)、(K_y) 等刚度参数然后用侧偏工况的仿真输出和Magic Formula的预测曲线做交叉验证确保正常工况的下力-滑移曲线形态接近最后才引入爆胎参数衰减在爆胎瞬间观察车辆的横摆响应是否符合基本物理直觉——左前轮爆胎时车辆应向左偏驶并有明显横摆力矩。有条件的话建议用轮胎动力学试验台的实测数据或者厂商提供的轮胎特性报告来标定。没有也没关系用文献中同规格轮胎的数据做基准加上基本的力-滑移曲线形态校验就足够支撑整车爆胎动力学研究了。4. 爆胎触发机制与整车状态耦合我采用的处理方法4.1 爆胎发生后的轮胎参数变化模型爆胎不是瞬间完成的。轮胎从正常状态到完全失压经历的是一个持续时间大约20到80毫秒的瞬态过程。如果直接在仿真中用阶跃信号切换参数会导致轮胎力突变数值上很难收敛真实物理上也不符合情况。我采用的处理方法是定义一个爆胎进程变量 (b(t))范围从0到1(b(t) 0) 表示正常状态(b(t) 1) 表示完全爆胎爆胎触发后的过渡过程我用[ b(t) 1 - \exp\left(-\frac{t - t_{\text{burst}}}{\tau}\right) ]其中 (t_{\text{burst}}) 是爆胎触发时刻(\tau) 是时间常数我常取0.02到0.05秒也就是20到50毫秒。之后所有爆胎相关参数都通过 (b(t)) 插值过渡。以侧偏刚度为例[ K_y(t) K_{y,\text{normal}} \cdot \left[1 - b(t) \cdot \Delta K_y^*\right] ](\Delta K_y^*) 是侧偏刚度的最大衰减比例比如0.5代表衰减50%。用指数过渡代替阶跃虽然物理上仍然简化了爆胎的复杂瞬态过程但仿真稳定性和结果可信度都大幅提升。4.2 整车七自由度模型的连接方式轮胎力要作用到整车模型上才谈得上爆胎动力学。我搭建的是经典的七自由度整车模型车身纵向、横向、横摆三个自由度加上四个车轮的旋转自由度。车身动力学方程简化为纵向[ m(\dot{v}x - v_y r) \sum F_x F{\text{air}} ]横向[ m(\dot{v}_y v_x r) \sum F_y ]横摆[ I_z \dot{r} \sum M_z ]其中 (\sum F_x) 是四个轮胎纵向力之和在车身坐标系下的投影(\sum F_y) 是侧向力之和(\sum M_z) 是横摆力矩之和。在Simulink里我用一个子系统封装整车动力学输入是四个轮胎力输出是车辆运动状态(v_x)、(v_y)、(r)。轮胎模型子系统接收来自整车子系统的运动状态和来自爆胎触发模块的爆胎进程信号 (b(t))算出每个车轮的 (F_x)、(F_y) 后回传给整车子系统。这个结构非常适合后期接入控制算法——控制器直接看整车子系统输出的状态输出控制量到车轮动力学模块形成闭环。4.3 轮胎力突变对车身横摆的影响爆胎后车辆的横摆响应是最值得关注的现象也是爆胎动力学建模的重要验证指标。当前轮发生爆胎时该轮侧偏刚度下降导致侧向力减小同侧后轮还会因为载荷转移进一步改变力分布造成左右侧向力不平衡产生一个附加横摆力矩。同时爆胎轮的滚动阻力系数暴涨产生的纵向阻力会让车辆产生一个额外的偏航趋势。我在仿真中看到的现象和实车爆胎事故案例是一致的左前轮爆胎时车辆除了向左偏驶还会出现一个明显的横摆角速度正向跳变峰值可以达到正常转向输入的几倍。如果此时驾驶员没有及时修正车辆会在1到2秒内跑出原车道这就说明了爆胎动力学模型对底盘安全控制算法的重要性。UniTire模型在这个场景下给出的横摆角速度曲线比Dugoff更平缓原因是UniTire联合工况下的力衰减更连续不会因为参数突变产生力的阶跃跳变而Dugoff的饱和函数在参数越过阈值时容易导致力输出出现拐点。5. 两套模型的仿真对比结果各自强项与工程取舍5.1 仿真工况设计对比实验我设定了两组工况第一组是中高速直线行驶爆胎初速度120 km/h无转向输入第2秒触发左前轮爆胎路面附着系数0.8。第二组是高速弯道爆胎初速度80 km/h固定方向盘转角对应稳态侧向加速度0.4g第2秒触发左前轮爆胎。为了公平对比两套轮胎模型使用完全相同的整车模型和爆胎参数只替换轮胎模块。仿真时长8秒观测变量包括车辆横向位移、横摆角速度、车身侧偏角和车辆纵向速度。5.2 结果差异分析直线爆胎工况下两套模型给出的趋势完全一致车辆向左偏驶横摆角速度在爆胎后0.1秒内达到峰值然后逐渐衰减并稳定在一个残余值。差异主要体现在峰值大小和恢复速度上。Dugoff模型的横摆角速度峰值约为18 deg/sUniTire约为13 deg/s大约相差30%。这是因为Dugoff在侧偏角增大后力的衰减步进更明显导致横摆角速度的响应更“冲”。UniTire的指数型饱和特性让力变化更平滑横摆响应因此更温和。弯道爆胎工况下的差异更明显。Dugoff在弯道大侧偏角条件下轮胎力的衰减过于激进出现了横摆角速度振荡甚至有一段趋势接近失稳边界。UniTire则保持了更稳定的力输出横摆角速度曲线虽然也在增大但没有进入振荡区域。这背后的原因是弯道行驶时轮胎已经工作在中大侧偏角区域Dugoff模型的线性刚度假设开始失稳而UniTire对非线性区间的描述更准确。5.3 选型建议综合下来我个人的选型建议是这样的如果你做的是爆胎预警算法、底盘控制策略的前期快速验证重点是跑通控制闭环、观察大趋势那就用Dugoff它参数少、调参快、计算效率高实时仿真的负担小。如果你做的是极限工况下的爆胎稳定性分析比如爆胎后车辆的失稳边界、底盘稳定控制的介入策略、或者需要精确评估驾驶员操作对车辆响应的影响那就用UniTire它在大侧偏角、联合工况下的力描述更可靠。更进阶的做法是两套模型都保留通过一个Model Variants模块切换。Simulink的Model Variants能在不修改框图的条件下切换不同轮胎模型非常方便做交叉验证。6. 实操踩坑记录代数环、数值振荡与参数标定6.1 代数环问题这是第一次跑通整个仿真时遇到的最大障碍。轮胎力的计算依赖滑移率滑移率依赖车轮转速车轮转速依赖轮胎力Simulink检测到这种没有延迟的闭环会报代数环错误或者运行速度急剧下降。我的解决方法在前面提到过用Memory模块打破代数环。具体做法是在滑移率计算路径上插入一个Memory模块让当前时刻的转速使用上一时刻积分器的输出值等效于一个步长的延迟。对于采样时间固定为1e-4秒的仿真这个延迟引入的误差完全可以忽略。另一种思路是把车轮转速方程改成隐式求解但实现复杂度高不建议新手尝试。优先用Memory或者离散化处理。6.2 求解器与步长设置爆胎瞬间轮胎参数变化剧烈即使做了指数过渡对求解器仍是考验。刚开始我用变步长ode45爆胎时刻直接仿真卡死或者结果跳变。后来我总结了三条经验第一优先选择ode15s或ode23t这类刚性问题求解器。爆胎动力学本质上是慢变车辆动力学和快变轮胎动力学耦合的刚性问题变步长刚性求解器的收敛性更好。第二最大步长必须限制。即使使用变步长也要把MaxStep设置为0.001秒确保爆胎瞬态过程至少有几十个采样点。第三如果是批量仿真场景图简单省事可以直接用定步长ode4步长设为0.0005到0.001秒。定步长仿真虽然计算量大但结果的一致性和可重复性最好。在华为杯或国赛场景下定步长跑出来的曲线明显更干净评委看起来也更舒服。6.3 CarSim联合仿真时的注意事项如果你的最终目标是把自建轮胎模型和CarSim联合仿真有几点需要提前规划。CarSim的整车动力学模型可以接收自定义的轮胎力输入但需要把CarSim自身的轮胎模型禁用或替换。具体做法是在CarSim的VS Commands里把轮胎模块的力计算关闭然后通过Simulink接口把自定义轮胎力连接到CarSim的输入通道。接口信号我建议用Simulink中的Bus对象管理把四个轮胎的Fx、Fy、滚动半径、附着系数等打包成一个信号组避免接口线太乱。还有一个非常容易踩的坑是单位制。CarSim默认使用国际单位制但内部很多参数是以千牛、千帕等扩展单位表示的Simulink侧如果沿用自己习惯的N、Pa联调时会出现数量级错误结果看起来就像爆胎后车辆飞起来了。我因为这个问题浪费了整整一天最后发现只是单位没换算。强烈建议在Simulink模型里加一个单位标注层或者用Bus信号的Description字段写明每个信号的单位。另外CarSim和Simulink联合仿真时步长设置要以CarSim的求解器为准Simulink侧的采样时间尽量设为CarSim通讯步长的整数倍避免插值误差造成的力抖动。按照这套流程搭完两套轮胎模型加整车框架从零开始大概需要三到四周。但比起用黑盒模型自己掌握每一个参数、每一行公式之后后期做控制算法和工况扩展的底气完全不同希望这份记录对准备入坑轮胎动力学建模的朋友有帮助。
📌 标签:
工业官网
设计趋势
AI 建站
SEO
获取完整报告 →
RELATED ARTICLES
推荐阅读
2026/9/26 14:02:10
AI落地四层架构:模型层、Harness层、Agent层与Infra层实践指南
2026/9/26 14:02:10
PDF语义搜索实战:结构解析+分层嵌入+增量向量索引
2026/9/26 14:02:10
5分钟搭建QQ常驻AI助手:Lighthouse+Deepseek+AstrBot+Docker部署指南
2026/9/26 14:52:13
前后台分离的仓库管理系统课设实战:Android+Spring Boot从零到答辩
2026/9/26 14:52:13
Atlas 300V 24G部署YOLO实战:从ONNX到OM的昇腾推理全攻略
2026/9/26 14:52:13
昇腾Atlas 300V 24G推理卡实战:YOLO模型部署与调优全攻略
2026/9/26 14:52:13
open-code-review开源实践:搭建AI智能代码审查流程与CI门禁
2026/9/26 14:52:13
Atlas 300V 24G部署YOLO实战:从推理卡环境搭建到性能优化
2026/9/26 14:47:13
Claude Code Skill实战:从40个到28个,让每个Skill真正生效
2026/9/26 0:00:44
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
2026/9/26 0:00:44
【愚公系列】《OpenClaw实战指南》018-写作与整理:用 TaoToken 统一 Key 打通 OpenClaw Skill 周报公文流水线
2026/9/26 0:00:44
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
2026/9/25 5:41:44
深入解析Transformer多头注意力机制与工程优化
2026/9/26 9:34:02
OpenClaw 的 Skills 跑学习任务,模型通道改到 TaoToken 通道行不行?
2026/9/26 9:46:13
ChatGPT报错Oops, an error occurred! 全链路排查指南