ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

分布式驱动车辆直接横摆力矩滑模控制与参数整定方法解析

分布式驱动车辆直接横摆力矩滑模控制与参数整定方法解析

分布式驱动的车做稳定性控制,最容易被低估的地方不是电机响应有多快,而是四个轮子终于同时拥有正负两个方向的力执行能力。传统燃油车在极限工况下只能靠差动制动去“救火”,液压压力建立的时间长、力矩方向也受限;分布式驱动不一样,每个轮子都是独立可控的执行器,驱动、制动、反向扭矩全部在线,这让直接横摆力矩控制第一次从理论走向了真正可工程化部署。这篇文章我想把近期完整复现和测试的一套方案讲清楚:分层式控制架构、直接横摆力矩作为控制中间量、滑模控制器承担鲁棒跟踪、再用优化算法把滑模参数整定到不同附着工况。内容包含数学推导思路、仿真工况设计、参数整定方法论,以及台架和实车阶段才会暴露的坑。适合正在做底盘域控、稳定控制算法或线控底盘预研的工程师和研究生。

1. 分布式驱动给稳定性控制带来了什么新东西

1.1 从“单一制动通道”到“多维力分配通道”

传统车辆稳定性控制的执行器路径很窄:发动机只能驱动、制动系统只能制动,想要产生一个附加横摆力矩,本质上只能靠左右侧制动力差。这条路有两个硬伤。第一,液压制动压力建立的时间常数通常在几十毫秒以上,从控制器发出请求到车轮真正产生制动力,中间隔了泵建压、阀体响应、制动器贴合这一大串环节,遇到冰面这种附着突变场景,反应速度跟不上车辆状态的变化。第二,制动介入形成的是“单向作用力”,只能减速干预,没办法在需要动力输出的场景下做精细的转矩驱动。

分布式驱动把这个问题变成了纯机械层面的自由度问题。轮毂电机或轮边电机的转矩响应时间一般在10毫秒量级,有些高性能电机配合控制器甚至能到几毫秒,这意味着横摆力矩的生成速度从“慢半拍”变成“几乎同步”。更重要的是,每个轮子都可以独立输出正扭矩、负扭矩或零扭矩,等于从执行器层面提供了四象限连续可调的纵向力集合。用大白话说,传统方案只能“踩刹车拉方向”,分布式驱动可以“四个轮子根据需求协调发力”,这已经不是性能提升一级两级的问题,而是控制策略设计逻辑上的变化。

1.2 稳定性判据:横摆角速度与质心侧偏角缺一不可

无论是传统车还是分布式驱动,稳定性控制的最终落脚点都是两个状态量:横摆角速度γ和质心侧偏角β。γ描述车辆绕垂直轴旋转的快慢,驾驶员通过方向盘转角能直观感知;β描述车辆实际运动方向和车头朝向之间的夹角,是判断车辆是否“甩起来”的关键指标。线性的二自由度模型里这两个量是耦合的,但在轮胎进入饱和区后,它们的响应特性完全不同。

这里有个容易被忽视的细节:横摆角速度在附着极限附近会自然饱和,而质心侧偏角在失稳初期反而增长缓慢、后期爆发很快。只看γ容易误判车辆还很稳定,等β明显变大时往往已经进入不可控区域。工程上常用β-γ相平面来划稳定包络,把实时状态投影到这个平面上,判断车辆是否偏离稳定域。分布式驱动方案中的直接横摆力矩控制,本质上就是通过附加横摆力矩ΔM把β-γ状态拉回到包络内。另一个工程困难是,γ可以用陀螺仪直接测到,β却没有低成本传感器能直接测量,必须靠观测器估计,这条后面第6章我还要单独展开。

2. 分层式控制架构:先算总账,再分任务

2.1 为什么不做集中式最优控制

第一次接触这个问题时,我的第一反应也是“既然四个轮子都能独立控制,那直接把整车动力学、轮胎非线性、执行器约束全放进一个MPC或者集中最优控制框架里不就行了?”理论上确实可以,而且论文里集中式方法的跟踪性能通常很漂亮。但落到工程上,集中式方案有几个不太好绕过去的坎:整车非线性模型的实时求解对域控算力要求高,轮胎魔术公式的参数在不同路面、不同胎压下漂移很大,集中式优化器的性能对模型精度异常敏感,模型一偏整套控制质量都会跟着衰退。

