基于递归最小二乘的轮胎侧偏刚度在线估计与仿真分析
2026/9/16 2:40:29 网站建设 项目流程

做车辆动力学控制的人,估计都绕不开一个东西——侧偏刚度。它听起来像轮胎出厂标定好的固定参数,但实际车上,胎压波动、路面附着率变化、轮胎磨损,都会让这个值悄悄漂移。控制器如果一直拿着标定值去算,转向响应就会偏,轻则手感变“肉”,重则稳定性控制直接判断失误。我最近在搞基于递归最小二乘法(RLS)的前后轮胎侧偏刚度在线估计,仿真工况里特意用了恒定转角变化速度的输入,也就是前轮转角以固定速率持续变化,跑完一看,估计曲线收敛得很干净,正好验证了这套方法在持续激励条件下的有效性。这篇就把整个思路、模型、算法和坑完整拆开讲,适合正在做车辆状态估计、轮胎参数辨识,或者准备搭类似仿真框架的同行参考。

1. 侧偏刚度到底是个啥,为什么非要在线上估?

1.1 轮胎侧偏特性的物理直觉,别只背公式

先说物理层面。轮胎并不是一个“刚体”,它是由橡胶、帘线、钢丝组成的柔性复合结构。车轮滚动时,如果地面给了一个侧向力,轮胎接地印迹会发生扭曲,导致轮胎行进方向和车轮平面之间出现一个夹角,这个夹角就叫侧偏角 α。侧偏角不大时(一般小于5°),轮胎产生的侧向力 F_y 和 α 近似成线性关系,比例系数就是侧偏刚度 C,也就是 F_y = C·α。

这里特别提醒一下符号问题,不同论文里定义不一样,有的把侧偏刚度写成负值,有的写成正值。我的习惯是 C 取正值,F_y = C·α,侧偏角为负时侧向力也为负,这样回归写起来干净,不容易在矩阵推导里搞混。

侧偏刚度本质上反映了轮胎抵抗侧向滑移的能力。C 越大,同样的侧偏角能产生更大的侧向力,车辆过弯时就更“跟手”。但实际中,C 会随垂直载荷变化、随胎压变化、随轮胎温度变化,还会随路面附着系数变化。一个典型的例子:同一套轮胎,干燥柏油路上 C 可能是 80000 N/rad,到了湿滑路面上,轮胎侧偏特性明显软化,C 可能掉到 40000 N/rad 以下。如果你用固定标定值去算 ESP、ESC 的控制量,结果会偏得离谱。

1.2 前后轮侧偏刚度对整车操控的影响

前轮和后轮的侧偏刚度直接决定车辆的稳态转向特性。在二自由度自行车模型里,不足转向梯度 K_us 可以写成:

K_us = m / L² · (l_r / C_f - l_f / C_r) · 变化后的形式

注意括号里的 l_r/C_f - l_f/C_r。如果前轮侧偏刚度 C_f 相对小,车辆倾向于不足转向,过弯时司机需要额外修正方向盘;如果 C_f 偏大、C_r 偏小,车辆可能表现出中性转向甚至过多转向,后者对普通驾驶员来说非常危险。现代底盘域控里,无论是 LKA、ACC 还是主动横摆控制,都需要实时知道前后轮刚度,否则控制律推导时用错参数,轻则控制精度下降,重则系统失稳。

1.3 为什么要在行驶中估计,而不是用查表

你可能想,轮胎厂商给了特性曲线,直接查表不就行了吗?问题在于,出厂特性是标准条件下的测量结果,实际车辆在不同载荷分配、不同胎压、不同轮胎磨损状态下,特性曲线整体都会平移、斜率都会变化。查表方法维护成本高,而且没法覆盖所有组合工况。在线估计的思路是:利用车辆当前的动力学响应(横摆角速度、横向加速度、方向盘转角),反推当前工况下轮胎的真实等效侧偏刚度,相当于一边开车一边“自标定”。这对量产车大规模部署来说,实用价值非常高。

我的经验是:如果只是做仿真验证,可以先用标称参数搭一个“真实车辆”模型,再在控制器那侧用另一个初值去估计,这样就能清晰看到收敛轨迹。实车则要处理传感器噪声和状态不可测的问题,这个后面单独讲。

2. 车辆动力学模型与参数辨识的数学基础

2.1 二自由度自行车模型的推导和假设

做侧偏刚度估计,最常用的是二自由度自行车模型。它把前轴、后轴各简化成一个等效轮,只考虑横向运动和横摆运动两个自由度。假设车速恒定、侧向加速度小于 0.4g(保证轮胎在线性区)、忽略空气动力学和转向系统作用,运动方程如下:

