第2章:车辆运动学模型
各位同学,欢迎来到第二章。今天我们来聊聊车辆运动学模型——说白了,就是研究车怎么动起来的数学描述。我个人觉得,这是整个横向控制的基础,搞不懂这个,后面PID、MPP啥的都是空中楼阁。
2.1 自行车模型:把四轮简化成两轮
你想想看,一辆车有四个轮子,转向时每个轮子的角度都不一样,分析起来多麻烦。所以工程师们想了个聪明的办法——自行车模型。
什么叫自行车模型?就是把四轮车辆等效成一辆自行车。前轮代表两个前轮的转向效果,后轮代表两个后轮。我刚开始做自动驾驶时,总觉得这个简化太粗暴了,直到有一次在低速园区测试,发现自行车模型的预测精度居然能达到厘米级。嗯,从此我就服了。
核心假设:
- 车辆低速行驶(通常 < 5m/s),不考虑轮胎侧偏
- 左右轮转角相同,合并为一个前轮
- 车辆为刚体,不考虑悬架变形
- 后轮方向固定,不能转向
说白了,自行车模型只适用于低速场景。高速时轮胎会打滑,那就得用动力学模型了。这个我们后面再讲。
2.2 车辆坐标系定义
搞控制,坐标系必须先说清楚。我见过太多人因为坐标系搞混,调试时车往反方向跑——别问我怎么知道的。
我们通常用三个坐标系:
| 坐标系 | 原点 | X轴 | Y轴 | 用途 |
|---|---|---|---|---|
| 全局坐标系 | 大地固定点 | 东向 | 北向 | 路径规划、定位 |
| 车辆坐标系 | 车辆后轴中心 | 车头方向 | 车身左侧 | 控制量计算 |
| 轮胎坐标系 | 轮胎接地点 | 轮胎前进方向 | 轮胎左侧 | 受力分析 |
我个人习惯用车辆坐标系做控制,因为传感器(IMU、轮速计)的输出都是基于车身的。你想想看,如果非要把所有量都转到全局坐标系,计算量翻倍不说,还容易引入误差。
2.3 运动学方程推导
好,重头戏来了。我们推导自行车模型的运动学方程。
先定义几个变量:
(x, y):后轴中心在全局坐标系下的位置θ:车辆航向角(车头与X轴夹角)v:后轴中心速度(纵向速度)δ:前轮转角L:轴距(前后轴距离)
核心思路是什么?后轴中心的速度方向就是车身方向,前轮的速度方向是前轮指向的方向。这两个速度之间有个几何关系。
看推导:
// 后轴中心速度分解
x_dot = v * cos(θ)
y_dot = v * sin(θ)
// 航向角变化率(角速度)
θ_dot = v * tan(δ) / L
// 写成矩阵形式
[x_dot] [cos(θ) 0] [v ]
[y_dot] = [sin(θ) 0] [tan(δ)]
[θ_dot] [0 1/L]
嗯,这里要注意:tan(δ) 在 δ 接近 ±90° 时会爆炸。不过实际车辆前轮转角最多 ±40°,所以不用担心。
我的经验:实际代码中,tan(δ) 计算前最好加个限幅。我曾经在测试时,因为传感器噪声导致 δ 瞬间跳到 89°,tan 值直接飞到 57,控制器瞬间饱和——车差点冲上路沿。从那以后,我所有三角函数前都加了限幅。
2.4 前轮转向 vs 后轮转向
大部分乘用车是前轮转向,但叉车、某些AGV是后轮转向。有什么区别?
前轮转向:前轮负责转向,后轮跟着走。车辆质心在前后轴之间,转向时质心轨迹是平滑的。
后轮转向:后轮负责转向,前轮跟着走。质心在后轴前方,转向时质心会往外甩——说白了就是「甩尾」。
我做过一个后轮转向AGV项目,刚开始直接用前轮转向的控制器,结果车在转弯时疯狂振荡。后来才发现,后轮转向的车辆,其运动学方程里的 θ_dot 符号是反的:
// 前轮转向
θ_dot = v * tan(δ) / L
// 后轮转向(注意符号)
θ_dot = -v * tan(δ) / L
避坑指南:如果你在调试后轮转向车辆,记得把控制器的反馈极性也反过来。我曾经因为忘了这步,让AGV在原地转圈转了五分钟——还好周围没人。
2.5 本章知识体系
下面这张图总结了本章的核心逻辑,我建议你多看几遍:
这张图把本章的知识点串起来了。你从自行车模型出发,搞清楚坐标系怎么定义,然后推导运动学方程,最后区分前轮和后轮转向的区别。每一步都是下一步的基础。
好了,第二章就到这里。记住,运动学模型是横向控制的「地基」,地基不牢,房子盖得再高也得塌。下一章我们讲动力学模型——那才是真正考验数学功底的地方。