第二节 运动学基础:坐标系与运动模型
各位同学,欢迎来到运动学基础这一节。说实话,这部分内容看起来有点枯燥,但它是整个AMR控制的基石。我当年刚入行时,就因为坐标系搞反了,让一台AGV在仓库里画了个大大的“8”字,差点撞到货架。从那以后,我再也不敢小看这些基础概念了。
2.1 坐标系定义
做机器人控制,首先得搞清楚“我在哪”和“我要去哪”。这就离不开坐标系。
世界坐标系
世界坐标系,你可以理解为“上帝视角”。它是一个固定不动的参考系,通常用大写字母 W 表示。比如在工厂里,我们把地图的东北角定为原点,X轴指向东,Y轴指向北。这样,任何一个货架、充电桩的位置,都能用 (x_w, y_w) 唯一确定。
我个人习惯把世界坐标系的原点设在机器人启动的初始位置,或者地图的某个角落。这样调试时,坐标值看起来比较顺眼。
机器人坐标系
机器人坐标系是“跟着机器人走的”。它固定在机器人本体上,通常用 R 表示。原点在机器人的几何中心,X轴指向机器人正前方,Y轴指向左侧。
为什么要搞两套坐标系?你想想看,激光雷达扫描到的障碍物,是以机器人自身为参考的。但你要规划路径,又得把障碍物位置换算到世界坐标系里。这两套坐标系之间的转换,就是运动学要干的事。
2.2 位姿表示 (x, y, θ)
机器人在平面上的状态,用三个量就能描述:(x, y, θ)。
- x, y:机器人在世界坐标系中的位置坐标。
- θ:机器人的朝向角,通常指机器人X轴与世界坐标系X轴之间的夹角。逆时针为正。
举个例子:(2.0, 3.5, 1.57) 表示机器人在世界坐标 (2.0, 3.5) 处,朝向角为 1.57 弧度(约 90 度,即正对着 Y 轴方向)。
2.3 差速轮运动学模型
差速轮是AMR里最常见的底盘形式。两个驱动轮独立控制,通过转速差实现转向。
正运动学:从轮速到位姿变化
已知左右轮转速 v_l 和 v_r,求机器人线速度 v 和角速度 ω。
v = (v_r + v_l) / 2
ω = (v_r - v_l) / d
其中 d 是左右轮的轮距。你看,线速度是平均值,角速度是差值除以轮距。这个公式很简单,但我在项目里发现,很多人会忽略轮距的测量误差。轮距差个1毫米,机器人转一圈就会偏好几度。
逆运动学:从目标速度到轮速
反过来,已知目标 v 和 ω,求左右轮转速。
v_r = v + (ω * d) / 2
v_l = v - (ω * d) / 2
2.4 全向轮运动学模型
全向轮(麦克纳姆轮或全向轮)可以实现任意方向的平移和旋转,灵活性更高。但代价是控制更复杂。
正运动学
以四轮全向底盘为例,每个轮子转速 ω_i 与机器人速度 (v_x, v_y, ω) 的关系如下:
ω1 = (1/R) * (v_x - v_y - (L_x + L_y) * ω)
ω2 = (1/R) * (v_x + v_y + (L_x + L_y) * ω)
ω3 = (1/R) * (v_x + v_y - (L_x + L_y) * ω)
ω4 = (1/R) * (v_x - v_y + (L_x + L_y) * ω)
其中 R 是轮子半径,L_x 和 L_y 是轮子到机器人中心的距离。
说实话,这个公式看着有点吓人。但说白了,就是每个轮子分担一部分运动。你让机器人往右平移,四个轮子会配合着转出不同的速度和方向。
逆运动学
逆运动学就是解上面的方程组,把四个轮速合成机器人的速度。实际应用中,我们通常用矩阵形式表示:
[v_x] [ 1 1 1 1 ] [ω1]
[v_y] = [ -1 1 1 -1 ] [ω2] * (R/4)
[ω ] [ -1 1 -1 1 ] [ω3]
[ω4]
知识体系总览
下面这张图,把这一节的核心逻辑串起来了。你可以看到,从坐标系到位姿,再到两种底盘的运动学模型,最终都指向同一个目标:让机器人知道怎么动。
嗯,这一节的内容就到这里。坐标系是基础,位姿是状态,运动学模型是方法。三者缺一不可。下次你调试机器人时,如果发现它不走直线,不妨先从坐标系和运动学参数查起——我敢打赌,八成问题出在这里。