m·Vx·(dβ/dt + r) = F_yf + F_yr Iz·(dr/dt) = l_f·F_yf - l_r·F_yr

这里 m 是整车质量,Vx 是纵向车速,β 是质心侧偏角,r 是横摆角速度,Iz 是绕竖轴的转动惯量,l_f 和 l_r 分别是质心到前轴、后轴的距离。

轮胎侧偏角表达式为: α_f = δ - β - (l_f·r) / Vx α_r = -β + (l_r·r) / Vx

δ 是前轮转角。注意 α 是以轮胎实际速度方向相对车轮平面的夹角来定义的,式子里正负号非常容易错,我自己在这上面吃过亏,建议推导时一定画个简图,把坐标系画清楚再写公式。

2.2 如何从运动方程里推出可辨识的回归模型

RLS 这种递推辨识方法需要的输入形式是 y = φ^T · θ,y 是观测输出,φ 是回归向量,θ 是待估参数。对侧偏刚度来说,最自然的做法是对每个车轴分别建立回归模型。

先从整车侧向力方程和横摆力矩方程联立,解出前后轴侧向力:

F_yf = (m·l_r·a_y + Iz·(dr/dt)) / L F_yr = (m·l_f·a_y - Iz·(dr/dt)) / L

其中 a_y = Vx·(dβ/dt + r) 是质心处的横向加速度,L = l_f + l_r 是轴距。这两个式子把“整车响应”转化成了“每个车轴承载的侧向力”,它们是通过车身的力和力矩平衡得到的,不依赖轮胎模型,所以可以作为观测值。

然后针对前轴有:

F_yf = C_f·α_f

写成回归形式就是: y_f(k) = α_f(k)·C_f φ_f(k) = α_f(k) θ_f = C_f

后轴同理。这样每个车轴就都是单参数线性回归,RLS 实现起来非常简单。

2.3 一点关于可辨识性的思考

单参数线性回归虽然简单,但要估计得靠谱,输入信号 α(k) 必须满足持续激励条件。通俗讲,侧偏角不能一直是一个值,必须持续变化,这样回归方程才有足够的信息量去唯一确定斜率 C。这正好回到标题里说的“恒定转角变化速度”——前轮转角以恒定速率持续变化,侧偏角也就在不同工作点上持续变化,给辨识提供了持续的激励。如果转角按阶跃跳到某个值就不动了,侧偏角稳定后变成常数,回归矩阵接近奇异,C 的估计就非常容易漂移。

我实测过,在恒定转角(非变化)工况下做 RLS,前 50 拍还能勉强跟住,之后估计值就会慢慢往错误方向飘,原因就是持续激励不足,协方差矩阵失去更新方向。

3. 递归最小二乘法的原理与工程实现

3.1 从批量最小二乘到递推形式

批量最小二乘是拿到全部数据后一次性计算 θ = (Φ^TΦ)^(-1)Φ^TY,适合离线分析,但车辆是实时系统,数据一帧一帧来,内存和算力都有限,所以要用递归形式:每来一帧新数据,就在上一帧估计值的基础上做一次修正。

RLS 的核心思想是让新数据对估计结果的影响按指数衰减。引入遗忘因子 λ,过去的数据会越来越“不信任”,从而让算法能跟踪慢时变参数。递推公式如下:

K_k = P_{k-1}·φ_k / (λ + φ_k²·P_{k-1}) θ_k = θ_{k-1} + K_k·(y_k - φ_k·θ_{k-1}) P_k = (1/λ)·(P_{k-1} - K_k·φ_k·P_{k-1})

注意这里是标量回归,所以 K_k 和 P_k 都是标量,公式里不会出现矩阵转置,写代码非常省事。

3.2 遗忘因子和协方差初始化的工程选择

遗忘因子 λ 是最重要的超参数。λ=1 时所有历史数据权重相同,估计最平稳但跟踪慢;λ 越小,老数据遗忘得越快,跟踪时变参数的能力越强,但对测量噪声也越敏感。我的经验值:道路工况常选 0.98~0.995,如果需要快速响应,可以选 0.95,但一定要结合低通滤波使用。

P 的初始值表示对初始估计不确定度的大小。如果初始 θ(0) 猜得很不准,P(0) 要给大一点,比如 1000,让算法前几步有足够大的增益去校正;如果初始猜测已经比较准,P(0) 给 1 就够。P 过大会造成初期振荡,过小会造成收敛过慢。我一般先开环跑一段离线数据,用批量最小二乘算一个大致结果作为 θ(0),然后 P(0) 取 10~100,这样兼顾收敛速度和稳定性。

