第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 本章知识体系

下面这张图总结了本章的核心逻辑,我建议你多看几遍:

车辆运动学模型知识体系 自行车模型 坐标系定义 运动学方程 前轮转向 后轮转向 核心关系:自行车模型 → 坐标系定义 → 运动学方程 → 转向方式选择 低速场景适用,高速需引入动力学模型

这张图把本章的知识点串起来了。你从自行车模型出发,搞清楚坐标系怎么定义,然后推导运动学方程,最后区分前轮和后轮转向的区别。每一步都是下一步的基础。

好了,第二章就到这里。记住,运动学模型是横向控制的「地基」,地基不牢,房子盖得再高也得塌。下一章我们讲动力学模型——那才是真正考验数学功底的地方。

专注资料整理