3、车辆运动学模型:自行车模型推导、状态空间方程、模型离散化方法、模型局限性分析
各位同学,欢迎来到复杂弯道路径跟踪实战的第三讲。今天我们来啃一块硬骨头——车辆运动学模型。说白了,就是研究车怎么动起来的数学模型。
我刚开始做自动驾驶控制时,总觉得运动学模型太简单,不够“高级”。直到有一次在高速匝道上做路径跟踪测试,车在弯道里直接跑偏了。嗯,从那以后我才明白:模型不是越复杂越好,而是越合适越好。
3.1 自行车模型推导
为什么叫自行车模型?你想想看,自行车转弯时,前后轮的运动轨迹其实很有规律。我们把四轮汽车简化成两轮,前轮负责转向,后轮负责驱动。这个简化,在低速场景下非常实用。
推导前,先定义几个关键变量:
- δ:前轮转角(方向盘打多少,轮子转多少)
- L:轴距(前后轮之间的距离)
- v:车辆速度(通常指后轴中心速度)
- θ:车辆航向角(车头指向的方向)
- (x, y):后轴中心坐标
核心假设有两个:
- 车辆在平面上运动,不考虑垂向跳动
- 轮胎侧偏角忽略不计(低速时成立)
基于几何关系,我们可以得到:
tan(δ) = L / R
其中R是转弯半径。这个公式很关键,它把方向盘转角直接和转弯半径联系起来了。
核心公式:
转弯半径 R = L / tan(δ)
航向角变化率 θ_dot = v / R = v * tan(δ) / L
我在项目中遇到过一个问题:用这个公式算出来的转弯半径,和实际GPS轨迹对不上。后来发现是轮胎气压不一致导致的。嗯,模型再完美,也架不住物理世界的“小脾气”。
3.2 状态空间方程
有了上面的基础,我们可以写出完整的运动学微分方程:
x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = v * tan(δ) / L
写成状态空间形式:
状态向量:X = [x, y, θ]^T
控制输入:U = [v, δ]^T
X_dot = f(X, U) =
[ v * cos(θ) ]
[ v * sin(θ) ]
[ v * tan(δ) / L ]
这个方程是非线性的,因为出现了cos和sin。为什么非线性这么麻烦?因为后续做控制设计时,很多线性控制理论不能直接套用。
我的个人习惯:在低速场景(< 10 m/s)下,我通常直接用这个非线性模型做MPC控制。虽然计算量大一点,但精度比线性化模型好很多。
3.3 模型离散化方法
计算机是离散的,我们需要把连续模型变成离散形式。常用的方法有三种:
| 方法 | 精度 | 计算量 | 适用场景 |
|---|---|---|---|
| 前向欧拉法 | 一阶 | 低 | 采样频率高时 |
| 龙格-库塔法(RK4) | 四阶 | 中 | 精度要求高时 |
| 零阶保持法 | 精确 | 高 | 线性系统 |
我最常用的是前向欧拉法,简单直接:
// 离散化后的状态更新
x(k+1) = x(k) + dt * v(k) * cos(θ(k))
y(k+1) = y(k) + dt * v(k) * sin(θ(k))
θ(k+1) = θ(k) + dt * v(k) * tan(δ(k)) / L
dt是采样时间,一般取0.01s到0.05s。我曾经试过把dt设成0.1s,结果在急弯处模型直接发散。嗯,这里要注意:采样时间不能太大,否则离散化误差会累积。
避坑指南:我曾经在项目中用欧拉法离散化,采样频率50Hz,结果在高速弯道(v > 15 m/s)时模型失稳。后来换成RK4才解决问题。所以,高速场景下建议用更高阶的离散化方法。
3.4 模型局限性分析
自行车模型虽然好用,但局限性也很明显。我总结了几点:
- 低速假设:车速超过10m/s时,轮胎侧偏角不可忽略,运动学模型误差会急剧增大
- 无侧滑假设:在湿滑路面或急转弯时,车辆会出现侧滑,模型完全失效
- 忽略动力学:不能描述车辆的加速/制动时的俯仰、侧倾等动态特性
- 平面运动假设:在坡道或颠簸路面,模型精度大打折扣
为什么会这样?说白了,自行车模型只考虑了“几何约束”,没考虑“力”。当车速快起来,轮胎和地面的摩擦力就成了主导因素。
我的建议:
- 低速泊车、园区物流:直接用自行车模型,够用
- 城市道路(< 60 km/h):自行车模型 + 侧偏角补偿
- 高速(> 60 km/h):必须上动力学模型
我记得有一次做自动泊车项目,用自行车模型做路径跟踪,效果出奇的好。因为泊车速度只有5 km/h,模型假设完全成立。但后来做高速领航辅助时,同样的模型就完全不行了。
所以,选模型就像选工具。螺丝刀拧螺丝很好用,但你非要用它砸钉子,那就别怪工具不好使。
补充一点:如果你需要在中等速度(30-60 km/h)下使用自行车模型,可以尝试加入一个“等效轴距”参数。我在项目中试过,把实际轴距乘以一个1.05-1.15的系数,能部分补偿侧偏角的影响。虽然不是完美的解决方案,但聊胜于无。
好了,这一讲的内容就到这里。自行车模型虽然简单,但它是理解更复杂模型的基础。掌握了它,你就能理解为什么低速泊车时控制那么精准,为什么高速弯道需要更复杂的模型。