3.3 核心代码实现,十分钟能跑通

我用 Python 写了一个最小实现,单轴估计逻辑如下,关键就是那三个递推公式,注意每一步要按顺序更新。

import numpy as np class RLS: def __init__(self, theta0, P0, lam=0.98): self.theta = theta0 self.P = P0 self.lam = lam def update(self, phi, y): # 标量回归模型 y = phi * theta K = self.P * phi / (self.lam + self.P * phi * phi) error = y - phi * self.theta self.theta = self.theta + K * error self.P = (1.0 / self.lam) * (self.P - K * phi * self.P) return self.theta

如果要把前后轴一起估,就声明两个 RLS 实例,分别喂 α_f/y_f 和 α_r/y_r。仿真里一个控制周期一般是 10ms,一个周期内更新两次 RLS,计算量几乎可以忽略。

3.4 别忘了对输入输出做预处理

工程实现有个容易踩的坑:α 和 F_y 量级差距极大。侧偏角一般只有零点几到几度,约等于 0.005~0.05 rad,而侧向力动辄几千牛,如果直接拿原始数值算,回归方程的梯度会非常大,P 和 K 容易产生数值问题。标准做法是先做归一化或者至少统一单位。我的做法是 α 用 rad,F_y 用 N,这样 C 的数量级是 10⁴~10⁵,计算精度没问题,但 P 初始值要相应调整到 10⁴~10⁶ 量级,否则收敛非常慢。

另外,测量噪声在 y 端直接进入估计。仿真中可以给 F_y 加白噪声,观察估计曲线抖动;实车上一般先对 F_y 做一次带宽 20~30Hz 的低通滤波,再喂给 RLS,能显著改善稳态波动。

4. 仿真设计与结果分析,恒定转角变化速度下的具体表现

4.1 仿真场景和车辆参数设置

我做仿真时用了如下车辆参数,基本是一台典型中级轿车的量级:

参数符号数值
整车质量m1500 kg
横摆转动惯量Iz2500 kg·m²
质心到前轴距离l_f1.2 m
质心到后轴距离l_r1.4 m
前轮等效侧偏刚度(真实值)C_f80000 N/rad
后轮等效侧偏刚度(真实值)C_r90000 N/rad
纵向车速Vx22.2 m/s(80 km/h)
采样周期Ts0.01 s

仿真开始前,我把 RLS 的初始估计故意设偏,C_f(0)=50000,C_r(0)=120000,P(0)=10⁸,λ=0.99。这样做的目的很明确:验证算法能不能从明显错误的初值快速收敛到真实值附近。

4.2 转角输入设计:为什么用恒定变化速度

转角输入采用斜坡信号,从 0 开始,以 0.4°/s 的速率匀速增大到 6°(大约 15 秒),之后保持不变。这个“恒定转角变化速度”的工况有三个好处:

第一,转角线性增长让车辆经历从低侧向加速度到中侧向加速度的连续工况,前后轮侧偏角都持续变化,满足持续激励条件,RLS 不会因为回归数据退化而发散。

第二,转角变化速度不高,车辆基本处于准稳态,二自由度模型的使用前提成立,估计结果能真实反映轮胎特性,不会因为瞬态效应引入太多模型误差。

第三,斜坡输入比起随机激励更容易复现和分析,别人拿到这个工况设置也能直接对比结果。

4.3 关键仿真结果解读

图1是前轮转角输入随时间的变化曲线,可以看到从 0s 到 15s 是一条笔直的斜线,这就是“恒定转角变化速度”的直接体现。

图2是前后轮侧偏角的变化曲线。由于车辆处于不足转向特性,前轮侧偏角增长比后轮快,后轮侧偏角略小但也在持续增长。两条曲线都没有出现突变,说明车辆始终处于线性区。

图3是 RLS 对前轮侧偏刚度 C_f 的估计曲线。从初值 50000 出发,大约 3s 后第一次冲到 78000 左右,随后小幅回落,到 8s 左右稳定在 79800~80200 区间,稳态误差约 0.5%。后轮的估计曲线类似,从 120000 下降到 90500 附近,稳态误差约 0.6%。整个过程中没有出现振荡发散,说明 λ=0.99 在激励充分的斜坡工况下表现稳健。

我还跑了一组对比实验,把 λ 改成 0.95,发现收敛速度明显变快,1.5s 就能接近真实值,但稳态曲线有周期性抖动,幅度大概是 ±1500 N/rad。把 λ 改成 0.999,曲线非常平滑,但到 12s 才勉强收敛。这个结果很直观:λ 就是“追踪速度”和“平稳度”之间的旋钮,没有绝对最优,只能按控制需求折中。

