第二节:车辆运动学模型——自行车模型、阿克曼转向几何、运动学约束方程

各位同学,今天我们来聊聊车辆运动学模型。

说实话,这是轨迹优化的地基。地基没打好,后面什么平滑过弯、避障规划都是空中楼阁。我个人习惯,每次接手一个新项目,第一件事就是把运动学模型理清楚——哪怕只是做最简单的泊车辅助,也得知道车屁股往哪边甩。

2.1 自行车模型:把四轮简化成两轮

为什么叫自行车模型?你想想看,一辆四轮车,转向时四个轮子的角度都不一样,分析起来太复杂了。我们做工程的人,第一反应就是——简化。

自行车模型的核心思想:把左右前轮合并成一个虚拟前轮,左右后轮合并成一个虚拟后轮。这样一来,四轮车就变成了一个两轮车。嗯,就像你骑的自行车那样。

适用条件:

  • 低速行驶(通常 < 5 m/s)
  • 忽略轮胎侧偏特性
  • 车辆结构对称

我在项目中遇到过一个问题:用自行车模型做高速变道规划,结果实车测试时车辆直接甩出去了。后来才发现,高速时轮胎侧偏不可忽略,自行车模型已经失效了。所以大家记住,自行车模型只适用于低速场景。

自行车模型的三个关键状态量:

  • (x, y):后轴中心位置
  • θ:航向角(车头朝向)
  • δ:前轮转角
  • v:后轴中心速度

2.2 阿克曼转向几何:让四个轮子各司其职

你可能会问:为什么自行车模型里只有一个前轮转角?真实车辆不是有左右两个前轮吗?

这就引出了阿克曼转向几何。说白了,阿克曼几何就是为了解决一个问题:转弯时内外侧车轮的转角不一样。

想象一下,车辆右转时:

  • 内侧(右前轮)转角更大
  • 外侧(左前轮)转角更小
  • 所有车轮的延长线交于同一点——瞬时转向中心

这个交点,就是车辆绕行的圆心。我记得有一次调试自动泊车,车辆总是压马路牙子,查了半天发现是阿克曼几何参数标定错了,内外轮转角差了2度。就这2度,车屁股直接蹭上去了。

避坑指南:我曾经在实车标定时发现,阿克曼几何的误差主要来自转向拉杆的间隙。建议每半年重新标定一次,尤其是频繁做急转弯的测试车。

阿克曼几何的数学表达:

δ_inner = arctan( L / (R - d/2) )
δ_outer = arctan( L / (R + d/2) )

其中:

  • L:轴距
  • d:轮距(左右轮中心距)
  • R:转弯半径

自行车模型里用的那个 δ,其实是内外轮转角的平均值:

δ ≈ (δ_inner + δ_outer) / 2

2.3 运动学约束方程:车不是想怎么走就怎么走

车辆运动学约束,说白了就是车不能横着走。你想想看,正常行驶的车,后轮方向始终和车身方向一致,不能侧滑。这就是非完整约束。

自行车模型的运动学方程:

dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L

这三个方程,我建议你背下来。它们描述了:

  • 位置变化率 = 速度 × 航向角余弦/正弦
  • 航向角变化率 = 速度 × 前轮转角正切 / 轴距

嗯,这里要注意:dθ/dt 其实就是横摆角速度。当 δ 很小时,tan(δ) ≈ δ,方程可以线性化。我在做MPC控制器时,经常用这个线性化版本,计算效率高很多。

警告:线性化只在 δ < 10° 时有效。大转角场景(如掉头、泊车)必须用非线性模型,否则规划出来的轨迹根本不可行。

还有一个容易被忽略的约束——曲率约束:

κ = tan(δ) / L

曲率 κ 直接决定了车辆的最小转弯半径。比如轴距2.8m的车,最大转角30°,那么最小转弯半径就是:

R_min = L / tan(δ_max) = 2.8 / tan(30°) ≈ 4.85 m

这个值,就是你做轨迹规划时的硬约束。路径曲率不能超过 1/R_min,否则车辆跟不上去。

2.4 知识体系总览

下面这张图,是我自己总结的运动学模型知识结构。每次带新人,我都先让他们看这张图:

车辆运动学模型知识体系 自行车模型 阿克曼转向几何 运动学约束方程 关键假设 • 低速行驶(<5m/s) • 忽略轮胎侧偏 • 四轮→两轮简化 • 状态量:x,y,θ,δ,v 核心原理 • 内外轮转角不同 • 所有轮交于转向中心 • δ_inner > δ_outer • 自行车模型取平均值 核心方程 • dx/dt = v·cos(θ) • dy/dt = v·sin(θ) • dθ/dt = v·tan(δ)/L • 曲率 κ = tan(δ)/L 应用场景:轨迹规划、MPC控制、泊车辅助、路径跟踪 硬约束条件 • 曲率约束:κ ≤ 1/R_min • 非完整约束:不能侧滑 • 转角约束:|δ| ≤ δ_max • 线性化条件:δ < 10°

2.5 实践中的注意事项

最后,分享几个我踩过的坑:

  1. 模型选型要匹配场景:低速泊车用自行车模型就够了,高速变道必须用动力学模型。
  2. 阿克曼几何标定不能省:我曾经偷懒用默认参数,结果车辆在环形路上一直偏右,查了两天才发现是阿克曼参数没校准。
  3. 曲率约束要留余量:理论计算的最小转弯半径是4.85m,实际规划时建议留10%余量,按5.3m算。为什么?因为轮胎磨损、路面摩擦系数都会影响实际转向能力。
  4. 离散化要注意步长:运动学方程是连续的,但控制器是离散的。步长太大,轨迹会失真;步长太小,计算量爆炸。我一般取0.1s作为折中。

个人习惯:每次写完运动学模型代码,我都会用仿真跑一遍圆形轨迹。如果车辆能完美走圆,说明模型没问题。如果轨迹发散,八成是方程写错了。

好了,运动学模型就讲到这里。记住一句话:模型是简化的,但约束是真实的。做轨迹优化,先搞清楚你的车能怎么走,再谈怎么走得漂亮。

可可精品资料库