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 是平移向量。说白了就是:把局部坐标旋转一下、平移一下,就变成全局坐标了。
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 知识体系总览
下面这张图,是我自己梳理的。你看一眼,就能把今天讲的内容串起来。
你看,左边是坐标系,右边是运动学模型。两者通过坐标变换和运动学方程连接起来。搞懂了这张图,后面做轨迹平滑、避障融合,你就知道每一步在算什么了。
好了,坐标系和运动学模型就聊到这。记住一句话:坐标系是骨架,运动学模型是肌肉。骨架歪了,肌肉再强也跑不直。
课后小作业: 打开你的机器人仿真环境,分别用自行车模型和差速模型让机器人走一个「8」字形。观察两种模型的转弯半径差异。你会发现,差速模型能走出更紧凑的弯——这就是原地转弯能力的体现。
可可精品资料库