车辆运动学模型详解:从自行车模型到工程实践

各位同学,今天我们来聊聊车辆运动学模型。说实话,这是整个路径跟踪算法的基础。我刚开始做自动驾驶时,总觉得运动学模型太简单,不就是个几何关系吗?直到第一次实车测试,车辆在弯道里跑偏,我才意识到——模型选不对,后面全是坑。

这一章,我们重点讲自行车模型(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. 知识体系总览

下面这张图,是我自己整理的自行车模型知识体系。你可以看到,从基础假设到数学推导,再到工程实现,每一步都有坑。

自行车模型知识体系 基础假设 平面·无侧滑·刚性·低速 自行车模型 前轮转向·后轮驱动 阿克曼几何 内外轮转角关系 数学推导 dx/dt = v·cos(θ) | dy/dt = v·sin(θ) | dθ/dt = v·tan(δ)/L 离散化:欧拉法 / 龙格-库塔法 工程实现 纯追踪算法 · 前馈控制 · 状态估计 实车标定 · 参数调优 · 异常处理 局限性:高速失效 · 侧滑 · 坡度影响

这张图把整个知识体系串起来了。从基础假设出发,经过数学推导,再到工程实现,最后回到局限性。你学习的时候,可以按这个脉络来。

7. 写在最后

自行车模型虽然简单,但它是路径跟踪算法的基石。我建议你先把这部分吃透,再去学更复杂的模型。记住:简单的模型,往往最可靠

下一章,我们会讲纯追踪算法的原理和实现。到时候你会发现,自行车模型就是纯追踪算法的"心脏"。


专注资料整理