车辆运动学模型:自行车模型、阿克曼转向几何、运动学方程推导

好,咱们进入正题。路径规划里有个绕不开的问题——车到底怎么动?

你想想看,如果我把车当成一个点来处理,规划出来的路径再漂亮,车也走不了。为什么?因为车有长度、有宽度,更重要的是——它不能原地掉头。这就是曲率约束的物理根源。

我个人习惯,讲运动学模型之前,先让大家理解一个核心思想:我们不是在造一辆真车,而是在造一个数学上的替身。这个替身要足够简单,能算得快;又要足够准确,别让真车撞墙。

自行车模型:把四轮简化成两轮

先看最经典的简化方式——自行车模型。

四轮车转向时,左右轮的转角其实不一样。你想想看,内侧轮转弯半径小,外侧轮大。如果我把四个轮子都算进去,那数学推导会变得非常复杂。在实际工程中,我们通常用自行车模型来近似。

什么叫自行车模型?说白了,就是把车辆的前后轴各用一个轮子代替。前轮负责转向,后轮负责驱动(或者制动)。这个模型假设:

  • 车辆在平面上运动,不考虑垂向跳动
  • 左右车轮的转角合并成一个等效的前轮转角
  • 轮胎与地面之间没有侧滑

核心假设:自行车模型成立的前提是——车辆低速行驶(通常 < 5 m/s),且转向角不大。我在项目中遇到过,有人把这个模型用在高速场景下,结果规划出来的路径曲率突变,车辆根本跟不住。

嗯,这里要注意:自行车模型不是万能的。它适用于低速泊车、园区物流、扫地机器人这类场景。如果你在做高速自动驾驶,那得用更复杂的动力学模型。

阿克曼转向几何:让轮子各走各的路

讲完自行车模型,咱们聊聊阿克曼转向几何。这个名字你可能听过,但它的物理含义是什么?

阿克曼转向的核心思想是:转向时,所有车轮的轴线都交于一点。这个点就是瞬时转动中心(Instantaneous Center of Rotation, ICR)。

为什么要这样设计?因为如果左右前轮的转角一样,那它们在转弯时就会产生侧滑,轮胎磨损严重,车辆也不稳定。阿克曼几何通过让内侧轮转角比外侧轮大,保证每个轮子都沿着自己的圆弧走。

我记得有一次调试AGV(自动导引车),发现车辆在转弯时总是偏离轨迹。查了半天,原来是阿克曼机构没调好,左右轮的转角比例不对。后来重新标定了一下,问题就解决了。

阿克曼转向的数学关系是这样的:

cot(δ_left) - cot(δ_right) = L / W

其中:

  • δ_left 是左前轮转角
  • δ_right 是右前轮转角
  • L 是轴距(前后轴距离)
  • W 是轮距(左右轮距离)

这个公式告诉你,轮距越宽,左右轮的转角差就越大。你想想看,大卡车转弯时,内侧轮几乎要原地打转,就是这个道理。

工程小技巧:在实际项目中,我们通常不会直接用阿克曼几何去控制每个轮子,而是先算出等效的前轮转角 δ,再通过阿克曼关系反算出左右轮的转角。这样,自行车模型和阿克曼几何就结合起来了。

运动学方程推导:从几何到数学

好,现在我们把自行车模型和阿克曼几何结合起来,推导运动学方程。

先定义几个变量:

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

现在,我们来看车辆的运动。后轴中心点 (x, y) 的速度方向,就是车辆的航向角 θ。所以:

dx/dt = v * cos(θ)
dy/dt = v * sin(θ)

这个好理解吧?车往前走,x和y方向的分量就是速度乘以角度的余弦和正弦。

接下来是航向角的变化率。前轮转角 δ 决定了车辆转弯的曲率。曲率 κ 和转角 δ 的关系是:

κ = tan(δ) / L

而航向角的变化率(也就是角速度)等于速度乘以曲率:

dθ/dt = v * κ = v * tan(δ) / L

