第二节:车辆运动学模型——自行车模型、阿克曼转向几何、运动学约束方程
各位同学,今天我们来聊聊车辆运动学模型。
说实话,这是轨迹优化的地基。地基没打好,后面什么平滑过弯、避障规划都是空中楼阁。我个人习惯,每次接手一个新项目,第一件事就是把运动学模型理清楚——哪怕只是做最简单的泊车辅助,也得知道车屁股往哪边甩。
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 知识体系总览
下面这张图,是我自己总结的运动学模型知识结构。每次带新人,我都先让他们看这张图:
2.5 实践中的注意事项
最后,分享几个我踩过的坑:
- 模型选型要匹配场景:低速泊车用自行车模型就够了,高速变道必须用动力学模型。
- 阿克曼几何标定不能省:我曾经偷懒用默认参数,结果车辆在环形路上一直偏右,查了两天才发现是阿克曼参数没校准。
- 曲率约束要留余量:理论计算的最小转弯半径是4.85m,实际规划时建议留10%余量,按5.3m算。为什么?因为轮胎磨损、路面摩擦系数都会影响实际转向能力。
- 离散化要注意步长:运动学方程是连续的,但控制器是离散的。步长太大,轨迹会失真;步长太小,计算量爆炸。我一般取0.1s作为折中。
个人习惯:每次写完运动学模型代码,我都会用仿真跑一遍圆形轨迹。如果车辆能完美走圆,说明模型没问题。如果轨迹发散,八成是方程写错了。
好了,运动学模型就讲到这里。记住一句话:模型是简化的,但约束是真实的。做轨迹优化,先搞清楚你的车能怎么走,再谈怎么走得漂亮。