3. 车辆运动学模型:自行车模型、阿克曼转向几何、运动学微分方程推导
大家好,我是你们的老朋友。今天我们来聊聊车辆运动学模型。说实话,这是整个规划控制里最基础、也最容易被忽视的一块。很多新手一上来就怼动力学、怼MPC,结果发现连车怎么转弯都没搞明白。嗯,咱们今天就把这个地基打牢。
3.1 为什么需要运动学模型?
说白了,运动学模型就是描述车怎么动的数学关系。它不考虑力、不考虑质量,只关心位置、速度、朝向这些几何量。你想想看,规划层要生成一条轨迹,总得知道车能不能跟得上吧?运动学模型就是干这个的。
我个人习惯把运动学模型分成两类:一类是自行车模型,另一类是阿克曼模型。前者用于简化分析,后者更贴近真实车辆。咱们一个一个来。
核心观点:运动学模型是规划控制的“底层语言”。不懂它,后面的控制算法就是空中楼阁。
3.2 自行车模型(Bicycle Model)
自行车模型,名字听着挺简单。就是把四轮车想象成一辆自行车。前轮负责转向,后轮负责驱动。我在项目中遇到过很多次,用自行车模型做路径跟踪,效果出奇的好——前提是车速别太快。
它的假设是这样的:
- 车辆左右对称,合并为单轨
- 忽略轮胎侧偏,认为车轮纯滚动
- 车辆在平面内运动(不考虑俯仰、侧倾)
嗯,这里要注意:自行车模型在低速(< 5 m/s)时非常准。一旦上了高速,轮胎侧偏就不能忽略了,那时候得用动力学模型。
3.3 阿克曼转向几何(Ackermann Steering Geometry)
阿克曼转向,说白了就是解决一个问题:转弯时,内外侧车轮的转角不一样。你想想看,如果左右前轮转同样的角度,内侧轮会打滑,外侧轮会推头。阿克曼几何就是让内侧轮转得比外侧轮多一点。
它的核心公式是这样的:
cot(δ_o) - cot(δ_i) = L / B
其中:
- δ_o:外侧轮转角
- δ_i:内侧轮转角
- L:轴距
- B:轮距
我曾经在实车调试时踩过一个坑:阿克曼率没调好,结果车辆在低速转弯时轮胎发出刺耳的尖叫。后来一查,左右轮转角差差了3度。所以啊,阿克曼几何不是理论游戏,是实打实的工程问题。
小技巧:在仿真中,我们通常用自行车模型代替阿克曼模型。因为自行车模型只需要一个前轮转角δ,而阿克曼需要两个。但实车标定时,一定要把阿克曼率算准。
3.4 运动学微分方程推导
好,重头戏来了。咱们把自行车模型写成数学形式。假设车辆后轴中心为参考点,状态量是:
- x:后轴中心横坐标
- y:后轴中心纵坐标
- θ:车辆航向角
- δ:前轮转角
- v:后轴中心速度
那么运动学微分方程就是:
dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L
其中L是轴距。这个方程组看着简单,但信息量很大。我解释一下:
- 前两个方程:速度在x、y方向的分量
- 第三个方程:航向角变化率 = 角速度 = v * 曲率
- 曲率 κ = tan(δ) / L
你想想看,如果δ=0,车直行,dθ/dt=0,航向不变。如果δ固定,车就走一个圆。这个圆半径R = L / tan(δ)。
注意:当δ接近90度时,tan(δ)趋于无穷,模型失效。实际车辆前轮转角一般不超过40度,所以不用担心。
3.5 知识体系总览
为了让你更直观地理解本章的知识结构,我画了一张图:
3.6 实际应用中的坑
讲完了理论,咱们聊聊实际。我在做APA(自动泊车)项目时,发现一个现象:用自行车模型算出来的轨迹,实车跑起来总是偏一点。后来排查发现,是因为后轴中心这个参考点选错了。
很多教材默认以后轴中心为参考点,但实际车辆的后轴中心并不好测量。我建议你:
- 如果做低速泊车,用后轴中心没问题
- 如果做高速路径跟踪,改用质心位置更准
- 如果做仿真验证,随便选一个,保持一致就行
避坑指南:我曾经在代码里把轴距L写成了轮距B,结果车辆转弯半径算出来小了一半。调试了整整一天才发现。所以啊,参数定义一定要和实物一一对应。
3.7 小结
今天咱们聊了三件事:自行车模型怎么来的、阿克曼转向为什么重要、微分方程怎么推导。你想想看,这些东西其实都是几何关系,没有复杂的物理。但就是这些简单的几何关系,构成了整个规划控制的基石。
嗯,最后说一句:别小看运动学模型。我见过太多人一上来就搞复杂的动力学,结果连最基本的转弯都控制不好。先把自行车模型玩透,后面的路就好走了。
可可精品资料库