3. 运动学模型基础:两轮差速模型、阿克曼模型、全向移动模型

做轨迹跟踪,第一步不是调PID,也不是写MPC。

第一步是搞清楚你的机器人到底怎么动。说白了,就是它的运动学模型。

我见过太多人,上来就套算法,结果轮子打滑、转向卡死、轨迹飞了,最后查半天发现是模型选错了。嗯,我自己也踩过这个坑。

这一章,咱们就把三种最常用的模型掰开揉碎讲清楚。两轮差速、阿克曼、全向移动。你搞懂了它们,后面的控制算法才有根。

3.1 两轮差速模型

这是最经典的模型。扫地机器人、AGV小车,大部分都是它。

原理很简单:两个驱动轮独立控制转速,通过转速差实现转向。你想想看,左轮转得快、右轮转得慢,车就往右拐。

核心公式:

设左右轮转速为 ωL、ωR,轮半径为 r,轮距为 L。

  • 线速度 v = r · (ωR + ωL) / 2
  • 角速度 ω = r · (ωR - ωL) / L
  • 转弯半径 R = v / ω = L · (ωR + ωL) / (2 · (ωR - ωL))

我在项目里用这个模型做室内导航时,发现一个关键点:轮距L的测量误差影响极大。差1毫米,转弯半径就偏一大截。所以我的习惯是,装好车先跑个圆,反算L值校准一下。

避坑指南:

我曾经以为差速模型可以原地转弯(ωR = -ωL),但实际地面摩擦不均匀时,车会飘移。所以做轨迹跟踪时,尽量别让机器人长时间原地旋转,容易累积航向误差。

3.2 阿克曼模型

汽车就是典型的阿克曼模型。前轮转向,后轮驱动。

它的特点是:所有车轮的轴线必须交于一点(瞬时转动中心)。这样轮胎才不会侧滑。

参数 符号 说明
轴距 L 前后轴距离
前轮转角 δ 实际是左右轮转角平均值
后轮速度 v 车身纵向速度

运动学方程其实很简洁:

// 阿克曼模型状态方程
x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = v * tan(δ) / L

为什么阿克曼模型比差速模型难控制?因为它的运动是非完整约束。说白了,你不能横着走,也不能原地转。倒车入库为什么难?就是因为这个约束。

我的经验:

做阿克曼轨迹跟踪时,前轮转角δ千万别直接给大角度。我曾经在高速测试时猛打方向,结果车直接甩尾。阿克曼模型在低速时(v < 1 m/s)线性度很好,但速度一上来,轮胎侧偏效应就出来了,模型会失准。

3.3 全向移动模型

这个就厉害了。全向轮(麦克纳姆轮、全向轮)可以让机器人任意方向平移,同时还能旋转。

你想想看,差速车要侧方停车得来回揉库,全向车直接横着就进去了。爽不爽?

以四轮麦克纳姆轮为例,每个轮子有独立的转速。运动学解算是个线性变换:

// 四轮麦克纳姆轮逆运动学
// 输入:车身速度 (vx, vy, ω)
// 输出:四个轮子转速 (w1, w2, w3, w4)
// Lx: 轮子纵向间距的一半
// Ly: 轮子横向间距的一半
// r: 轮子半径

w1 = (vx - vy - (Lx + Ly) * ω) / r
w2 = (vx + vy + (Lx + Ly) * ω) / r
w3 = (vx + vy - (Lx + Ly) * ω) / r
w4 = (vx - vy + (Lx + Ly) * ω) / r

关键点:

全向模型虽然灵活,但有个致命弱点——地面适应性差。全向轮的小滚子在粗糙地面会剧烈抖动,导致编码器读数噪声极大。我做仓储机器人时,在环氧地坪上跑得好好的,换到水泥地就崩了。

3.4 三种模型对比

我习惯用一个表格来选型。你直接对着看就行:

特性 两轮差速 阿克曼 全向移动
自由度 2 (v, ω) 2 (v, δ) 3 (vx, vy, ω)
能否横移 否 否 是
原地旋转 可以 不可以 可以
地面要求 低 低 高
控制难度 低 中 中高
典型应用 室内AGV、扫地机 无人车、机器人小车 仓储、竞赛机器人

选型时我的建议很简单:

  • 室内平地、需要频繁原地转向 → 差速
  • 室外、高速、需要载重 → 阿克曼
  • 空间狭小、需要全方位移动 → 全向

3.5 知识体系总览

下面这张图,是我自己梳理的三种模型的核心逻辑。你看一眼就能记住它们的关系:

三种运动学模型知识体系 运动学模型知识体系 运动学模型 两轮差速模型 阿克曼模型 全向移动模型 v = r(ωR+ωL)/2 θ̇ = v·tan(δ)/L w = T⁻¹·[vx,vy,ω] 非完整约束 非完整约束 完整约束 选型口诀: 差速灵活、阿克曼稳、全向全能但挑地

3.6 模型选型实战建议

最后,我分享一个真实案例。

去年做一款室内配送机器人,甲方要求能进电梯、能侧方停靠。我一开始选了全向模型,觉得灵活。结果在电梯口的地缝里,全向轮卡住了,编码器数据直接炸了。

后来换成差速模型,虽然侧方停车要多揉两把,但可靠性高了一个量级。

我的建议:

别为了「看起来高级」选全向模型。除非你的地面是镜面级别的平整,否则差速和阿克曼永远是更稳妥的选择。轨迹跟踪算法再牛,也救不了物理模型本身的缺陷。