3. 车辆动力学模型:轮胎侧偏特性、侧偏刚度、二自由度动力学模型、状态空间方程

各位同学,欢迎来到横向控制的核心基础课。

说实话,搞自动驾驶这几年,我见过太多人一上来就调PID、搞MPC,结果车在路上画龙。为什么?说白了,就是没吃透车辆动力学模型。你连车怎么转向、轮胎怎么抓地都没搞明白,控制策略就是空中楼阁。

今天这一章,咱们就把地基打牢。我会从轮胎的脾气讲起,一步步推导出那个经典的二自由度模型,最后给你一个可以直接用的状态空间方程。

3.1 轮胎侧偏特性:轮胎的“脾气”

先问一个问题:你转动方向盘,车为什么能转弯?

很多人会回答:因为前轮偏转了。没错,但更深层的原因是——轮胎产生了侧向力。

轮胎不是刚性的。它是有弹性的橡胶。当车轮有一个侧偏角(车轮实际运动方向和车轮指向方向之间的夹角)时,轮胎接地面会发生变形,从而产生一个垂直于车轮平面的力,这就是侧偏力。

核心概念:侧偏角 α 是轮胎指向与速度方向的夹角。侧偏力 Fy 是轮胎抵抗侧滑的力。

我在项目里遇到过一件事:有一次标定车辆,发现高速变道时车辆响应特别迟钝。查了半天,发现是轮胎气压不对,导致侧偏特性变了。你看,轮胎的脾气直接影响控制效果。

轮胎侧偏特性有几个关键点:

  • 线性区:侧偏角小的时候(通常小于5度),侧偏力和侧偏角近似成正比。这就是我们常说的“线性轮胎模型”。
  • 饱和区:侧偏角大了,轮胎力不再线性增加,而是趋于饱和。这时候车就开始推头或甩尾了。
  • 影响因素:垂直载荷、路面附着系数、轮胎气压、速度等都会影响侧偏特性。

3.2 侧偏刚度:轮胎的“硬气”

刚才说了线性区,那这个比例系数是多少?

就是侧偏刚度 C。定义很简单:

C = - ∂Fy / ∂α

注意前面有个负号。因为侧偏角为正时,侧偏力为负(坐标系定义不同,但习惯上这么写)。侧偏刚度越大,说明轮胎越“硬”,产生同样侧偏力需要的侧偏角越小。

我的经验:侧偏刚度不是常数。它随垂直载荷增加而增加,但到一定程度后会饱和。我建议你在做控制时,至少考虑载荷转移的影响,否则高速过弯时控制精度会打折扣。

一般乘用车的侧偏刚度在 50000-100000 N/rad 之间。前轮和后轮的侧偏刚度通常不一样,这会影响车辆的转向特性(不足转向、中性转向、过度转向)。

3.3 二自由度动力学模型:最简单的“车”

好了,有了轮胎模型,我们怎么描述整车的运动?

二自由度模型,说白了就是把车简化成两个自由度:

  • 横向运动 y:车沿着y轴方向的移动
  • 横摆运动 ψ:车绕z轴的转动

为什么叫二自由度?因为忽略了纵向运动(速度恒定)、垂向运动、侧倾运动等。你想想看,对于横向控制来说,我们最关心的是车能不能沿着目标路径走,所以这两个自由度足够了。

模型的假设条件:

  1. 车辆纵向速度恒定
  2. 前轮转角 δ 较小(小角度假设)
  3. 轮胎工作在线性区
  4. 忽略空气动力学、悬架等影响

注意:这个模型在低速大转角或极限工况下会失效。我曾经在冰雪路面上吃过亏,线性模型完全不准。所以一定要清楚模型的适用范围。

二自由度模型的运动方程长这样:

m * (v_dot + u * r) = Fyf + Fyr
Iz * r_dot = a * Fyf - b * Fyr

其中:

  • m:整车质量
  • Iz:横摆转动惯量
  • u:纵向速度
  • v:横向速度
  • r:横摆角速度
  • a, b:质心到前/后轴距离
  • Fyf, Fyr:前/后轮侧偏力

把轮胎线性模型 Fyf = -Cf * αf, Fyr = -Cr * αr 代入,再考虑前后轮侧偏角的几何关系,就能得到完整的微分方程。

3.4 状态空间方程:控制器的“食材”

有了微分方程,我们得把它变成状态空间形式,才能用现代控制理论去设计控制器。

状态变量我一般选这三个:

  • 横向速度 v
  • 横摆角速度 r
  • 横向位置偏差 e1
  • 航向角偏差 e2

嗯,这里要注意,e1 和 e2 是相对于参考路径的偏差。最终的状态空间方程是:

d/dt [e1; e2_dot; e2; e2_dot] = A * [e1; e2_dot; e2; e2_dot] + B * δ

矩阵 A 和 B 的具体形式我就不手写了,直接给代码:

# 二自由度模型状态空间矩阵
def vehicle_model(vx, Cf, Cr, m, Iz, a, b):
    # vx: 纵向速度
    # Cf, Cr: 前后轮侧偏刚度
    # m: 质量, Iz: 转动惯量
    # a, b: 质心到前后轴距离
    
    A = np.array([
        [0, 1, 0, 0],
        [0, -(Cf+Cr)/(m*vx), (Cf+Cr)/m, (a*Cf-b*Cr)/(m*vx)],
        [0, 0, 0, 1],
        [0, (a*Cf-b*Cr)/(Iz*vx), (a*Cf-b*Cr)/Iz, -(a**2*Cf+b**2*Cr)/(Iz*vx)]
    ])
    
    B = np.array([
        [0],
        [Cf/m],
        [0],
        [a*Cf/Iz]
    ])
    
    return A, B

避坑指南:我曾经在实车测试时发现,状态空间模型在低速时(比如5km/h以下)数值会变得很不稳定。因为分母上有 vx,速度趋近于0时矩阵会奇异。我的建议是:低速时用运动学模型,高速时再用动力学模型。

3.5 知识体系总览

为了让你更直观地理解这一章的知识结构,我画了一张图:

车辆动力学模型知识体系 轮胎侧偏特性 侧偏刚度 C = -∂Fy/∂α 二自由度动力学模型(横向+横摆) 状态空间方程 ė = A·e + B·δ 物理特性 参数化 简化建模 控制表达 关键参数 • 侧偏角 α • 侧偏力 Fy • 侧偏刚度 C • 质心位置 a,b • 横摆惯量 Iz • 纵向速度 vx • 前轮转角 δ • 横向偏差 e1 • 航向偏差 e2

这张图把整个逻辑串起来了:从轮胎的物理特性出发,提取出侧偏刚度这个关键参数,然后建立二自由度简化模型,最后转化成控制器可以直接用的状态空间方程。每一步都有它的物理意义和工程价值。

好了,这一章的内容就到这里。记住,模型是控制的基础。你花时间把模型搞透了,后面设计控制器就是水到渠成的事。


专注资料整理