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 知识体系总览

下面这张图,把本章的核心逻辑串起来了。你可以把它当作一个快速索引:

轮式机器人运动学模型知识体系 轮式机器人运动学模型 通用运动学模型 q = [x, y, θ]ᵀ, u = [v, ω]ᵀ 差速模型 v = (v_L+v_R)/2, ω = (v_R-v_L)/L 阿克曼模型 θ̇ = (v/L_wb)·tan(δ) 差速模型特性 • 零半径转弯,机动性极高 • 对轮径差异敏感,易偏航 • 适合室内、低速、频繁转向 阿克曼模型特性 • 有最小转弯半径,无法原地转 • 高速稳定性好,侧滑小 • 适合室外、高速、直线行驶 选型依据:场景决定模型 室内→差速 | 室外→阿克曼 | 混合→四轮独立

这张图把三种模型的关系和适用场景都标出来了。你写代码或者做方案时,可以拿它当参考。

4.6 模型误差对轨迹跟踪的影响

运动学模型再完美,也只是对真实物理系统的近似。实际项目中,模型误差是轨迹跟踪误差的主要来源之一。

  • 差速模型常见误差:轮径不一致、轮距测量误差、地面摩擦不均导致滑移。
  • 阿克曼模型常见误差:转向角零点漂移、轴距测量误差、轮胎侧偏刚度变化。

我曾经在一个项目中,差速机器人的轮距标称值是 500mm,实际测量只有 496mm。4mm 的误差,导致角速度计算偏差约 0.8%。跑 100 米,角度误差累计超过 4.6 度——轨迹末端偏了将近 8 米。

避坑指南:拿到新机器人,第一件事不是写控制器,而是标定运动学参数。用卷尺量轮距、轴距,用转速计测实际轮速。相信我,这一步省不了。