4. 运动学模型:差速轮模型、阿克曼模型、全向轮模型,正逆运动学解算

聊到移动机器人的运动学,说白了就是回答两个问题:“我给了轮子什么速度,车体会怎么动?” 和 “我想让车体怎么动,轮子该转多快?”。前者叫正运动学,后者叫逆运动学。

我在项目里见过不少新手,一上来就调PID,结果车跑起来歪歪扭扭。查了半天,发现是运动学模型搞错了。嗯,基础不牢,地动山摇。今天咱们就把三种最常见的轮式模型掰开揉碎讲清楚。

4.1 差速轮模型

差速轮,最常见,也最直观。两个驱动轮独立控制,再加一个或两个万向轮做支撑。靠左右轮的速度差来实现转向。

4.1.1 正运动学解算

已知左右轮转速,求车体速度。公式其实很简单:

v = (v_right + v_left) / 2
ω = (v_right - v_left) / L

这里 v 是车体线速度,ω 是角速度,L 是轮距(左右轮中心距)。

我的习惯: 实际项目中,轮距 L 别直接拿图纸尺寸用。装上轮胎,充好气,实测一下轮子接地点的距离。差个几毫米,转弯半径就不对了。

4.1.2 逆运动学解算

反过来,给定目标速度和角速度,求左右轮转速:

v_right = v + (ω * L) / 2
v_left  = v - (ω * L) / 2

你看,其实就是正解的反推。但这里有个坑——轮子转速不能超过电机最大转速。我遇到过一回,给了一个很大的角速度指令,结果算出来的右轮转速直接爆表,电机堵转,车原地打转。所以逆解算之后,一定要加个限幅处理。

我曾经踩过的坑: 差速轮原地旋转时,如果两个轮子转速方向相反但值相等,车体会绕中心旋转。但别忘了,万向轮此时会受到很大的侧向摩擦力。如果地面摩擦力不够,车会整体平移。所以室内瓷砖地上做自旋,经常出现“漂移”。

4.2 阿克曼模型

阿克曼模型,就是汽车转向模型。前轮转向,后轮驱动。它的核心是:转弯时,所有轮子的轴线要交于一点,这个点就是瞬时转动中心(ICR)。

4.2.1 几何关系

阿克曼转向的几何约束,说白了就是内侧轮转角要比外侧轮大一点。公式:

cot(δ_outer) - cot(δ_inner) = L / W

其中 L 是轴距,W 是轮距,δ 是转向角。

我建议你在做阿克曼底盘时,先画个图。把四个轮子的位置标出来,然后画一条通过后轴中点的垂线,再从前轮中心画两条线交于后轴延长线上。嗯,几何关系一目了然。

4.2.2 正逆运动学

正运动学:已知转向角 δ 和后轮速度 v,求车体状态:

v_body = v
ω = v * tan(δ) / L

逆运动学:已知目标 v 和 ω,求转向角和后轮速度:

δ = atan2(ω * L, v)
v_rear = v
注意: 阿克曼模型在低速时(比如 v 接近 0),逆解算会出问题。因为 atan2 的分母很小,算出来的转向角会剧烈抖动。我一般会在速度低于某个阈值时,直接让转向角归零,只做原地转向。

4.3 全向轮模型

全向轮,也叫麦克纳姆轮。它的特点是:可以横向移动。每个轮子有多个小辊子,与地面接触时会产生斜向的摩擦力。

我个人觉得,全向轮是三种模型里最“反直觉”的。你让四个轮子都正转,车不一定往前走,可能斜着跑。为什么?因为辊子的角度决定了力的方向。

4.3.1 正运动学解算

以四轮麦克纳姆轮为例,假设辊子与轮子轴线成 45 度角。正运动学公式:

v_x = (v_fl + v_fr + v_rl + v_rr) / 4
v_y = (-v_fl + v_fr + v_rl - v_rr) / 4
ω   = (-v_fl + v_fr - v_rl + v_rr) / (4 * (L + W))

这里 v_fl 是左前轮转速,v_fr 是右前轮,以此类推。L 是半轴距,W 是半轮距。

4.3.2 逆运动学解算

逆解算就是把上面的矩阵求逆。给定目标 v_x、v_y、ω:

v_fl = v_x - v_y - ω * (L + W)
v_fr = v_x + v_y + ω * (L + W)
v_rl = v_x + v_y - ω * (L + W)
v_rr = v_x - v_y + ω * (L + W)
我的经验: 全向轮对地面平整度要求极高。我在工厂车间里用过一次,地面有油污,结果轮子打滑,解算出来的速度全是错的。后来换了橡胶轮面的麦克纳姆轮,才解决问题。你想想看,辊子本身就在滚动,如果地面再滑,那基本没法控制。

4.4 三种模型对比

我把三种模型的核心差异整理成了一张表,方便你对照:

特性 差速轮 阿克曼 全向轮
自由度 2 (v, ω) 2 (v, ω) 3 (v_x, v_y, ω)
横向移动 否 否 是
原地旋转 是 否 是
地面要求 低 低 高
控制复杂度 低 中 高
典型应用 扫地机、AGV 汽车、无人车 仓储机器人

4.5 知识体系总览

下面这张图,把三种模型的正逆运动学关系串起来了。你可以把它当作本章的“地图”:

运动学模型知识体系 差速轮模型 阿克曼模型 全向轮模型 正解: v, ω ← 轮速 正解: v, ω ← δ, v_rear 正解: v_x, v_y, ω ← 四轮速 逆解: 轮速 ← v, ω 逆解: δ, v_rear ← v, ω 逆解: 四轮速 ← v_x, v_y, ω 核心要点 • 正运动学:从轮子到车体(传感器反馈后常用) • 逆运动学:从车体到轮子(轨迹规划时常用) • 选型建议:全向轮虽灵活,但地面条件苛刻;差速轮最皮实

4.6 实际项目中的选型建议

说了这么多理论,最后聊聊怎么选。我个人的经验是:

  • 差速轮:适合室内平地、需要频繁原地转向的场景。比如扫地机器人、服务机器人。成本低,控制简单。
  • 阿克曼:适合室外、高速场景。比如无人配送车、自动驾驶汽车。转弯半径大,但高速稳定性好。
  • 全向轮:适合狭窄空间、需要横向移动的场景。比如仓储机器人、手术室转运车。但地面必须干净平整。
再啰嗦一句: 不管你选哪种模型,运动学解算只是第一步。真正让机器人跑得稳,还得靠传感器反馈来修正。比如里程计漂移了,用IMU或者激光雷达做一下修正。这部分内容,咱们后面几章会详细讲。