分层式架构的价值在于把不同时间尺度、不同控制目标的问题拆开。上层是运动控制层,用10到20毫秒周期计算当前状态下需要的附加横摆力矩;下层是力矩分配层,用1到5毫秒周期把总驱动力矩和附加横摆力矩分配到四个车轮。上层不需要关心哪个轮子出多少力,下层也不需要理解车辆稳定包络怎么画,职责边界清晰,调试定位问题也方便得多。这种“先算总账,再分任务”的思路,和传统公司里总工分模块做设计的逻辑很像:每个层级只看到自己该看到的输入输出,做好自己的接口语义,整体系统就能稳定跑起来。

2.2 上层参考模型:期望横摆角速度不是单纯运动学公式

上层控制器的第一步是计算驾驶员期望的横摆角速度。最常用的参考来源是线性二自由度自行车模型,期望横摆角速度可以写成:

γ_nominal = V_x / L * δ / (1 + K * V_x²)

其中V_x是纵向车速,L是轴距,δ是前轮转角,K是稳定性因子。这个公式在低附着路面高速过弯时会给出一个远超轮胎能力极限的期望值,所以必须加一个路面附着约束:期望横摆角速度的绝对值不能超过μ * g / V_x,方向与名义值保持一致。这个限幅看起来只是一个不起眼的约束,但对控制效果是决定性的。如果漏掉它,滑模控制器会觉得“误差永远存在”,持续输出很大的附加横摆力矩,在低附着路面上反而会把车推入振荡,我见过不止一次在仿真里出现这种情况。

期望横摆角速度计算出来之后,通常还要加一阶惯性滤波,时间常数大约0.05到0.2秒。这个滤波的作用有二:一是让参考值变化平滑,避免小转向输入引起控制量突变;二是模拟真实驾驶员的预期响应,让稳定性控制不要介入得太敏感。参考模型一旦定下来,后面的滑模控制、力矩分配全都是围绕“如何跟踪它”展开的,所以这个环节的工程细节值得多花点时间调。

2.3 直接横摆力矩在分层架构中的位置

整个控制链路可以这样描述:驾驶员输入(加速踏板、制动踏板、方向盘转角)→ 参考模型计算期望横摆角速度和期望质心侧偏角 → 状态观测器提供当前实际γ和β → 滑模控制器根据误差计算附加横摆力矩ΔM → 下层力矩分配器把驾驶员需求总扭矩和ΔM一起分配到四个轮子 → 轮毂电机输出转矩。

这里最关键的一点是,ΔM不是最终控制量,而是一个中间变量。下层分配器拿到ΔM之后,还要考虑轮胎附着椭圆、电机外特性限幅、执行器变化率约束,最终决定每个轮子出多少牛米。分层设计的优势在这里体现得很充分:上层不关心执行器的具体物理限制,下层不关心车辆稳定边界,两者通过ΔM这个接口解耦,既保证了算法可迁移,也让单独一层的优化替换变得更容易。

3. 滑模控制器的实操侧:推导、抖振抑制与参数整定

3.1 面向横摆运动的等效滑模控制律推导

滑模控制吸引人的地方在于它的鲁棒性:被控对象参数有摄动、外界有扰动时,它依然能保证系统状态被拉回预设的滑模面上。对车辆横摆运动来说,轮胎侧偏刚度、路面附着系数都是时变的,这正好是滑模控制的主场。

把车辆横摆动力学简化为关于附加横摆力矩的模型:

I_z * γ_dot = M_base(β, γ, δ, V_x) + ΔM + d(t)

其中M_base是不施加附加控制时的横摆力矩,d(t)包含了建模误差和外部扰动。定义横摆角速度误差eγ = γ - γ_des,质心侧偏角误差eβ = β - β_des,构造滑模面:

s = eγ + λ * eβ

