第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 本章小结
这一章我们聊了三种最常用的运动学模型:
- 自行车模型:简单、实用,是阿克曼模型的基础。
- 阿克曼模型:更精确,考虑了内外轮转角差,适合真实车辆。
- 差速模型:适合轮式机器人,控制简单,但运动模式有限。
我个人觉得,理解这些模型的关键不在于背公式,而在于理解“输入-状态”之间的映射关系。下一章我们会基于这些模型,开始设计真正的轨迹跟踪控制器。到时候你会发现,今天打下的基础有多重要。
嗯,今天就到这里。如果你在项目中遇到模型选择的问题,欢迎随时交流。