车辆运动学模型详解:从自行车模型到工程实践
各位同学,今天我们来聊聊车辆运动学模型。说实话,这是整个路径跟踪算法的基础。我刚开始做自动驾驶时,总觉得运动学模型太简单,不就是个几何关系吗?直到第一次实车测试,车辆在弯道里跑偏,我才意识到——模型选不对,后面全是坑。
这一章,我们重点讲自行车模型(Bicycle Model)。为什么叫自行车?因为把四轮车简化成两轮,就像自行车一样。你想想看,这样处理起来多方便。
1. 为什么需要自行车模型?
真实车辆有四个轮子,每个轮子都有独立的转向、速度、侧偏角。如果全部建模,状态变量会爆炸。我在项目中见过有人用全动力学模型,结果卡尔曼滤波都跑不动。
自行车模型的核心思想:把左右轮合并成一个虚拟轮。前轮负责转向,后轮负责驱动。这样,车辆的运动就简化为一个刚体在平面上的运动。
关键假设:
- 车辆在平坦路面上行驶(忽略垂向运动)
- 轮胎无侧滑(纯滚动接触)
- 车辆结构为刚性(无悬架变形)
- 低速行驶(通常 < 5 m/s)
嗯,这里要注意:低速假设很关键。我做过一个项目,在高速公路上用自行车模型做纯追踪,结果车辆在弯道里直接冲出车道。后来才发现,高速时轮胎侧偏角不能忽略,必须用动力学模型。
2. 自行车模型推导
我们来看推导过程。先定义几个关键变量:
| 符号 | 含义 | 单位 |
|---|---|---|
| (x, y) | 后轴中心位置 | m |
| θ | 航向角(车辆朝向) | rad |
| δ | 前轮转向角 | rad |
| v | 后轴中心速度 | m/s |
| L | 轴距(前后轮距离) | m |
现在,我们考虑车辆在极短时间 dt 内的运动。后轴中心的速度方向,就是车辆的朝向。前轮的速度方向,是朝向加上转向角。
根据几何关系,后轴中心的运动方程为:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
这就是自行车模型的核心公式。你看,三个方程,简洁明了。第一个方程控制 x 方向位移,第二个控制 y 方向,第三个控制航向角变化。
个人经验:我在实际代码中,通常用离散化形式。比如用欧拉法:
x_new = x + v * cos(θ) * dt
y_new = y + v * sin(θ) * dt
θ_new = θ + v * tan(δ) / L * dt
dt 一般取 0.01~0.05 秒,太大会导致数值发散。
3. 前轮转向与后轮驱动模型
自行车模型有两种常见变体:前轮转向和后轮驱动。我们刚才推导的是前轮转向模型。后轮驱动模型呢?其实只是把控制量从后轮速度换成前轮速度。
我个人习惯用前轮转向模型,因为大多数乘用车都是前轮转向。但如果你做的是叉车或某些特殊车辆,可能需要后轮转向模型。
这里有个坑:前轮转向模型在倒车时,稳定性会变差。我曾经在泊车场景中吃过亏,倒车入库时车辆来回摆动。后来改用后轮驱动模型,倒车就稳了。
4. 阿克曼转向几何
说到转向,就不得不提阿克曼几何。真实车辆转弯时,内外侧车轮的转向角是不同的。内侧轮转得更多,外侧轮转得更少。这样所有车轮才能绕同一个圆心转动。
自行车模型假设左右轮合并,所以转向角 δ 实际上是等效转向角。它和真实的内外侧车轮转角关系是:
δ_inner = arctan(L / (R - T/2))
δ_outer = arctan(L / (R + T/2))
δ = (δ_inner + δ_outer) / 2
其中 R 是转弯半径,T 是轮距。你看,自行车模型其实是对阿克曼几何的近似。
注意:如果车辆没有阿克曼几何(比如某些四轮独立转向的机器人),自行车模型就不适用。我遇到过用麦克纳姆轮的底盘,那玩意儿根本不能用自行车模型,得用全向运动学模型。
5. 模型假设与局限性
任何模型都有假设,自行车模型也不例外。我们来盘点一下:
- 平面运动假设:忽略坡度、颠簸。实际道路有起伏,模型会失效。
- 无侧滑假设:轮胎与地面纯滚动。高速过弯时,轮胎会侧滑。
- 刚性结构假设:忽略悬架变形。急刹车时车头下沉,模型不准。
- 低速假设:通常 < 5 m/s。超过这个速度,动力学效应显著。
说白了,自行车模型就是个低速、平坦路面、无侧滑的近似模型。它简单、计算快,适合做路径跟踪的底层控制。但如果你要做高速避障、漂移控制,那得用更复杂的动力学模型。
我记得有一次,在测试场做 60 km/h 的紧急变道,自行车模型完全失控。后来换成带轮胎侧偏角的动力学模型,才勉强通过测试。所以,选模型一定要看应用场景。
6. 知识体系总览
下面这张图,是我自己整理的自行车模型知识体系。你可以看到,从基础假设到数学推导,再到工程实现,每一步都有坑。
这张图把整个知识体系串起来了。从基础假设出发,经过数学推导,再到工程实现,最后回到局限性。你学习的时候,可以按这个脉络来。
7. 写在最后
自行车模型虽然简单,但它是路径跟踪算法的基石。我建议你先把这部分吃透,再去学更复杂的模型。记住:简单的模型,往往最可靠。
下一章,我们会讲纯追踪算法的原理和实现。到时候你会发现,自行车模型就是纯追踪算法的"心脏"。