λ是权重系数,决定β误差在滑模面里占多大分量。β本身有较强的非线性,所以λ不能取太大,否则滑模面会对观测噪声非常敏感。令滑模面导数等于零,可以求解出等效控制项u_eq,它负责在名义模型下维持状态沿着滑模面运动;再叠加一个切换控制项u_sw = -k * sgn(s),负责把偏离滑模面的状态拉回来。控制律总形式是:

ΔM = u_eq + u_sw

稳定性证明用李雅普诺夫候选函数V = 0.5 * s²,只要保证切换增益k大于扰动上界,就能满足V_dot < 0,系统在有限时间内到达滑模面。这个数学框架本身很成熟,真正的难点在下一节。

3.2 抖振问题是底盘控制的死穴

教科书里的滑模控制用了理想的符号函数,但真实底盘控制里如果直接上sgn(s),你会立即看到车辆出现整车层面细碎的高频抖动,电机转矩指令在正负之间快速切换,NVH表现极差。对机械结构来说,高频抖振会加速减速器齿轮磨损,对电驱动系统来说,转矩突变还会激发电流环和减速机构的谐振模态。

工程通用的做法是将符号函数替换为饱和函数:

sat(s / Φ) = s / Φ, |s| ≤ Φ; sat(s / Φ) = sgn(s), |s| > Φ

Φ是边界层厚度,它等价于在滑模面附近用高增益线性控制代替切换控制。Φ越大抖振越小,但跟踪误差也会越大;Φ太小又和纯符号函数没有区别。实际调参经验是,先在仿真里找到抖振消失的临界Φ,再适当放大30%到50%留出工程裕量。还可以改用指数趋近律:

s_dot = -q * s - k * sat(s / Φ)

q项在接近滑模面时占主导,让趋近速度随误差缩小而放缓,切换项的负担更小,控制量也更平顺。这个改进几乎不增加任何计算量,但实车体验的差别非常明显。

3.3 “滑模优化算法”到底优化什么:参数自整定

标题里的“滑模优化算法”,落到具体技术上包含两方面:一个是滑模控制器自身的参数整定,另一个是下层力矩分配的优化求解。很多论文把这两件事统称为“滑模优化算法”,我这里先拆解第一部分。

滑模控制器里有四个关键参数:滑模面权重λ、指数趋近系数q、切换增益k、边界层厚度Φ。这四个参数互相耦合,用手工调参的方式排查组合空间效率很低,而且低附着路面和高附着路面下的最优参数可能差异巨大。我在仿真平台里直接用粒子群算法做离线整定,目标函数设计为:

J = w1 * Σ(eγ²) + w2 * Σ(eβ²) + w3 * Σ(ΔM²) + w4 * Σ(高频抖振分量²)

前两项是跟踪性能,第三项是控制能量约束,第四项是抖振抑制。这里面的权重配比比参数优化本身还关键:如果w4给得太重,优化出来的参数会过度保守,车辆稳定性有余但响应迟钝,驾驶员会觉得转向“黏糊糊”的;如果w1给得太重,参数会偏向激进,低附着路面容易引发振荡。我的建议是先跑一版不含w4的优化,观察抖振水平,再逐渐加大w4,找到跟踪性能和NVH的平衡点。

粒子群参数可以参考这样一组配置:种群规模20到30,迭代次数30到50,惯性权重从0.9线性递减到0.4,学习因子取1.5到1.5。每个粒子的位置是四维向量,对应λ、q、k、Φ的取值范围,比如λ取0.5到3.0,q取5到30,k取20到200,Φ取0.05到0.5。每次迭代都要把参数带入整车仿真模型跑一次完整工况,计算适应度。整个过程算下来非常耗时,但它是离线工作,一旦完成可以得到一组覆盖该工况的最优参数组合。

在线做PSO整定在计算资源上不太现实,实车项目里更可行的做法是把离线优化和多路面参数调度结合起来。比如按附着系数μ分成高、中、低三档,每档对应一组PSO整定出的参数,实车运行时根据附着估计结果查表切换。参数切换时要做线性插值,否则在附着系数突变的一瞬间,控制量会出现一个明显的阶跃。这个坑我在第6章还会再讲。

