4. 车辆运动学模型

各位工程师朋友,今天我们来聊聊车辆运动学模型。说实话,这部分内容在路径规划里属于「地基」一样的存在。你规划出来的轨迹再漂亮,如果车辆根本走不出来,那就是纸上谈兵。我个人习惯把运动学模型看作是「车辆的语言」——你得先听懂车想怎么动,才能给它下指令。

4.1 自行车模型:最经典的简化

先说说自行车模型。为什么叫这个名字?你想想看,一辆四轮汽车在低速转弯时,左右轮的转角其实差不多。那干脆把左右轮合并成一个虚拟的「前轮」和「后轮」,这不就变成自行车了吗?

我在项目中遇到过这样的情况:刚开始做路径跟踪时,直接用四轮模型,结果参数调得头大。后来换成自行车模型,效果反而更好。为什么?因为低速场景下,轮胎侧偏角很小,自行车模型的假设基本成立。

自行车模型的数学表达其实很简洁:

状态变量: [x, y, θ, δ, v]
- x, y: 车辆后轴中心位置
- θ: 航向角
- δ: 前轮转角
- v: 纵向速度

运动方程:
x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = v * tan(δ) / L
δ_dot = ω (转向角速度)
v_dot = a (纵向加速度)

这里 L 是轴距。嗯,要注意一点:这个模型假设轮胎是刚性的,没有侧偏。说白了就是「轮子指哪打哪」。实际轮胎会有侧偏角,但那是动力学范畴的事了。

核心要点:自行车模型适用于低速(通常 < 5 m/s)、小转角场景。我建议你在做泊车、园区物流这类应用时优先考虑它。

4.2 阿克曼转向模型:更真实的转向几何

自行车模型虽然好用,但它忽略了一个关键问题:实际车辆转弯时,内外侧车轮的转角是不一样的。这就是阿克曼转向几何要解决的问题。

我记得第一次调试阿克曼模型时,发现车辆转弯半径总跟理论值对不上。后来一查,原来是转向梯形设计导致的阿克曼率不是100%。这玩意儿在实车上很常见,你想想看,完全阿克曼转向在低速时转向力太大,所以很多车会故意做成「不足阿克曼」。

阿克曼转向的核心公式:

内轮转角: δ_i = arctan(L / (R - W/2))
外轮转角: δ_o = arctan(L / (R + W/2))
平均转角: δ = (δ_i + δ_o) / 2

其中:
- R: 转弯半径
- W: 轮距
- L: 轴距

实战技巧:在做路径跟踪时,如果你用的是自行车模型,但实际车辆是阿克曼转向,记得加一个「阿克曼补偿」。我曾经在AGV项目里吃过这个亏,轨迹跟踪误差一直降不下来,加了补偿后立马收敛。

4.3 状态空间表示:让模型更「听话」

有了运动学模型,怎么把它变成计算机能用的形式?这就轮到状态空间表示出场了。

说白了,状态空间表示就是把运动学方程写成矩阵形式:

状态向量: x = [x, y, θ, δ, v]^T
控制输入: u = [ω, a]^T

连续时间状态空间:
x_dot = f(x, u)

离散化后(用于计算机控制):
x(k+1) = x(k) + Ts * f(x(k), u(k))

其中 Ts 是采样时间

我个人习惯用欧拉法做离散化,简单够用。如果你追求更高精度,可以考虑RK4,但计算量会大一些。

注意:状态空间表示中的状态变量一定要可观测。我见过有人把轮胎滑移角也放进状态里,结果卡尔曼滤波根本收敛不了——因为滑移角没法直接测量。

4.4 微分约束:车辆不是你想动就能动

最后聊聊微分约束。这玩意儿说白了就是「车辆的运动受物理规律限制」。你不可能让车原地掉头,也不可能让它横着走。

常见的微分约束包括:

  • 非完整约束:车辆不能侧向移动,即 y_dot * cos(θ) - x_dot * sin(θ) = 0
  • 曲率约束:路径曲率 κ ≤ tan(δ_max) / L
  • 加速度约束:|a| ≤ a_max
  • 转向速率约束:|ω| ≤ ω_max

我曾经在做一个高速路径跟踪项目时,忽略了转向速率约束。结果规划出来的路径曲率变化太快,执行器根本跟不上,车辆直接冲出车道。嗯,从那以后我再也不敢忽略微分约束了。

避坑指南:微分约束一定要在路径规划阶段就考虑进去。等到了跟踪阶段再处理,往往为时已晚。我建议你把约束写成不等式形式,直接塞进优化问题里。

知识体系总览

下面这张图展示了本章的核心逻辑:从最简单的自行车模型出发,逐步引入阿克曼转向、状态空间表示,最后用微分约束收尾。整个链条就是「模型 → 表示 → 约束」。

车辆运动学模型知识体系 自行车模型 低速场景首选 忽略轮胎侧偏 阿克曼转向 内外轮转角不同 转向梯形几何 状态空间表示 矩阵化表达 离散化处理 微分约束 非完整约束 曲率/加速度限 核心逻辑:模型 → 表示 → 约束 从物理模型到数学表达,再到可计算的约束条件 典型应用场景 低速泊车 → 自行车模型 城市道路 → 阿克曼模型 高速巡航 → 加微分约束

好了,以上就是车辆运动学模型的全部核心内容。从自行车模型到阿克曼转向,再到状态空间表示和微分约束,每一步都是环环相扣的。你在实际项目中,可以根据场景灵活选择——低速用自行车,高速加约束,中间用阿克曼。记住,模型不是越复杂越好,够用就行。

最后说一句:如果你刚开始接触这部分内容,我建议你先从自行车模型入手,跑通一个简单的路径跟踪demo。等理解了状态空间表示,再慢慢加入阿克曼和微分约束。一口吃不成胖子,做工程更是如此。

可可精品资料库