二、运动学与动力学约束:车辆运动学模型(自行车模型)、动力学约束(加速度、加加速度)、轮胎摩擦圆与附着极限
好,咱们接着聊。上一章我们把速度规划的“骨架”——场景与目标——搭起来了。这一章,咱们得往骨架上添“肌肉”和“韧带”了。说白了,就是搞清楚车到底能怎么动、不能怎么动。
你想想看,规划出一条漂亮的S形曲线,结果车一拐弯就侧滑出去了,那这规划就是废纸一张。所以,运动学和动力学约束,就是给速度规划套上的“紧箍咒”。
2.1 车辆运动学模型:为什么是“自行车”?
先聊运动学。运动学只关心几何关系,不关心力。我们最常用的就是自行车模型。为什么叫自行车?因为把四轮车的两个前轮、两个后轮,分别合并成一个虚拟的轮子。嗯,就像你骑的自行车那样。
我个人习惯,在做路径跟踪和速度规划的前期阶段,几乎只用这个模型。它简单,够用。你想想,在高速公路上,车不会像玩漂移那样大角度横摆,自行车模型的精度完全够了。
核心公式其实就三个,我写给你看:
// 自行车模型状态方程 (简化版)
// 状态量: [x, y, yaw, v]
// 控制量: [a, delta] (加速度, 前轮转角)
x_dot = v * cos(yaw)
y_dot = v * sin(yaw)
yaw_dot = v * tan(delta) / L // L 是轴距
v_dot = a
这里有个关键点:yaw_dot 也就是横摆角速度,它跟车速 v 和前轮转角 delta 直接相关。车速越快,同样的转角,车转得就越快。这符合直觉吧?
所以,运动学约束说白了就是:你的规划轨迹,必须满足这个几何关系。你不能规划出一个让前轮转角超过物理极限(比如 ±35度)的路径,也不能规划出横摆角速度过大的轨迹——那会让乘客晕车。
2.2 动力学约束:加速度与加加速度
运动学管的是“能不能走到”,动力学管的是“能不能受得了”。
这里有两个核心约束:加速度 (Acceleration) 和 加加速度 (Jerk)。
- 加速度 (a):说白了就是推背感。纵向加速度决定了你起步多快、刹车多猛。横向加速度决定了过弯时人被甩向一侧的力度。
- 加加速度 (Jerk):加速度的变化率。这个很多人会忽略,但它恰恰是舒适性的关键。
为什么会这样?你想想,如果加速度从 0 瞬间跳到 3 m/s²,那感觉就像被人猛踹了一脚。但如果用 0.5 秒慢慢加上去,就很平顺。Jerk 就是描述这个“变化快慢”的。
我一般这样设置约束:
| 约束类型 | 舒适范围 | 极限范围 | 说明 |
|---|---|---|---|
| 纵向加速度 | ±2.0 m/s² | ±4.0 m/s² | 超过 2.5 乘客就开始不舒服了 |
| 横向加速度 | ±1.5 m/s² | ±3.0 m/s² | 过弯时尤其要注意 |
| 纵向加加速度 | ±1.0 m/s³ | ±2.0 m/s³ | 这是“不晕车”的关键 |
| 横向加加速度 | ±0.8 m/s³ | ±1.5 m/s³ | 方向盘的“柔顺度” |
2.3 轮胎摩擦圆与附着极限
这是最硬核的部分。前面说的加速度、加加速度,最终都要落到轮胎上。轮胎能提供的力,是有上限的。这个上限,就是 附着极限。
摩擦圆的概念很简单:轮胎能提供的总抓地力,是一个圆。这个圆的大小,由路面附着系数 μ 和轮胎垂直载荷 Fz 决定。
// 摩擦圆约束
// Fx: 纵向力 (加速/制动)
// Fy: 横向力 (转向)
// μ: 路面附着系数 (干沥青约 0.8-0.9, 湿路面约 0.4-0.6)
// Fz: 垂直载荷
sqrt(Fx² + Fy²) ≤ μ * Fz
这个公式什么意思?说白了就是:你不能既要猛加速,又要猛打方向。如果你把抓地力全用在加速上了,那转向力就不够了,车就会推头(转向不足)。反过来,如果你全力转向,再踩油门,车就可能甩尾。
我举个例子。你在高速上行驶,突然前方有障碍物。你本能地会同时刹车和打方向。但摩擦圆告诉你:不行!如果你把刹车踩死(Fx 很大),那留给转向的 Fy 就很少了,车根本转不过去。正确的做法是:先重刹减速,然后松开刹车再转向。这就是“先刹后转”的物理原理。
那么,怎么把这个约束用到规划里呢?我一般这样做:
- 查表法:根据当前车速和路面条件,查表得到最大横向加速度。比如,干路面、车速 80 km/h,最大横向加速度约 0.7g。
- 动态计算:在规划每个时间步时,根据当前规划的横向加速度,反推允许的最大纵向加速度。公式就是上面那个摩擦圆。
- 安全余量:我习惯留 10%-20% 的余量。比如摩擦圆半径是 0.8g,我实际只用 0.65g。为什么?因为路面条件会变,轮胎磨损也会影响抓地力。
嗯,这里还要提一句 附着极限。不同路面的 μ 值差异巨大。干沥青 0.9,湿沥青 0.6,积雪 0.2,结冰 0.1。你想想,在冰面上,摩擦圆缩到只有原来的九分之一!所以,速度规划必须能感知路面条件,动态调整约束。
我记得有一次在测试场,我们故意把车开到洒了水的瓷砖路面上。按照干路面的参数规划,车一进去就触发 ESP,根本跑不了。后来我们加了一个路面附着系数估计模块,才搞定这个问题。
好了,总结一下这一章:
- 运动学约束:自行车模型,保证轨迹几何可行。
- 动力学约束:加速度和加加速度,保证舒适性和执行器能力。
- 摩擦圆约束:轮胎抓地力极限,保证车辆不失控。
下一章,我们会把这些约束,跟具体的跟车策略结合起来。到时候你会发现,这些约束就像“交通规则”,你的速度规划算法,必须在这个规则内“开车”。