4. 直接横摆力矩的下层分配:从总力矩到四个轮

4.1 分配问题的约束条件怎么列

下层分配器拿到两个输入:驾驶员需求的总驱动力矩T_drv和上层输出的附加横摆力矩ΔM。要把它分配成四个轮子的纵向力Fx_i,首先必须满足两个等式约束:四个轮纵向力之和等于驾驶员需求总纵向力;四个轮纵向力对质心产生的横摆力矩之和等于ΔM。写成向量形式就是B * Fx = D,其中D由总纵向力和ΔM组成,B是几何相关矩阵,包含轮距、前轴到质心的距离等参数。

不等式约束比等式约束麻烦得多。每个轮子的纵向力既要受电机峰值转矩限制,又要受轮胎附着椭圆限制。附着椭圆的物理含义是:轮胎能提供的总附着力有限,纵向力占得越多,侧向力裕度就越小。简单做法是把每个轮子的纵向力单独限制在μ_i * Fz_i以内,但更精细的做法要考虑当前侧向力占用,用Fx_max_i = sqrt((μ_i Fz_i)² - Fy_i²)来约束。后者在侧向加速度较大的工况下判别更准确,但需要实时获取Fy_i的估计值,工程复杂度高一些。还有执行器变化率约束,轮毂电机虽然响应快,但转矩突变率过大会造成整车俯仰冲击,所以通常还会加一个dFx/dt的变化率上限。

4.2 最小二乘分配与轮胎利用率均匀化

直接求等式约束的解会得到一组满足力平衡的分配结果,但问题在于简单解析解经常把大部分纵向力压到某一个或两个轮子上。表面上看电机峰值转矩都还在限幅内,实际上被分配到大纵向力的那个轮子侧向裕度已经被掏空,一遇到附着突变就首先进入饱和。

更合理的做法是把“轮胎利用率均匀化”作为优化目标。定义每个轮子的附着利用率为:

η_i = sqrt(Fx_i² + Fy_i²) / (μ_i * Fz_i)

优化目标可以选择最小化所有η_i的平方和,或者最小化最大η_i,同时附加上让分配结果接近某个参考分配向量Fx_ref的偏好项,避免分配结果在相邻控制周期剧烈跳变。实现上用加权最小二乘:

min (Fx - Fx_ref)ᵀ * W * (Fx - Fx_ref), 约束B * Fx = D

解析解是Fx = W⁻¹ Bᵀ (B W⁻¹ Bᵀ)⁻¹ D。这里的权重矩阵W就是调整轮胎利用率分配的关键,给某轮更大的权重意味着让它少承担纵向力,保留更多侧向裕度。实际项目中可以把对角权重设计为1 / (μ_i * Fz_i)的平方形式,这正好等价于最小化附着利用率平方和。

4.3 分配完还必须再过一遍执行器映射

分配器解算出来的是纵向力需求,最终送给电机控制器的是转矩指令,中间还有两个必须处理的环节。第一是电机外特性限幅:轮毂电机低速段是恒转矩特性,高速段进入恒功率区,峰值转矩随转速升高而下降。如果不把电机外特性曲线放进分配器,可能出现“分配器算出800牛米,电机实际只能输出500牛米”的情况,实际横摆力矩低于上层请求,稳定性控制效果直接打折。我在样车模型里做过一次对比,把电机外特性限幅加上之后,双移线工况质心侧偏角峰值增加了大约1.2度,这个偏差在极限工况下不是小数目。

第二是前轴纵向力要额外收紧。前轮既要承担转向时的侧向力,又要输出纵向驱动力,如果给前轴分配过大的纵向力,前轮侧偏会提前饱和,车辆会立刻失去转向响应。很多分配器在优化目标里只考虑了附着利用率均匀化,却忽略了前轴总纵向力需要额外的惩罚权重,这个是我看到过的最常见设计盲区。规则很简单:在低速大转角、低附着路面这类前轮侧向需求较高的工况,分配器应该自动把纵向力往后轴转移。

