2、坐标系与运动学模型:全局坐标系、局部坐标系、自行车模型与差速模型

说实话,坐标系和运动学模型这块,是机器人轨迹规划的「地基」。地基没打好,后面做平滑、做避障,全得翻车。我当年刚入行时,就吃过这个亏——坐标系搞混了,机器人原地转圈,还以为是算法写错了。

今天咱们就把这事彻底捋清楚。你想想看,一个机器人要动起来,它得知道两件事:我在哪,以及我怎么动。前者靠坐标系,后者靠运动学模型。

2.1 全局坐标系 vs 局部坐标系

先聊坐标系。说白了,全局坐标系就是「世界地图」,局部坐标系就是「我眼里的世界」。

全局坐标系(World Frame)

全局坐标系是固定不动的。通常我们用 X_w、Y_w 表示。原点可以选在房间角落、地图起点,或者任意一个参考点。所有障碍物、目标点、路径点,都在这个坐标系下定义。

我习惯把全局坐标系想象成「上帝视角」——你站在天上,看着整个场景,机器人在哪、障碍物在哪,一目了然。

局部坐标系(Robot Frame / Body Frame)

局部坐标系是跟着机器人跑的。原点在机器人中心,X_r 轴朝前,Y_r 轴朝左(或者朝右,看你的习惯)。

为什么要搞两套?因为传感器数据都是局部的。激光雷达扫到的障碍物,距离是「相对于我」的。你得把它转换到全局坐标系下,才能跟地图匹配上。

核心公式: 坐标变换
P_w = R(θ) * P_r + T

其中 R(θ) 是旋转矩阵,T 是平移向量。说白了就是:把局部坐标旋转一下、平移一下,就变成全局坐标了。

我的小技巧: 调试时,我习惯在 Rviz 里同时显示两个坐标系。如果机器人动了,局部坐标系跟着动,全局坐标系纹丝不动——这就对了。如果全局坐标系也在飘,那肯定是 TF 树配错了。

2.2 自行车模型(Bicycle Model)

自行车模型,名字听着简单,但它是轮式机器人运动学的经典模型。为什么叫自行车?因为它假设机器人像自行车一样——前轮转向,后轮驱动。

嗯,这里要注意:不是所有机器人都是自行车。但很多汽车、AGV(自动导引车)的底层逻辑,就是自行车模型。

模型参数

参数 含义
v 后轮速度(线速度)
δ 前轮转向角
L 轴距(前后轮距离)
θ 车体朝向角

运动学方程

x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = (v / L) * tan(δ)

你看,前两个方程就是简单的速度分解。第三个方程有意思——转向角越大,转弯越急;轴距越长,转弯越稳。

我在项目中遇到过一个问题:用自行车模型做路径跟踪时,如果轴距 L 设置得不对,机器人会一直画龙。后来发现是参数标定出了问题——实际轴距跟设计图纸差了 5 厘米。

我曾经踩过的坑: 自行车模型假设车轮不打滑。但在地砖、大理石地面上,打滑是常事。模型算出来的轨迹跟实际轨迹能差出半米。所以,如果你在室内光滑地面跑,记得给模型加个「打滑补偿」。

2.3 差速模型(Differential Drive Model)

差速模型,说白了就是两个轮子各自转,靠速度差来转弯。扫地机器人、AGV 小车,基本都是这个模型。

它跟自行车模型最大的区别是什么?自行车模型需要转向机构,差速模型不需要。差速模型可以原地转圈,自行车模型不行。

模型参数

参数 含义
v_l 左轮速度
v_r 右轮速度
d 轮距(左右轮间距)

运动学方程

v = (v_r + v_l) / 2
ω = (v_r - v_l) / d

x_dot = v * cos(θ)
y_dot = v * sin(θ)
θ_dot = ω

你看,差速模型的核心就两个量:v(平均速度)和 ω(角速度)。左轮比右轮快,车就往右转;反过来就往左转。两轮速度相等,直行。

关键区别:
  • 自行车模型:θ_dot 跟 v 和 δ 都有关,不能原地转圈
  • 差速模型:θ_dot 只跟轮速差有关,可以原地转圈(v=0, ω≠0)

2.4 两种模型怎么选?

这个问题,我经常被问到。我的建议是:

  • 差速模型:适合室内、小空间、需要灵活转向的场景。比如仓库里的 AGV、家里的扫地机。
  • 自行车模型:适合室外、高速、需要稳定性的场景。比如自动驾驶汽车、园区物流车。

但说实话,现在很多算法是通用的。你写轨迹平滑时,不管用哪种模型,核心思路都一样——把控制量(速度、转向角)映射到位置变化上。

我的个人习惯: 做仿真时先用差速模型,因为它简单、好调。等算法跑通了,再换成自行车模型做实车验证。这样能省不少调试时间。

2.5 知识体系总览

下面这张图,是我自己梳理的。你看一眼,就能把今天讲的内容串起来。

坐标系与运动学模型知识体系 坐标系 全局坐标系 局部坐标系 固定不动,上帝视角 跟着机器人,传感器视角 运动学模型 自行车模型 差速模型 前轮转向,后轮驱动 两轮差速,原地转弯 核心公式对比 自行车:θ_dot = (v/L) * tan(δ) 差速:θ_dot = (v_r - v_l) / d 不能原地转圈,适合高速 可以原地转圈,适合室内

你看,左边是坐标系,右边是运动学模型。两者通过坐标变换和运动学方程连接起来。搞懂了这张图,后面做轨迹平滑、避障融合,你就知道每一步在算什么了。

好了,坐标系和运动学模型就聊到这。记住一句话:坐标系是骨架,运动学模型是肌肉。骨架歪了,肌肉再强也跑不直。

课后小作业: 打开你的机器人仿真环境,分别用自行车模型和差速模型让机器人走一个「8」字形。观察两种模型的转弯半径差异。你会发现,差速模型能走出更紧凑的弯——这就是原地转弯能力的体现。

可可精品资料库