2. 车辆运动学模型:自行车模型推导、阿克曼转向几何、运动学微分方程
各位同学好,我是你们的老朋友。今天我们来聊聊规划控制里最基础、也最绕不开的一个话题——车辆运动学模型。
说实话,我刚开始做自动驾驶那会儿,觉得运动学模型太简单了,不就是个几何关系嘛。直到有一次在实车测试中,因为模型精度不够,车辆在低速泊车时直接蹭上了路沿...嗯,从那以后我再也不敢小看这个“简单”的模型了。
今天我们就把它彻底吃透。说白了,运动学模型就是描述车辆怎么动的数学工具。它不考虑力、不考虑质量,只考虑几何约束和速度关系。你想想看,这其实特别适合低速场景——比如泊车、园区接驳。
2.1 自行车模型:为什么叫“自行车”?
先问大家一个问题:一辆四轮汽车,你打算怎么描述它的运动?四个轮子各自有转角、有速度,太复杂了对吧?
所以工程师们想了个聪明的办法——把四轮车简化成两轮车。这就是自行车模型(Bicycle Model)的由来。
具体怎么简化?
- 前轮:左右前轮合并成一个虚拟的转向轮,位于车辆中轴线上
- 后轮:左右后轮合并成一个驱动轮,同样在中轴线上
- 车身:简化为一根刚性连杆,连接前后轮
我个人习惯把这个模型叫做“独轮车+转向轮”的组合。你看,前轮负责转向,后轮负责驱动,车身就是个棍子。是不是一下子就清晰了?
核心假设:自行车模型成立的前提是——车辆在低速(通常 < 5 m/s)且无侧滑的情况下。高速时轮胎会打滑,那就得用动力学模型了。
2.2 阿克曼转向几何:转弯时轮子该转多少?
好,现在我们把车简化成自行车了。但有个问题——真实车辆转弯时,左右前轮的转角是不一样的。你想想看,内侧轮子走的圆弧半径小,外侧轮子走的圆弧半径大。如果它们转同样的角度,轮胎就会“打架”。
这就是阿克曼转向几何要解决的问题。
我记得第一次在实车上验证阿克曼原理时,发现左右轮转角差居然有3-5度。当时我就想,如果直接用自行车模型去控制真实车辆,那转向误差得有多大啊!
阿克曼转向的核心公式很简单:
cot(δ_left) - cot(δ_right) = L / W
其中:
- δ_left、δ_right:左右前轮转角
- L:轴距(前后轮中心距离)
- W:轮距(左右轮中心距离)
但在自行车模型里,我们用一个等效前轮转角 δ 来代替左右轮。这个 δ 其实就是左右轮转角的平均值:
δ ≈ (δ_left + δ_right) / 2
实战技巧:我在项目中通常用自行车模型做路径规划,但在底层控制时,会把 δ 拆解成左右轮的实际转角,再发给转向执行器。这样既保证了规划效率,又保证了控制精度。
2.3 运动学微分方程:车辆到底怎么走?
有了自行车模型,有了阿克曼几何,接下来就是最核心的部分——运动学微分方程。它描述了车辆状态随时间的变化规律。
车辆的状态通常用三个量表示:
- x:车辆后轴中心在全局坐标系中的 x 坐标
- y:车辆后轴中心在全局坐标系中的 y 坐标
- θ:车辆的航向角(车头朝向与 x 轴正方向的夹角)
控制输入有两个:
- v:后轮速度(纵向速度)
- δ:前轮转角
那么,运动学微分方程长什么样?
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
其中 L 是轴距。
你仔细看第三个方程——dθ/dt = v * tan(δ) / L。这个公式特别有意思。它告诉我们:
- 转角 δ 越大,转向越快
- 速度 v 越大,转向也越快(但实际中高速时不能大转角,否则会侧翻)
- 轴距 L 越长,转向越慢(大车转弯半径大,就是这个道理)
我曾经在做一个园区物流项目时,发现车辆在低速下转弯总是“过冲”。排查了半天,原来是运动学模型里忽略了后轮侧偏。虽然低速下侧偏很小,但累积误差就是导致控制不稳。后来我在模型里加了个侧偏角补偿,问题就解决了。
注意:运动学模型只适用于 v → 0 的极限情况。当速度超过 5 m/s 时,轮胎侧偏角会显著增大,必须使用动力学模型。我在高速场景下吃过这个亏,大家引以为戒。
2.4 知识体系总览
为了让大家更直观地理解本章的知识结构,我画了一张图:
2.5 实战中的坑与技巧
最后,我把自己这些年踩过的坑总结一下,希望能帮大家少走弯路:
| 常见问题 | 原因分析 | 解决方案 |
|---|---|---|
| 低速转弯过冲 | 运动学模型忽略后轮侧偏 | 加入侧偏角补偿项 |
| 高速时模型失效 | 轮胎侧滑不可忽略 | 切换到动力学模型 |
| 阿克曼转角计算误差 | 左右轮转角差未补偿 | 使用实际转角反馈校正 |
| 离散化后精度下降 | 时间步长过大 | 使用 RK4 或更小步长 |
好了,关于车辆运动学模型,我们就聊到这里。记住一句话:模型是简化的,但简化要有度。太简单了不准确,太复杂了算不动。找到那个平衡点,就是工程师的功力所在。
可可精品资料库