3、车辆运动学基础:刚体运动、速度与加速度、曲率与转弯半径
各位同学,咱们今天聊聊车辆运动学。说实话,这是整个自动驾驶规划控制模块的「地基」。你想想看,如果连车怎么动、怎么转弯都搞不清楚,那后面的路径跟踪、轨迹规划根本无从谈起。我个人习惯把运动学看作是「几何层面的车辆行为描述」——我们不关心力、不关心轮胎摩擦,只关心位置、速度和姿态的变化。
3.1 刚体运动与车辆位姿
首先,我们把车辆看作一个刚体。什么叫刚体?说白了就是忽略形变,车身上任意两点之间的距离保持不变。这在低速场景下非常合理,比如泊车、园区低速巡航。
在二维平面中,车辆的位姿(Pose)由三个量唯一确定:
- x:车辆后轴中心(或质心)的横坐标
- y:纵坐标
- θ:航向角,即车辆纵轴与x轴正方向的夹角
所以,一个完整的位姿可以写成 [x, y, θ]ᵀ。我在项目中遇到过一个问题:有同事把前轴中心作为参考点,结果计算转弯半径时总是对不上。后来统一用后轴中心,一切就顺了。嗯,这里要注意,后轴中心是运动学建模的黄金参考点。
3.2 速度与加速度:不只是快慢
有了位姿,接下来就是速度。车辆的速度可以分解为:
- 纵向速度 v:沿车身纵轴方向的速度
- 横向速度:垂直于车身纵轴的速度(在运动学中通常假设为0,即无侧滑)
- 横摆角速度 ω:航向角的变化率,即
ω = dθ/dt
你可能会问:「为什么横向速度假设为0?」其实这就是运动学模型的核心假设——车辆在运动过程中,轮胎没有侧向滑动。说白了,就是车轮滚动的方向就是轮胎指向的方向。这个假设在低速(通常 < 5 m/s)下非常准确。
加速度呢?同样分为纵向加速度 a = dv/dt 和横摆角加速度 α = dω/dt。我记得有一次调试泊车轨迹,发现跟踪误差总是收敛不了。查了半天,原来是加速度限制设得太宽松,导致规划出的轨迹曲率变化太剧烈。后来我把横摆角加速度限制在 ±0.5 rad/s² 以内,问题就解决了。
3.3 曲率与转弯半径
接下来是重头戏——曲率。曲率 κ 描述了路径弯曲的程度,它的倒数就是转弯半径 R:
κ = 1 / R
对于车辆运动学,曲率与方向盘转角直接相关。以经典的自行车模型为例:
κ = tan(δ) / L
其中:
δ是前轮转角(方向盘转角经过转向机构传动比换算后得到)L是轴距
你想想看,如果轴距是 2.8 米,前轮转角是 10°(约 0.175 rad),那么曲率就是 tan(0.175) / 2.8 ≈ 0.063,对应的转弯半径约为 15.9 米。这个数值在实际泊车场景中很常见。
3.4 运动学微分方程
把上面这些整合起来,就得到了车辆运动学的微分方程:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
这个方程组就是大名鼎鼎的「自行车模型」。它虽然简单,但非常实用。我在做路径跟踪控制时,90% 的场景都用这个模型。只有遇到高速紧急避障时,才会切换到动力学模型。
这里有个小技巧:在实际代码中,我们通常用离散化的形式:
x(k+1) = x(k) + v * cos(θ) * dt
y(k+1) = y(k) + v * sin(θ) * dt
θ(k+1) = θ(k) + v * tan(δ) / L * dt
dt 是控制周期,通常取 0.01s 到 0.1s 之间。我个人习惯用 0.02s,也就是 50Hz 的控制频率,既保证了精度,又不会给计算带来太大负担。
3.5 曲率与路径跟踪的关系
最后,我想聊聊曲率在实际工程中的意义。在路径跟踪中,我们经常用「预瞄距离」的概念。说白了,就是看前方一段距离内的路径曲率,然后提前打方向盘。
我曾经做过一个对比实验:
| 控制策略 | 曲率利用方式 | 跟踪误差(cm) |
|---|---|---|
| 纯比例控制 | 仅用当前横向偏差 | ±15 |
| 前馈+反馈 | 利用前方曲率做前馈 | ±5 |
| MPC(模型预测控制) | 利用未来一段曲率序列 | ±2 |
结果很明显:曲率信息用得越充分,跟踪精度越高。所以,我建议你在做路径跟踪时,一定要把曲率这个「先验信息」用起来,别只盯着当前的偏差。
好了,这一章的内容就到这里。运动学虽然基础,但它是整个自动驾驶控制理论的起点。下一章我们会引入动力学,到时候你会看到,很多运动学中的假设会被放宽,模型也会变得更复杂。但别担心,有了今天的基础,后面会轻松很多。