5. 仿真验证:从双移线到对开路面,数据说明什么

5.1 仿真工况设计不只是选几个标准工况

仿真验证的目的是暴露控制器的真实行为边界,所以工况设计要覆盖高附着和低附着两个极端,还要有附着不对称的场景。我常用的一组车辆参数是:整备质量约1600公斤,轴距2.8米,轮距1.6米,质心高度0.55米,前轴双电机峰值转矩各600牛米,后轴双电机各800牛米。轮胎用魔术公式,附着系数分别设置为0.2、0.5、0.85三组,覆盖冰面、湿滑路面和干沥青。

典型工况我建议至少包含三个:低附着双移线(μ=0.2,初速60到80公里/小时),考验控制器在极限附着下的稳定能力;干沥青快速换道(μ=0.85,初速120公里/小时),考验高速工况下的响应精度;对开路面制动转向(左右附着系数分别为0.8和0.2,初速100公里/小时),考验附着不对称时分配器对横摆力矩的补偿能力。对开路面这个工况特别容易暴露问题,因为左右两侧附着能力差异大,如果分配器不感知附着差异,参考模型限幅和实际可执行的横摆力矩之间会产生很大偏差。

5.2 结果怎么对比、怎么看

对比对象一般设三个:无附加控制、固定参数滑模控制、PSO整定参数后的滑模优化控制。统计指标包括横摆角速度跟踪误差、质心侧偏角峰值、侧向位移偏差和平均轮胎利用率。下面是一组仿真对比示例数据,数值会随车辆参数变化,但相对趋势有代表性:

指标无控制固定参数滑模滑模+PSO整定
横摆角速度跟踪RMSE(度/秒)6.82.11.4
质心侧偏角峰值(度)9.24.53.1
侧向位移偏差(米)1.050.340.21
平均轮胎附着利用率0.870.620.48

看结果时需要注意一点:高附着工况下,固定参数滑模和PSO整定后的性能差距往往不大,因为轮胎离附着极限还很远,参数敏感性不高;真正的差异要到低附着路面和对开路面才会拉开。这说明优化算法解决的不是“所有工况下的提升”,而是“极限工况下的参数适配”。如果只看干沥青数据就下结论说优化算法没用,那就找错了评价场景。

仿真里特别值得记录的是控制介入时机。滑模控制器持续工作会干扰驾驶员正常转向意图,所以要在前端加激活门限,比如|β| > β_thres或|γ - γ_des| > γ_thres时才切入控制,退出时加迟滞带,防止控制反复切进切出。这个激活逻辑在论文里很少被详细描述,但对实车体验影响非常大。控制介入太晚,β已经发散,滑模控制也救不回来;介入太早,驾驶员会感觉方向盘“被换了个手感”。

5.3 仿真平台里容易埋雷的三个细节

第一,固定步长求解器会把滑模切换项的抖振模拟放大。控制器离散化周期和整车模型步长如果不匹配,仿真里看到的振荡可能完全是数值假象。我的经验是整车模型步长至少设到1毫秒,控制器周期保持10毫秒以内,两者之间的数据交换要做零阶保持或一阶滤波,避免直接代数环。

第二,参考模型的期望横摆角速度限幅要放在计算链路的正确位置。正确顺序是先算名义值、再限幅、再滤波,如果只把限幅放在输出端,控制器中间环节会基于未限幅的信号积分出一堆错误的控制量,限幅反而成了掩耳盗铃。

第三,仿真里从状态方程直接取β和用观测器估计β,控制效果差异很大。很多团队在仿真阶段图方便直接用真值,等上实车时才发现观测器噪声和收敛速度会改变滑模面的动态特性,之前调好的参数全要重来。我强烈建议仿真阶段就把观测器加入闭环,虽然前期麻烦一点,但能省掉实车阶段至少两轮标定。

6. 工程化落地:那些文档里不会写的实测坑

6.1 质心侧偏角估计和路面附着估计其实是前置条件