把这三个方程写在一起,就是完整的自行车模型运动学方程:

dx/dt = v * cos(θ)
dy/dt = v * sin(θ)
dθ/dt = v * tan(δ) / L

注意:这个方程里,控制输入是 v 和 δ。v 控制速度大小,δ 控制转向。路径规划的任务,就是规划出 v(t) 和 δ(t) 随时间的变化曲线。

我曾经犯过一个错误——在方程里把 tan(δ) 直接写成了 δ。小角度近似下没问题,但一旦转角超过 20°,误差就非常大了。规划出来的路径,车辆根本走不了。所以,除非你确定转角很小,否则别偷懒。

曲率与转向角的关系

从上面的方程可以看出,曲率 κ 和转向角 δ 的关系是:

κ = tan(δ) / L

这个关系非常重要。它告诉我们:

  • 轴距 L 越大,同样的转角产生的曲率越小(车越难转弯)
  • 转向角 δ 越大,曲率越大(转弯越急)
  • 曲率 κ 的倒数就是转弯半径 R = L / tan(δ)

你想想看,大货车为什么转弯半径那么大?就是因为轴距 L 太大了。同样的转角,小车能拐过去,大车就得倒一把。

避坑指南:我曾经在项目中遇到过一个问题——规划出来的路径曲率连续,但车辆就是跟不住。后来发现,是因为我用的运动学模型没有考虑转向角速度的限制。车辆的转向电机是有响应速度的,你不能要求它瞬间把方向盘打到底。所以,在规划时一定要加上转向角速度约束:|dδ/dt| ≤ ω_max。

离散化:从连续到离散

实际工程中,我们不可能用连续方程去控制车辆。控制器是离散的,通常 10-100 Hz 的频率。所以,需要把运动学方程离散化。

最常用的方法是欧拉法:

x(k+1) = x(k) + v(k) * cos(θ(k)) * dt
y(k+1) = y(k) + v(k) * sin(θ(k)) * dt
θ(k+1) = θ(k) + v(k) * tan(δ(k)) / L * dt

其中 dt 是控制周期。这个离散模型,就是路径规划算法里最常用的车辆模型。

我个人习惯,在仿真阶段先用欧拉法,简单够用。但如果控制周期比较大(比如 dt > 0.1s),欧拉法的误差会累积,这时候可以考虑用龙格-库塔法(RK4)来提高精度。

小结一下

这一章我们讲了三个核心内容:

  1. 自行车模型:把四轮车简化为两轮,忽略左右轮差异
  2. 阿克曼转向几何:保证所有车轮绕同一个圆心转动
  3. 运动学方程:从几何关系推导出车辆的微分方程

这些内容看起来简单,但它们是路径规划中曲率约束的物理基础。后面讲曲线插值、优化求解时,都会用到这里的模型。

嗯,最后说一句——模型是死的,但工程是活的。别死记公式,多想想你的车到底是怎么动的。

车辆运动学模型知识体系 自行车模型 • 四轮→两轮简化 • 前轮转向,后轮驱动 • 无侧滑假设 • 适用于低速场景 阿克曼转向几何 • 所有轴线交于一点 • 内侧轮转角 > 外侧轮 • cot(δL) - cot(δR) = L/W • 避免轮胎侧滑 运动学方程 • dx/dt = v·cos(θ) • dy/dt = v·sin(θ) • dθ/dt = v·tan(δ)/L • 曲率 κ = tan(δ)/L 路径规划中的曲率约束 曲率连续 | 转向角速度限制 | 最小转弯半径 | 可行性检查 三个模块共同构成车辆运动学模型,为路径规划提供物理约束基础 关键参数:轴距 L | 轮距 W | 转向角 δ | 航向角 θ | 速度 v | 曲率 κ

个人经验:我建议你在做路径规划之前,先用这个运动学模型做一下仿真。把规划出来的路径输入模型,看看车辆能不能跟得上。这一步花不了多少时间,但能帮你避免很多坑。

可可精品资料库