4. 运动学模型:轮式机器人运动学、差速模型、阿克曼模型
聊轨迹跟踪,绕不开运动学模型。说白了,你得先知道机器人怎么动,才能谈怎么控制它动得准。我见过不少新手,一上来就调 PID 参数,结果机器人原地打转——根本原因是模型没选对。
这一章,我们就把轮式机器人的三种核心运动学模型掰开揉碎讲清楚。你想想看,差速轮和阿克曼转向,本质上就是两种完全不同的“走路方式”。
4.1 轮式机器人运动学基础
运动学模型,描述的是机器人速度与位姿变化之间的关系。它不考虑力、质量、惯性——只关心“怎么走”。
对于轮式机器人,核心假设是:纯滚动、无侧滑。嗯,理想情况。实际项目中,轮胎打滑、地面不平都会引入误差,这个我们后面章节再聊。
通用的运动学方程长这样:
状态向量:q = [x, y, θ]ᵀ
控制输入:u = [v, ω]ᵀ
运动学方程:
ẋ = v · cos(θ)
ẏ = v · sin(θ)
θ̇ = ω
其中 v 是线速度,ω 是角速度。这个公式是所有轮式模型的基础骨架。
关键点:运动学模型是“几何约束”的数学表达。它告诉你:给定当前位姿和速度指令,下一时刻机器人会在哪里。
4.2 差速模型
差速模型,最常见,也最直观。两个驱动轮独立控制转速,通过转速差实现转向。万向轮只负责支撑,不提供驱动力。
我个人习惯把差速模型叫做“原地转圈模型”——因为它能实现零半径转弯。这在狭小空间里简直是神器。
4.2.1 模型推导
设左右轮转速分别为 ω_L 和 ω_R,轮半径为 r,轮距(两轮中心距离)为 L。
左轮线速度:v_L = ω_L · r
右轮线速度:v_R = ω_R · r
机器人线速度:v = (v_L + v_R) / 2
机器人角速度:ω = (v_R - v_L) / L
代入通用运动学方程,就得到了差速模型:
ẋ = (v_L + v_R)/2 · cos(θ)
ẏ = (v_L + v_R)/2 · sin(θ)
θ̇ = (v_R - v_L) / L
实用技巧:实际编码时,我建议把 v_L 和 v_R 作为输入接口,而不是直接给 v 和 ω。因为电机控制层通常接收的是轮速指令,这样能减少一次转换误差。
4.2.2 差速模型的特性
| 特性 | 说明 |
|---|---|
| 机动性 | 极高,可原地旋转(v=0, ω≠0) |
| 轨迹类型 | 任意曲率半径,包括零半径 |
| 控制复杂度 | 低,两个输入控制三个自由度(欠驱动) |
| 常见问题 | 直线行驶时容易偏航(轮径差异、地面摩擦不均) |
我曾经在一个仓储机器人项目里,发现机器人总是向右偏。排查了半天,结果是左右轮子磨损程度不一样,有效半径差了 0.5mm。嗯,0.5mm 的误差,跑 10 米就能偏出将近半米。
避坑指南:差速模型对轮径一致性非常敏感。如果你发现轨迹跟踪误差呈“弧线”状增大,先检查左右轮实际直径是否一致,别急着调控制器参数。
4.3 阿克曼模型
阿克曼模型,模拟的是汽车转向方式。前轮转向,后轮驱动。所有车轮的旋转中心必须交于一点——瞬时转动中心(ICR)。
这个模型不能原地转弯,转弯半径有下限。但它在高速行驶时更稳定,因为车轮始终指向运动方向,侧滑小。
4.3.1 几何约束
阿克曼转向的核心是:内外侧前轮的转向角不同。内侧轮转角更大,这样才能保证所有车轮绕同一个圆心转动。
设:
L_wb:轴距(前后轮距离)
δ:前轮平均转向角
R:转弯半径
几何关系:
tan(δ) = L_wb / R
内侧轮转角 δ_i 与外侧轮转角 δ_o 的关系:
cot(δ_o) - cot(δ_i) = L_track / L_wb
其中 L_track 为轮距
实际项目中,很多低成本机器人只用单舵机控制前轮转向,内外侧转角差被忽略。这会导致轮胎磨损加剧,轨迹跟踪精度也会下降。
4.3.2 运动学方程
对于后轮驱动的阿克曼模型,控制输入通常是后轮速度 v 和前轮转向角 δ:
ẋ = v · cos(θ)
ẏ = v · sin(θ)
θ̇ = (v / L_wb) · tan(δ)
注意,这里的 v 是后轮轴中心的速度。如果前轮也驱动(四驱),模型会更复杂一些。
对比差速模型:阿克曼模型的角速度 ω 与 v 和 δ 都有关。速度为零时,无论怎么打方向盘,角速度都是零——这就是为什么汽车不能原地掉头。
4.3.3 阿克曼模型的特性
| 特性 | 说明 |
|---|---|
| 机动性 | 较低,存在最小转弯半径 |
| 轨迹类型 | 曲率半径有下限,无法原地转向 |
| 控制复杂度 | 中等,需要处理转向角与速度的耦合 |
| 常见问题 | 低速时转向不足,高速时容易侧滑 |
我记得有一次做室外巡检机器人,用的阿克曼底盘。在泥泞路面上,转向角稍微大一点,前轮就开始推土——轮胎侧滑严重,轨迹完全失控。后来加了限速逻辑:转向角越大,最大允许速度越低。
实用技巧:阿克曼模型在低速时(v < 0.5 m/s),转向响应会变得非常迟钝。我建议在控制器里加一个“低速转向增益”,补偿转向不足的问题。
4.4 两种模型的对比与选型
选哪个模型,取决于你的应用场景。我列个对比表,方便你快速决策:
| 对比维度 | 差速模型 | 阿克曼模型 |
|---|---|---|
| 转弯半径 | 0(可原地旋转) | 有下限(通常 > 轴距) |
| 高速稳定性 | 较差(容易侧滑) | 较好(车轮指向运动方向) |
| 机械复杂度 | 低(两个电机+万向轮) | 高(转向机构+驱动桥) |
| 轨迹跟踪难度 | 中等(偏航问题常见) | 较高(转向与速度耦合) |
| 典型应用 | 室内AGV、服务机器人 | 室外无人车、巡检机器人 |
我个人习惯这样选:室内、低速、需要频繁转向的场景,无脑选差速。室外、高速、需要直线稳定性的场景,选阿克曼。当然,也有混合方案——比如四轮独立转向+驱动,但那属于高阶玩法了。
4.5 知识体系总览
下面这张图,把本章的核心逻辑串起来了。你可以把它当作一个快速索引:
这张图把三种模型的关系和适用场景都标出来了。你写代码或者做方案时,可以拿它当参考。
4.6 模型误差对轨迹跟踪的影响
运动学模型再完美,也只是对真实物理系统的近似。实际项目中,模型误差是轨迹跟踪误差的主要来源之一。
- 差速模型常见误差:轮径不一致、轮距测量误差、地面摩擦不均导致滑移。
- 阿克曼模型常见误差:转向角零点漂移、轴距测量误差、轮胎侧偏刚度变化。
我曾经在一个项目中,差速机器人的轮距标称值是 500mm,实际测量只有 496mm。4mm 的误差,导致角速度计算偏差约 0.8%。跑 100 米,角度误差累计超过 4.6 度——轨迹末端偏了将近 8 米。
避坑指南:拿到新机器人,第一件事不是写控制器,而是标定运动学参数。用卷尺量轮距、轴距,用转速计测实际轮速。相信我,这一步省不了。