第2章 运动学模型基础:自行车模型、阿克曼模型、差速模型

各位同学,欢迎来到第二章。上一章我们聊了轨迹跟踪的整体框架,今天要扎进一个非常基础但又极其关键的部分——运动学模型。

说实话,我见过不少刚入行的工程师,一上来就猛调PID参数,结果车就是走不直。为什么?因为模型没选对。你想想看,用一个差速模型去控制一辆汽车,那不是拿自行车去跑F1吗?所以,搞懂这三种模型,是做好轨迹跟踪的第一步。

2.1 为什么需要运动学模型?

运动学模型,说白了就是描述机器人“怎么动”的数学关系。它不考虑力、质量、惯性这些动力学因素,只关注位置、速度、角度之间的几何约束。

在轨迹跟踪里,模型的作用就两个:

  • 预测未来状态:给定当前控制量,模型能算出下一时刻机器人会在哪。
  • 设计控制律:控制器需要知道输入和输出之间的关系,才能算出该给多少油门、打多少方向。

我个人习惯,在开始写任何控制代码之前,先把运动学模型在白板上画一遍。这一步省了,后面调试能让你怀疑人生。

核心观点:运动学模型是控制器的“眼睛”。没有它,控制器就是盲人摸象。

2.2 自行车模型(Bicycle Model)

自行车模型是最经典的简化模型。它把四轮车辆等效成一辆自行车——前轮转向,后轮驱动。这个模型在低速场景下非常准,而且数学形式简洁,是很多轨迹跟踪算法的基础。

2.2.1 模型假设

  • 车辆在平面上运动,忽略垂向跳动。
  • 左右轮合并为一个虚拟轮,位于车辆中轴线上。
  • 轮胎无侧滑,即速度方向始终与轮子朝向一致。
  • 低速行驶,忽略离心力和轮胎侧偏特性。

2.2.2 状态方程

自行车模型的状态通常用 [x, y, θ, δ, v] 表示:

  • x, y:后轴中心位置
  • θ:航向角(车头朝向)
  • δ:前轮转向角
  • v:后轮速度

运动学方程如下:

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

其中 L 是轴距,a 是加速度,ω 是转向角速度。

我的经验:实际项目中,我通常把 δ 限制在 ±30° 以内,因为超过这个范围,tan(δ) 增长太快,模型会变得不稳定。曾经有个项目,实习生没加限幅,仿真里车直接原地转圈……嗯,你懂的。

2.2.3 适用场景

场景 适用性 说明
低速泊车 ★★★★★ 速度 < 5 m/s,侧滑可忽略
园区物流 ★★★★☆ 速度 < 10 m/s,路面良好
高速公路 ★★☆☆☆ 高速下轮胎侧偏不可忽略,需用动力学模型

2.3 阿克曼模型(Ackermann Model)

阿克曼模型是自行车模型的“升级版”。它考虑了左右轮转角不同的问题——转弯时,内侧轮转角比外侧轮大,这样才能让所有轮子绕同一个圆心转动。

2.3.1 阿克曼转向几何

阿克曼转向的核心条件是:四个轮子的转向中心交于一点。数学上,内外轮转角满足:

cot(δ_out) - cot(δ_in) = W / L

其中 W 是轮距,L 是轴距,δ_in 和 δ_out 分别是内外轮转角。

实际应用中,我们通常用等效前轮转角 δ 来近似:

δ ≈ (δ_in + δ_out) / 2

然后直接用自行车模型的状态方程。这个近似在转角不大时误差很小。

避坑指南:我曾经在一个项目中直接用自行车模型控制真实车辆,结果发现转弯半径总是不对。后来一查,原来是阿克曼机构没校准,左右轮实际转角差了5度。所以,如果你用自行车模型控制真实车辆,一定要先标定转向机构。

2.3.2 与自行车模型的对比

对比项 自行车模型 阿克曼模型
轮子数量 2个虚拟轮 4个真实轮
转向方式 单轮转向 内外轮差动转向
计算复杂度 低 中
精度(低速) 高 更高
工程实现 简单 需标定

2.4 差速模型(Differential Drive Model)

差速模型是轮式机器人最常用的模型,比如扫地机器人、AGV小车。它没有转向轮,靠左右轮的速度差来实现转弯。

2.4.1 模型原理

差速模型的状态通常用 [x, y, θ] 表示,控制输入是左右轮速度 v_L 和 v_R。

运动学方程:

dx/dt = (v_R + v_L) / 2 * cos(θ)
dy/dt = (v_R + v_L) / 2 * sin(θ)
dθ/dt = (v_R - v_L) / W

其中 W 是左右轮间距。

你看,这个模型比自行车模型更简单——没有转向角状态,控制量直接是轮速。但代价是,它不能像汽车那样“直着走斜着停”,只能原地转弯或弧线运动。

2.4.2 三种典型运动模式

  • 直线运动:v_L = v_R,航向角不变。
  • 原地旋转:v_L = -v_R,中心点不动,只转方向。
  • 弧线运动:v_L ≠ v_R,绕某个圆心做圆周运动。

我的建议:差速模型在室内场景非常好用,但要注意轮子打滑问题。我曾经在光滑地板上测试AGV,结果左右轮速度差明明设好了,车却直直地滑出去。后来加了轮速编码器和IMU融合,才解决了这个问题。

2.5 三种模型在轨迹跟踪中的作用

好了,三种模型都讲完了。那它们在轨迹跟踪里到底怎么用?我画了一张图,帮你理清思路。

运动学模型在轨迹跟踪中的作用 期望轨迹 轨迹跟踪控制器 运动学模型 控制量(速度/转角) 状态反馈 模型的作用:将控制量映射为状态变化,控制器才能“知道”下一步该往哪走。 不同模型适用于不同机器人构型,选错模型会导致控制失效。

从这张图你可以看到,运动学模型是控制器和实际机器人之间的“桥梁”。控制器根据期望轨迹和当前状态,计算出控制量;模型则告诉我们,这个控制量会让机器人产生怎样的运动。

2.5.1 模型选择指南

机器人类型 推荐模型 原因
汽车、无人车 自行车模型 / 阿克曼模型 有转向轮,适合阿克曼转向几何
AGV、扫地机器人 差速模型 无转向轮,靠轮速差转弯
四轮独立驱动 差速模型(扩展) 每个轮子独立控制,可等效为差速
履带式机器人 差速模型 左右履带速度差控制转向

总结一下:自行车模型和阿克曼模型适合“有方向盘”的机器人,差速模型适合“没方向盘”的机器人。选对模型,你的轨迹跟踪算法就成功了一半。

2.6 本章小结

这一章我们聊了三种最常用的运动学模型:

  • 自行车模型:简单、实用,是阿克曼模型的基础。
  • 阿克曼模型:更精确,考虑了内外轮转角差,适合真实车辆。
  • 差速模型:适合轮式机器人,控制简单,但运动模式有限。

我个人觉得,理解这些模型的关键不在于背公式,而在于理解“输入-状态”之间的映射关系。下一章我们会基于这些模型,开始设计真正的轨迹跟踪控制器。到时候你会发现,今天打下的基础有多重要。

嗯,今天就到这里。如果你在项目中遇到模型选择的问题,欢迎随时交流。