实车没有直接测量β的传感器,常见方案是用IMU、轮速、方向盘转角和纵向加速度估计器,通过扩展卡尔曼滤波或龙伯格观测器估计质心侧偏角。难点在于β观测器在低附着路面的收敛速度会变慢,误差也会放大。而路面附着系数μ的估计更麻烦,它是隐变量,只能通过轮胎力响应反推。

最头疼的是附着突变场景:车辆从干沥青突然进入冰面,μ的估计值如果更新不及时,参考模型的期望横摆角速度限幅就会偏高,滑模控制器会朝着一个根本不现实的期望值发力。一个实际策略是让观测器对μ做慢变假设,控制逻辑里同时维护μ的置信度,置信度低时主动降低切换增益k,宁可控制弱一点也不要误控。这个思路看起来保守,但在实车上是少犯错比多做功更重要。

6.2 与ABS、TCS、ESP的仲裁问题

分布式驱动车型在实际项目中并不会完全拆掉液压制动或电液制动,于是不可避免会遇到多控制器共同作用的问题。我见过最多的情况是,DYC控制器输出了一个正的附加横摆力矩,要求某侧车轮增加驱动力,但同一时刻该车轮因为纵向打滑被TCS限制在零扭矩,两个控制器没有仲裁协议,控制权限在轮端互相覆盖,结果车辆状态既没有按DYC的意图变好,也没有及时抑制住打滑,甚至产生新的横摆扰动。

量产级方案需要一个主控状态机来统一管理功能模式,按纵向滑移率、侧向失稳程度、驾驶员制动踏板状态等维度设置明确的接管优先级。例如,车轮纵向严重打滑时TCS优先,车辆侧向失稳且β超过包络线时DYC优先,驾驶员明显制动时液压制动优先。优先级表和仲裁状态机看起来是软件层面的“小事”,但在台架上调试时,这类逻辑往往比控制算法本身耗费更多时间。

6.3 电机失效下的控制重构

分布式驱动四轮独立是最大优势,但电机失效后也是最危险的退化系统。某样车在一次测试里出现过后轴一侧电机过温降功率的情况,如果分配器只简单地把原来分配给故障轮的力矩重新分摊到对侧,会产生一个很大的横摆力矩偏置,车辆立刻偏向一侧。正确做法是在故障发生后重新构造分配矩阵B,把故障轮的纵向力约束设为0,再在剩余三个执行器上重新求解可行分配。

如果只剩三个轮子,控制可行域会明显缩小,上层滑模增益也需要同步降级。核心原则是:当执行器冗余不足以完全满足驾驶员动力需求时,优先保证横摆稳定性而不是驱动性能。这个原则听起来很自然,真正落地时却需要上下层控制器之间的故障标志传递、参数切换和降级策略联动,整体是一个典型的“三余度”系统设计问题。

6.4 离线优化叠加在线调度的落地组合

说到标题里的“滑模优化算法”,我最终的工程落地建议是“离线优化加在线调度”的组合。把路面附着μ分成低、中、高三档,分别用PSO整定出一组滑模参数,实车运行根据附着估计结果查表切换,两档之间做线性插值。这个方案比纯在线优化计算量小得多,也比单一固定参数更适合多附着工况。

我踩过的坑是参数直接切换带来的状态突变:附着系数从0.4降到0.3时,同一套控制周期内λ和k发生跳变,横摆角速度跟着出现一个明显的阶跃,整车横向加速度也有突兀感。后来改成两档参数之间的线性插值,这个问题就消失了。相似的道理也适用于下层分配器权重矩阵W的调度,不要把参数做成离散档位,要把它做成连续的、可平滑过渡的映射关系。

如果你是自己做课题或者刚启动一个预研项目,我建议第一步先不要碰优化算法,把固定参数滑模在低附着路面完整跑通,记录清楚哪些地方会抖振、哪些地方响应偏慢、哪些工况下β开始发散,再引入PSO做参数整定。参数优化是锦上添花,不是雪中送炭——底层的分层架构和滑模面设计如果本身有逻辑漏洞,再漂亮的优化曲线也掩盖不住。先把那条基础路线走扎实,后面每做一层优化,你都会知道它到底在解决什么问题。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进