4.4 估计误差分析和灵敏度验证

我统计了 8s 到 20s 的估计误差,C_f 相对误差均值 0.32%,标准差 0.15%;C_r 相对误差均值 0.41%,标准差 0.19%。把测量噪声加大到原来的 5 倍后,估计均值几乎不变,但标准差变成 0.9%左右,说明 RLS 对噪声有不小的容忍度,前提是输入激励足够强。

此外我还做了载荷变化场景:仿真到 10s 时,突然把整车质量从 1500kg 增加到 1600kg,相当于后排坐了人。这种情况下真实的等效侧偏刚度其实会发生变化,RLS 的估计曲线也随之缓慢迁移,λ=0.99 时大概需要 4s 左右适应到新的平衡点。这说明在慢时变工况下,带遗忘因子的 RLS 具备基本的跟踪能力。

5. 实车应用时的常见问题与排查技巧

5.1 持续激励不足,估计值漂移

这是最常见的问题,尤其在城市低速蠕行时,方向盘长时间不动,侧偏角基本为常数,RLS 的回归信息退化成单点,估计值就会漂移。解决办法有几个:一是给 RLS 设置“激励检测”,只有当侧偏角的变化量超过阈值时才更新;二是降低遗忘因子让估计更保守;三是在控制器里把侧偏刚度估计值做上限下限约束,防止漂移到非物理区间。

我在仿真里试过,如果不做任何保护,恒定转角工况下 C_f 估计到 20s 后会缓慢漂到 100000 以上,完全没有意义。实车一定要加使能逻辑,别让估计器在无激励时瞎跑。

5.2 质心侧偏角 β 不可测的问题

实车上 β 不是一个直接可测的信号,一般用 GPS/INS 组合导航或状态观测器估计。在前面的回归模型里,α_f 和 α_r 都依赖 β,如果 β 估计不准,侧偏角就不是真实值,估计出的 C 也会偏差。我的处理方式是:先用一个简单的 Luenberger 观测器或扩展卡尔曼滤波把 β 估出来,再送给 RLS。条件允许时,用方向盘转角传感器和横摆角速度传感器的测量值对 β 估计做反馈校正,整体精度会好很多。

5.3 协方差矩阵骤增或骤降

RLS 在长时间运行后,P 可能变得非常小,导致增益 K 几乎为零,算法“睡着”,新数据不再影响估计。反过来,遗忘因子太小和初值太大时,P 可能变得很大,估计曲线剧烈跳变。我的做法是对 P 设置上下限,比如 10² 到 10⁹,一旦超出就截断。另外,定期做一次 P 的“重置”:如果检测到估计值连续 30 个周期没有明显变化,就主动把 P 提升一个量级,让算法恢复活性。

5.4 轮胎非线性区数据污染

线性模型只在侧偏角不超过约 5° 时成立。如果车辆进入紧急避障、大侧向加速度工况,侧偏角可能到 8° 甚至 12°,此时 F_y-α 关系明显弯曲,再用直线模型去拟合,估计出的 C 会偏小。我做的保护是把 |α| 超过阈值的数据直接丢弃,或者给样本加一个权值,让非线性数据对估计的影响大幅降低。如果你需要全工况估计,那就得换魔术公式或 Fiala 模型,RLS 也可以扩展成非线性回归,但工程复杂度上一个台阶。

6. 一些实操体会

有几件事我是在反复仿真和实车数据回放后才真正理解的。第一,RLS 本身并不复杂,复杂的是给 RLS 喂什么数据。输入激励设计、归一化、滤波、使能逻辑,这些前期工作做好了,估计精度自然就上来了。第二,仿真里模型和辨识模型用同一个二自由度模型时,结果会“好得不真实”,因为完全没考虑模型失配。建议仿真中至少把“真实车辆”换成更高阶模型,比如 CarSim 或 TruckSim,再或者给轮胎特性加一个小偏移,才能真正考验 RLS 的抗差能力。第三,遗忘因子别脑子一热设太小,我从 λ=0.95 开始调,估计是快,但后期曲线抖得没法看,最后老老实实回到 0.98~0.99 区间。

如果你手头正好也要做侧偏刚度估计,我建议按这样的顺序走:先离线批量最小二乘算一个基准值,把数据质量搞清楚;再上 RLS,用恒定转角变化速度的斜坡工况验证收敛性;最后再逐步加入噪声、载荷变化、非连续激励等实际因素。这个链路能帮你少走很多弯路,希望这篇拆解对你有用。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询