车辆运动学模型详解:从自行车到四轮驱动
各位同学好,我是你们的老朋友。今天我们来聊聊无人车路径跟踪里最基础、也最绕不开的一块——车辆运动学模型。
说实话,我刚开始做无人驾驶那会儿,觉得运动学模型不就是个几何关系嘛,有啥好研究的?直到第一次实车测试,车子在低速转弯时直接偏离了预期轨迹,我才意识到——嗯,这里面的门道,比想象中深得多。
一、自行车模型:化繁为简的智慧
先问大家一个问题:一辆四轮汽车,在低速行驶时(比如泊车、校园接驳),它的运动本质是什么?
说白了,就是一个刚体在平面上的旋转+平移。四轮车的转向其实很复杂,但如果我们只关心车辆的整体运动趋势,完全可以把四个轮子「合并」成两个——这就是自行车模型的由来。
核心假设:
- 车辆低速行驶(通常 < 5 m/s),忽略轮胎侧偏
- 车辆结构为前轮转向、后轮驱动
- 左右轮转角相同(阿克曼几何的理想化)
我个人习惯把自行车模型看作「一个带方向的前轮 + 一个固定的后轮」。前轮负责转向,后轮负责提供驱动力。你看,是不是一下子就清晰了?
1.1 状态量与控制量
在自行车模型中,我们通常用三个量来描述车辆状态:
- x, y:后轴中心点的位置坐标
- θ:车辆的航向角(车头指向)
控制量有两个:
- v:后轮速度(纵向速度)
- δ:前轮转角
这里有个细节——为什么状态量选后轴中心,而不是质心? 我在项目中遇到过这个问题。后轴中心在低速时几乎不发生侧向滑动,用它作为参考点,模型更稳定。质心嘛,更适合高速动力学模型。
1.2 运动学方程推导
好,我们来推一下核心公式。别怕,其实就是初中几何。
想象一下:后轮沿着车身方向前进,前轮则偏了一个角度 δ。那么后轴中心的速度方向就是车身方向,而前轮的速度方向是偏转后的方向。
根据刚体运动学,后轴中心的速度可以分解为:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
航向角的变化率呢?这就要用到瞬时转向半径的概念了。前轮转角 δ 决定了车辆的转弯半径 R:
R = L / tan(δ)
其中 L 是轴距。角速度 ω = v / R,所以:
dθ/dt = v * tan(δ) / L
完整的状态方程就是:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
你看,就三个方程,简洁得让人舒服。我曾经用这个模型做自动泊车,效果出奇地好——当然,前提是速度够慢。
我的小技巧:在实际代码中,我习惯用离散化形式,比如欧拉法:
x_next = x + v * cos(θ) * dt
y_next = y + v * sin(θ) * dt
θ_next = θ + v * tan(δ) / L * dt
dt 一般取 0.01~0.05 秒,够用了。
二、阿克曼转向几何:让轮子各司其职
刚才的自行车模型假设左右前轮转角相同,但实际车辆不是这样的。你想想看,转弯时内侧轮和外侧轮走的圆弧半径不一样,如果转角相同,轮胎就会「打架」——产生滑移、磨损、甚至转向不足。
阿克曼转向几何就是来解决这个问题的。它的核心思想是:让所有车轮的转向中心交于一点。
具体来说,内轮转角 δ_i 和外轮转角 δ_o 满足:
cot(δ_o) - cot(δ_i) = B / L
其中 B 是轮距,L 是轴距。当 δ 较小时,可以近似为:
δ_i ≈ δ - B/(2L) * δ²
δ_o ≈ δ + B/(2L) * δ²
嗯,这里要注意:阿克曼几何只在低速时成立。高速时轮胎侧偏会改变转向中心,那就需要更复杂的模型了。
我曾经踩过的坑:有一次做路径跟踪仿真,用了自行车模型,但实车用的是阿克曼转向。结果在急转弯时,实际轨迹和仿真差了将近 30 厘米。后来我才发现——自行车模型忽略了内外轮转角差,而阿克曼几何在转弯半径小于 5 米时,这个差值非常明显。
建议:如果做低速精确控制(比如自动泊车),一定要用阿克曼几何修正。
三、前轮驱动 vs 四轮驱动:谁更香?
这个问题,我在项目里被问过无数次。直接说结论:
| 对比项 | 前轮驱动 (FWD) | 四轮驱动 (4WD/AWD) |
|---|---|---|
| 运动学模型 | 自行车模型即可 | 需要分配前后轮驱动力 |
| 转向特性 | 转向不足(推头) | 中性或转向过度 |
| 控制复杂度 | 低,2个控制量 | 高,4个轮速+转向 |
| 适用场景 | 城市低速、泊车 | 越野、高速、湿滑路面 |
| 能耗 | 低 | 高(约多10-15%) |
我个人习惯:做路径跟踪控制时,优先用前轮驱动模型。为什么?因为简单、稳定、够用。四轮驱动虽然抓地力强,但控制分配是个大麻烦——前后轮驱动力怎么分?左右轮要不要差速?搞不好反而让控制算法「想太多」。
当然,如果你做的是越野无人车或者高速竞速,四轮驱动是必须的。我记得有一次在砂石路上测试,前驱车稍微给大点油门就打滑,换成四驱后稳如老狗。但代价是——控制器的参数调了我整整两周。
四、三种模型对比总结
好了,我们来捋一捋这三种模型的核心区别:
- 自行车模型:最简单,适合低速、小转角场景。忽略轮距和内外轮差。
- 阿克曼几何:在自行车模型基础上,修正了内外轮转角。适合精确低速控制。
- 四轮驱动模型:最复杂,考虑四个轮子的独立驱动/制动。适合高速、低附着路面。
你可能会问:那我到底该用哪个?我的建议是——从简单开始,逐步加复杂度。先用自行车模型跑通仿真,如果精度不够,再加阿克曼修正。四轮驱动嘛,除非你明确需要,否则别轻易碰。
一句话总结:低速用自行车,精确用阿克曼,越野用四驱。别贪多,够用就行。
五、知识体系结构图
下面我用一张 SVG 图来展示本章的核心逻辑,方便你整体把握:
这张图把三种模型的关系和适用场景串起来了。你保存下来,以后选模型时拿出来看一眼,心里就有数了。
好了,这一章的内容就到这里。运动学模型是路径跟踪控制的「地基」,地基不牢,后面盖什么楼都晃。下一章我们会进入更刺激的部分——如何用这些模型设计控制器。到时候见!