第1章:车辆运动学模型——自行车模型(Bicycle Model)

各位同学好,我是你们的老朋友。今天咱们来聊聊路径跟踪控制里最基础、也最核心的一个模型——自行车模型。

说实话,我刚入行那会儿,看到各种复杂的车辆模型就头疼。什么七自由度、十四自由度,参数多得记不住。后来带我的老工程师跟我说了一句话,我到现在都记得:「控制算法不是越复杂越好,能用简单的模型解决问题,才是真本事。」

嗯,自行车模型就是这样一个「简单但够用」的模型。

1.1 为什么叫「自行车模型」?

你想想看,一辆真正的自行车,前轮负责转向,后轮负责驱动。汽车其实也一样——前轮转向、后轮驱动(或者前轮驱动,但转向还是靠前轮)。

自行车模型的核心思想就是:把四轮汽车简化成两个轮子。前轮和后轮各一个,中间用一根刚性杆连接。这根杆的长度就是汽车的轴距。

关键假设:

  • 车辆只在平面内运动(不考虑垂向跳动)
  • 左右车轮合并为一个虚拟轮(忽略轮距)
  • 轮胎侧偏角为零(低速时成立)
  • 车辆为刚性体(不考虑悬架变形)

我在项目里遇到过好几次,有人上来就用复杂的动力学模型,结果参数标定花了两个月,最后效果还不如一个调好的自行车模型。说白了,对于低速路径跟踪(比如自动泊车、园区物流),自行车模型完全够用。

1.2 运动学方程推导

好,咱们来推公式。别怕,我保证这是整个课程里最简单的数学。

先定义几个变量:

符号 含义 单位
(x, y) 后轴中心坐标 m
θ 车辆航向角(车头朝向) rad
v 后轴中心速度(车速) m/s
δ 前轮转向角 rad
L 轴距(前后轮距离) m

现在,我们来看车辆的运动。后轮的速度方向,就是车身的方向。所以:

ẋ = v * cos(θ)
ẏ = v * sin(θ)

这个好理解吧?就是速度在x和y方向上的分解。

那航向角的变化率呢?这里有个几何关系。前轮转向角δ,决定了车辆转弯的曲率。曲率半径R = L / tan(δ)。而角速度ω = v / R,所以:

θ̇ = v * tan(δ) / L

合在一起,就是完整的自行车模型运动学方程:

ẋ = v * cos(θ)
ẏ = v * sin(θ)
θ̇ = v * tan(δ) / L

就这么简单。三个方程,描述了一辆车在平面上的运动。

我的小技巧: 实际编程时,我习惯把这三个方程封装成一个函数。输入是当前状态(x, y, θ)和控制量(v, δ),输出是状态导数。这样不管是做仿真还是做控制,调用起来都方便。

1.3 前轮转向与后轮驱动模型

刚才我们推导的,其实是「前轮转向、后轮驱动」的模型。这也是最常见的配置。

为什么后轮驱动?因为后轮的速度方向就是车身方向,这样方程才简洁。如果是前轮驱动,前轮既有速度又有转向角,推导起来就复杂了。

我曾经踩过一个坑:有次做自动泊车项目,我直接用后轮驱动模型去控制一辆前轮驱动的车。结果低速时还好,一加速就偏得离谱。后来才发现,前轮驱动时,前轮的速度方向并不等于车身方向,而是有一个偏移角。

避坑指南: 如果你控制的车是前轮驱动,记得在模型里加上前轮速度方向的修正项。否则,控制精度会大打折扣。

不过话说回来,对于大多数路径跟踪应用,我们默认使用后轮驱动模型就够了。原因很简单:控制量是车速v和转向角δ,而v通常指的是后轴中心的速度。这个速度可以通过轮速传感器直接测量,不需要额外处理。

1.4 知识体系总览

为了让大家对本章内容有个整体认识,我画了一张图:

自行车模型知识体系 自行车模型 假设条件 运动学方程 驱动方式 平面运动 无侧偏角 ẋ = v·cos(θ) ẏ = v·sin(θ) θ̇ = v·tan(δ)/L 前轮转向 后轮驱动

这张图把本章的核心内容串起来了。从自行车模型出发,左边是它的假设条件,中间是运动学方程,右边是驱动方式。你只要记住这三个分支,这一章就算学透了。

1.5 小结

这一章我们讲了:

  • 自行车模型是什么,为什么它叫这个名字
  • 三个运动学方程的推导过程
  • 前轮转向和后轮驱动的区别
  • 我踩过的坑和避坑建议

说实话,自行车模型虽然简单,但它是整个路径跟踪控制的基石。后面讲的所有控制算法——纯跟踪、Stanley、MPC——都离不开这三个方程。所以,请务必把这一章吃透。

下一章,我们会用这个模型来做仿真,看看它到底能不能模拟出真实的车辆运动。到时候我会手把手带大家写代码。

可可精品资料库