4. 运动学建模

运动学建模是AMR底盘控制的“翻译层”:上层导航输出的是车体在全局坐标系下的速度指令,而底层驱动器接收的是各车轮的转速。能否把这两者准确、实时地互相转换,直接决定了底盘走直线是否跑偏、转弯半径是否准确、原地旋转是否打滑。本节围绕差速底盘与全向底盘两类主流构型,梳理正逆运动学、轮速—车体速度映射以及坐标变换的完整链条。

一、核心原理:正运动学与逆运动学

运动学建模包含两个方向。逆运动学(Inverse Kinematics)由车体速度求各轮转速,是控制指令下发的必经路径;正运动学(Forward Kinematics)由各轮编码器反馈的转速推算车体实际速度,是里程计与状态估计的基础。二者互为逆映射,但并非所有构型都存在唯一解,全向底盘尤其需要关注轮系布局带来的耦合关系。

先看差速底盘。设左右轮半径均为 r,两轮中心距为 L,左轮角速度 ω_L、右轮角速度 ω_R,则车体线速度 v 与角速度 ω 满足:

逆运动学(车体速度 → 轮速):
ω_L = (v - ω·L/2) / r
ω_R = (v + ω·L/2) / r

正运动学(轮速 → 车体速度):
v = r·(ω_R + ω_L) / 2
ω = r·(ω_R - ω_L) / L

从公式可见,差速底盘只有两个控制自由度(v 与 ω),却有三个位姿自由度(x、y、θ)。它属于非完整约束系统:可以原地旋转,但不能横向平移。这一约束是路径规划必须尊重的物理事实,也是很多“为什么AMR不能像全向车一样横着进库”的根源。

二、全向底盘运动学:麦克纳姆轮与全向轮

全向底盘通过特殊轮系解除了非完整约束。以四轮麦克纳姆轮为例,四个轮子呈矩形布置,辊子与轮轴成45°,每个轮子的线速度是车体速度在轮子方向上的投影与旋转贡献的叠加。设轮距(左右轮中心距)为 L,轴距(前后轮中心距)为 W,轮半径为 r,则逆运动学为:

ω_FL = ( vx - vy - (L+W)·ω ) / r
ω_FR = ( vx + vy + (L+W)·ω ) / r
ω_RL = ( vx + vy - (L+W)·ω ) / r
ω_RR = ( vx - vy + (L+W)·ω ) / r

其中 vx 为前进方向速度,vy 为横向速度,ω 为自转角速度。正运动学则是上述方程组的线性反解,通常写成矩阵形式,用最小二乘或伪逆求解。全向底盘的优势是能同时实现三自由度运动,适合狭窄通道、精密对接场景;代价是轮系效率较低、对地面平整度敏感、里程计标定更复杂。

工程提示:麦克纳姆轮的辊子存在滑动,实际速度与理论值会有偏差。建议在标定阶段用激光跟踪或视觉基准测量实际位移,反推有效轮半径与 L+W 的修正系数,而不是直接使用机械图纸尺寸。

三、轮速与车体速度的映射关系

无论差速还是全向,轮速与车体速度的映射都可以统一写成矩阵形式:ω_wheel = J⁻¹ · V_body,其中 J 为雅可比矩阵,由轮系几何参数决定。差速底盘的 J 是 2×2 矩阵,全向底盘是 4×3 矩阵。理解这一点,就能明白为什么更换底盘构型时,控制层只需替换雅可比矩阵,而导航层可以保持不变。

构型 控制自由度 雅可比维度 能否横移 典型场景
差速底盘 v、ω 2×2 否 仓储搬运、长走廊
四轮麦克纳姆 vx、vy、ω 4×3 是 窄道对接、精密装配
四轮全向轮 vx、vy、ω 4×3 是 高机动巡检
舵轮底盘 vx、vy、ω 4×3(含转角) 是 重载、户外

四、坐标变换:从全局到车体再到轮系

导航模块通常在全局坐标系(map/odom)下规划路径,输出的是全局速度或位姿目标。底盘控制器需要的是车体坐标系下的速度,因此必须经过一次旋转变换。设车体在全局坐标系下的航向角为 θ,则全局速度到车体速度的变换为:

vx_body =  vx_global·cosθ + vy_global·sinθ
vy_body = -vx_global·sinθ + vy_global·cosθ
ω_body  =  ω_global

这一步看似简单,却是实际调试中最容易出问题的地方。常见错误包括:航向角符号定义与ROS的右手系不一致、角度未归一化导致跳变、编码器正方向与车体正方向相反等。一旦坐标变换出错,表现为“车往反方向走”“转弯越转越偏”“原地旋转后位置漂移”。

完整的信号链可以概括为:全局路径 → 全局速度指令 → 坐标变换 → 车体速度 → 逆运动学 → 各轮转速 → 驱动器 → 电机 → 编码器反馈 → 正运动学 → 车体速度估计 → 里程计 → 全局位姿。任何一个环节的参数错误,都会在这条链路上被放大。

AMR底盘运动学信号链与坐标变换 全局坐标系 map / odom 坐标变换 旋转 θ,全局→车体 车体速度 vx, vy, ω 逆运动学 J⁻¹ · V_body 各轮转速 ω_FL, ω_FR, ω_RL, ω_RR 驱动器 / 电机 PWM / 电流环 编码器反馈 脉冲 / 转速 正运动学 J · ω_wheel 里程计 / 位姿 x, y, θ 闭环反馈 里程计回传

五、案例与误区复盘

某仓储AMR在直线行驶时出现周期性蛇形摆动。排查发现:左右轮半径标定值相差2%,导致逆运动学计算出的轮速存在系统性偏差,车体不断修正航向。重新标定轮半径并加入编码器同步后,问题消失。这说明运动学参数标定不是“一次做完就完事”,而是需要定期复检的基础工作。

另一个常见误区是混淆“车体速度”与“轮速”的物理量纲。v 的单位是 m/s,ω 的单位是 rad/s,而轮速 ω_wheel 也是 rad/s,但二者通过半径 r 关联。若在代码中把 v 直接赋给轮速,或忘记除以 r,会出现速度放大或缩小数倍的错误。建议在代码中显式标注单位,并在单元测试中验证“给定 v=0.5 m/s,轮速应为 v/r”。

排障清单:① 检查航向角符号与坐标系定义是否一致;② 检查轮半径、轮距、轴距参数是否与实物匹配;③ 检查编码器正方向与车体正方向是否一致;④ 检查角度是否归一化到 [-π, π];⑤ 检查正逆运动学是否使用同一套参数。以上五项覆盖了绝大多数运动学异常。

掌握运动学建模后,底盘控制就从“凭感觉调参”进入“按模型计算”的阶段。差速底盘要尊重非完整约束,全向底盘要处理轮系耦合,而坐标变换则是连接导航与控制的桥梁。把这条链路中的每个环节都标定清楚、验证到位,AMR才能走得直、转得准、停得稳。