ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

车辆动力学模型搭建:简化版魔术公式轮胎力计算实战

车辆动力学模型搭建:简化版魔术公式轮胎力计算实战 做底盘动力学仿真和控制算法开发的朋友应该都被“车辆动力学模型”这几个字折腾过。尤其是刚上手的时候看着一堆微分方程和轮胎力公式很容易一头雾水。今天咱们不整那些虚的直接上干货先把车辆动力学模型怎么搭这件事整明白。核心就落在轮胎力计算上而轮胎力计算目前工程上最普及、精度和复杂度平衡得最好的方案就是魔术公式轮胎模型。这篇主要聊这个模型的简化版怎么理解它、怎么参数化、怎么塞进仿真模型里跑起来。这个内容适合谁看我说得直白一点。如果你在做横向控制、纵向控制、稳定性控制或者底盘域控制器相关的算法仿真这篇文章能告诉你模型底层是怎么转起来的以及你常看的那些轮胎特性曲线到底怎么来的。如果你只是做规划或者做车身姿态估计那这篇文章也能帮你搞清楚车辆状态反馈信号在模型里是怎么被算出来的减少你和底层团队沟通时的知识盲区。1. 搭车辆动力学模型凭什么先死磕轮胎很多新手搭车辆仿真模型上来就把车体当成一个刚体套上牛顿第二定律就开始算加速度算完发现质心侧偏角、横摆角速度这些量和实车差得离谱。问题出在哪就出在轮胎力和滑移率之间的关系没处理好。轮胎是整车力和力矩的主要来源刹车、加速、转向最终都是通过轮胎和地面的接触来实现的轮胎力学特性如果不准后面做的控制器调参全是空中楼阁。1.1 底盘开发里车辆模型到底解决什么问题车辆动力学模型在工程上有三个核心用途一个是用来做控制器设计前的离线仿真验证算法在极限工况下的表现另一个是做硬件在环测试让ECU在实验室里就能跑各种道路工况还有一个是做车辆状态估计用模型作为预测基准再融合传感器数据估算出质心侧偏角这类不好直接测量的状态。这三个用途对模型精度要求不一样但底层结构是共通的。模型输入一般是方向盘转角、车速或驱动/制动力矩输出是横摆角速度、侧向加速度、纵向速度、质心侧偏角这些状态。如果模型里的轮胎力计算是准的输出的状态就基本可靠后续控制器的逻辑才有意义。1.2 轮胎模型选型线性区、魔术公式、简化版的边界轮胎模型的选型本质上是在精度和计算量之间做折中。最基础的是线性轮胎模型也就是把侧向力和侧偏角当成正比关系刚度就是侧偏刚度。这在侧偏角很小的时候是成立的一般3度以内还好可一旦进入极限工况比如大侧偏、大滑移线性关系就完全失真了控制器在仿真里调好的参数实际根本不能用。再往上就是魔术公式轮胎模型这是荷兰代尔夫特理工大学的Pacejka教授提出的半经验公式模型用一套组合三角函数来拟合轮胎在各个工况下的力学特性。完整版的魔术公式参数非常多一套轮胎可能有几十个拟合系数工程落地的时候标定工作量大计算也偏重。所以我们在实际项目中更多用的是简化版只保留主项的B、C、D、E四个系数用于纵向力和侧向力的拟合回正力矩一般干脆不建或者用简化近似。这个精简方案能覆盖大部分底盘控制仿真场景特别是在做横向控制的时候精度够用计算负担也低。2. 简化版魔术公式的参数到底是什么意思很多资料里魔术公式列出来就是一大串系数表看着吓人。简化版没那么复杂核心就是下面这个基本形式[ y D \cdot \sin(C \cdot \arctan(B \cdot x - E \cdot (B \cdot x - \arctan(B \cdot x)))) ]这里的x在侧向力计算里是轮胎侧偏角在纵向力计算里是纵向滑移率y对应的是侧向力或纵向力。D是峰值因子决定曲线的最大值C是形状因子决定曲线是像正弦还是像别的什么形状B是刚度因子决定曲线原点附近的斜率E是曲率因子决定曲线峰值附近的弯曲程度。2.1 魔术公式的数学形式和各项物理含义说人话就是魔术公式本质上是一种非线性映射输入是轮胎的侧偏角或者滑移率输出是轮胎力。B乘以C的乘积对应线性区的侧偏刚度这一点很重要你可以通过它把线性模型和魔术公式衔接起来。在仿真程序里你只要知道当前轮胎的侧偏角查一下B、C、D、E四个参数就能算出侧向力比查一整张二维表要轻量得多。这四个参数并不是固定的它们会随着垂直载荷的变化而变化。也就是说轮胎在空载和满载的时候特性是不一样的。简化版也有办法处理可以对不同垂直载荷下的B、C、D、E参数做插值。一般做法是做三到五个载荷点下的参数标定然后运行时根据当前垂直载荷线性插值。这个方案已经能覆盖大部分仿真需求了。2.2 关键参数快速获取从实车数据到查表参数怎么来这是大家最头疼的一步。实测数据是最好的一种来源用轮胎试验台进行不同垂直载荷、不同侧偏角工况的测试采集数据后用最小二乘或者优化算法去拟合公式里的B、C、D、E这是最准的。没有试验台数据也没关系可以用同规格轮胎的公开数据集。轮胎厂商经常会在技术文档里给出一部分典型工况的特性曲线你可以把曲线上的点抠出来自己拟合出一套参数。再不行就用经验值不同车型的底盘团队一般都会积累一些常用参数代进去跑通模型再做台架和实车验证来修正。这里给你一套简化版经常用的初始参数范围做参考参数含义典型初始值范围B刚度因子815C形状因子1.21.6D峰值因子0.71.2倍垂直载荷E曲率因子-0.50.23. 搭建两轮单轨模型的完整实操流程理论说完了下面进入正题我带你过一遍怎么把车辆动力学模型真正搭起来。这里选择两轮单轨模型作为载体也就是常说的自行车模型。这个模型把左右两侧轮胎合并只考虑侧向运动和横摆运动再加一个纵向速度作为时变参数。它结构简单但已经能反映车辆的操稳特性用来做EPS或者ESC相关算法的前期开发足够了。3.1 整车参数与自由度取舍建模之前先把整车参数准备好以下几个是必须要有的参数符号说明整车质量m簧载质量加上非簧载质量的近似总和横摆惯量Iz绕车辆垂直轴的转动惯量质心到前轴距离lf决定前轴载荷转移质心到后轴距离lr决定后轴载荷转移前轴侧偏刚度相关参数Bf, Cf, Df, Ef前轴简化魔术公式系数后轴侧偏刚度相关参数Br, Cr, Dr, Er后轴简化魔术公式系数自由度方面两轮单轨模型一般只保留侧向速度vy和横摆角速度r两个自由度。纵向速度vx作为输入给定好处是模型简单计算稳定适合控制器前期验证。当然如果你要做联合仿真也可以把纵向自由度加回来但那样需要用轮胎纵向力公式复杂度会上一个台阶。3.2 轮胎力计算与状态量更新搭建模型的核心步骤就是轮胎力的迭代计算。先根据车辆当前状态计算每个轮胎的侧偏角。单轨模型里前轮和后轮的侧偏角分别为[ \alpha_f \delta - \arctan\left(\frac{v_y l_f \cdot r}{v_x}\right) ][ \alpha_r - \arctan\left(\frac{v_y - l_r \cdot r}{v_x}\right) ]其中δ是前轮转角。得到侧偏角之后代入简化魔术公式[ F_{yf} D_f \cdot \sin(C_f \cdot \arctan(B_f \cdot \alpha_f - E_f \cdot (B_f \cdot \alpha_f - \arctan(B_f \cdot \alpha_f)))) ]后轴同理。有了前后轴的侧向力整车动力学方程就很好写了[ m \cdot \dot{v_y} F_{yf} \cdot \cos(\delta) F_{yr} - m \cdot v_x \cdot r ][ I_z \cdot \dot{r} F_{yf} \cdot \cos(\delta) \cdot l_f - F_{yr} \cdot l_r ]然后对加速度积分就能得到每个计算周期最新的vy和r整个递推就转起来了。3.3 仿真验证思路与调参步骤模型搭好以后马上要做验证看看输出趋势对不对。我的习惯是先做一个阶跃转向输入测试方向盘转角给一个固定角度观察车辆横摆角速度的响应曲线。如果模型正确横摆角速度应该出现一个上升过程然后收敛到稳态值。上升过程的斜率和收敛值分别反映了车辆的响应速度和稳态增益和实车趋势对上了模型基本就算成功了。调参的时候有个小技巧。先不动E把B、C、D三个参数定下来用线性区斜率约束B乘以C用峰值大小约束D最后用峰值附近的曲率约束E。这个顺序可以避免参数相互干扰调起来快得多。我在实际项目里用这个方法基本三轮之内就能得到一组能用的参数。4. 简化版魔术公式的常见问题与排查实录仿真模型跑起来之后坑也不少。下面这几个问题是我自己在干活时候遇到过的概率高原因也相对集中整理出来供你参考。4.1 模型发散和数值振荡怎么处理最常见的问题是模型在高速工况下直接发散横摆角速度一下子就爆表了。排查思路先看积分步长。车辆动力学模型的自然频率一般在10赫兹上下但轮胎力的非线性强推荐仿真步长至少做到1毫秒以内如果是快速工况最好用0.1毫秒。步长太大会导致状态更新滞后反馈回路相位裕度不够系统就容易振荡发散。第二个原因是轮胎侧偏角计算里的反正切函数没有做象限保护。车辆状态比较大的时候v_y、r这些值变化范围大反正切结果会出现跳变轮胎力突变整个系统就容易被激怒。处理方式是加一个unwrap函数或者限制侧偏角的物理范围一般限制在正负30度以内就够了。4.2 轮胎力收敛不到期望值有时候你会发现明明给的侧偏角很大轮胎力却上不去甚至比线性区还小。这很可能是E参数设置出了问题。E大于1的时候公式在超过某个角度后会出现下降段轮胎力反而变小了这是魔术公式的实际行为代表轮胎进入滑移区。如果你不想要这种剧烈的下降特性就把E控制在0到0.5的范围内这样曲线过渡更平滑仿真也更容易稳定。还有一种是D参数和垂直载荷不匹配导致的。轮胎在地面上的最大摩擦力受附着系数限制D的物理意义其实就是峰值附着系数乘以垂直载荷。如果你的D给得比这个乘积大很多相当于模型生成了一个不可能的轮胎力车辆就会表现出不正常的过弯能力控制算法在里面调出来参数后实车没法用。4.3 一些容易忽略的初始化细节模型初始化的时候要注意v_y通常从0开始但此时侧偏角和轮胎力不一定等于0特别是如果初始车速v_x比较高直接扔进方程会出现初始冲击。解决办法是先做一段直行工况让模型自己稳定下来或者直接把初始状态设置成稳态转向状态再从那个点开始加激励。另外提醒一下轮胎力饱和之后的仿真阶段别用线性卡尔曼滤波去做状态估计因为模型预测和实际响应的偏差会非常大。这种情况要么用扩展卡尔曼滤波处理非线性要么就把轮胎模型线性化到当前工作点再估计否则估计结果根本不能用。常见现象可能原因处理方式高速发散步长过大缩小积分步长到1ms内轮胎力跳变侧偏角象限问题限制侧偏角范围使用unwrap最大力异常D参数超物理极限用附着系数乘以载荷约束D稳态增益偏差大B*C组合不对用线性区实测刚度校准B*C这套简化版魔术公式的车辆动力学模型我在多个项目里都跑过包括L2级辅助驾驶的控制仿真和电子稳定程序的策略验证。整体下来的感受就是一句话模型不是越复杂越好只要轮胎力这一层物理关系摸透了简化模型完全能扛起早期开发的大梁。你在自己搭模型的时候先从小处开始跑通一条直线、一个稳态转向再逐步加工况。每个环节都验证踏实了后面的路就好走了。
返回列表