一、笛卡尔空间概述

大家好,我是这次课程的主讲工程师。今天咱们聊聊笛卡尔空间——这个听起来有点数学味的概念,其实是机器人运动规划的基石。

说实话,我刚入行那会儿,对「笛卡尔空间」的理解也就停留在高中课本里。直到有一次调试六轴机器人,发现关节空间规划出来的轨迹,末端走出来的路径完全不是我想象的直线……嗯,那次之后我才真正重视起笛卡尔空间的概念。

1.1 什么是笛卡尔空间

笛卡尔空间,说白了就是我们最熟悉的那个三维坐标系——X、Y、Z三个轴互相垂直,再加上绕这三个轴的旋转(Rx、Ry、Rz)。

你想想看,我们描述一个物体在空间中的位置,最直观的方式是什么?就是告诉它在哪、朝哪。这就是笛卡尔空间的本质。

核心定义:笛卡尔空间是一个三维欧几里得空间,用三个正交轴(X、Y、Z)来描述点的位置,用三个旋转分量来描述姿态。总共6个自由度。

我习惯把笛卡尔空间叫做「任务空间」——因为机器人最终要完成的任务,比如焊接、涂胶、装配,都是在笛卡尔空间里定义的。你不可能跟焊接机器人说「关节1转30度,关节2转45度」,你得告诉它「焊枪走到这个点,保持这个角度」。

1.2 机器人工作空间

工作空间这个概念,我遇到过不少新手搞混。它指的是机器人末端执行器能够到达的所有点的集合。

举个例子:你家的扫地机器人,能扫到客厅的每个角落吗?不一定。沙发底下、墙角缝隙,可能就进不去。这就是工作空间的限制。

工作空间分两种:

  • 可达工作空间:末端能到达的所有位置点(不管姿态)
  • 灵巧工作空间:末端能以任意姿态到达的位置点

我曾经在一个项目里,客户要求机器人在一个狭窄的管道内部做焊接。我一开始没仔细算工作空间,结果机器人手臂伸进去之后,姿态完全被卡死了——这就是灵巧工作空间不够。后来不得不换了一款更细长的机器人。

我的经验:做运动规划前,一定要先画工作空间图。用蒙特卡洛法随机采样关节角度,算末端位置,然后画点云图。这步省不了。

1.3 位姿描述

位姿,就是位置+姿态。位置好理解,就是(x, y, z)。姿态呢?描述一个物体「朝哪」。

描述姿态的方式有好几种:

描述方式 参数数量 优点 缺点
旋转矩阵 9个 直观,容易做变换 冗余,有约束条件
欧拉角 3个 参数少,直观 有万向锁问题
四元数 4个 无奇点,插值平滑 不够直观
轴角表示 4个 物理意义明确 插值不方便

我个人最常用的是四元数。为什么?因为做轨迹插值时,四元数的球面线性插值(SLERP)非常平滑,不会出现欧拉角那种突然翻转的情况。

我记得有一次做视觉引导抓取,相机给出的姿态是欧拉角(ZYX顺序),我直接用这个角度做轨迹规划。结果机器人走到一半,手腕突然来了个180度翻转——吓我一跳。后来查出来是万向锁问题。从那以后,我只要做插值,一律转成四元数。

注意:欧拉角的旋转顺序很重要!同样的角度值,ZYX顺序和XYZ顺序得到的结果完全不同。一定要确认你用的库默认是什么顺序。

1.4 坐标系定义

坐标系,是机器人运动规划的「语言」。没有统一的坐标系,你说的话别人听不懂。

一个典型的机器人系统,至少包含以下几个坐标系:

  • 世界坐标系:固定在机器人基座或工作台,是所有坐标的「绝对参考」
  • 基坐标系:固定在机器人基座,通常与世界坐标系重合或有个固定偏移
  • 工具坐标系:固定在末端执行器上,比如焊枪尖、夹爪中心
  • 工件坐标系:固定在待加工工件上,方便编程
  • 用户坐标系:用户自定义的参考系,比如工作台的一个角落

这里我画了一张图,帮你理清这些坐标系的关系:

机器人坐标系关系图 世界坐标系 绝对参考,全局唯一 固定在基座或工作台 基坐标系 固定在机器人基座 通常与世界系重合 工具坐标系 固定在末端执行器 如焊枪尖、夹爪中心 工件坐标系 固定在待加工工件 方便编程和示教 用户坐标系 用户自定义参考系 如工作台角落 固定偏移 运动学链 测量标定 用户定义 相对位姿(任务目标) 坐标系之间的变换关系,决定了运动规划的数学基础

这张图里,世界坐标系是「老大」,其他坐标系都直接或间接跟它关联。基坐标系和世界坐标系之间通常是个固定偏移,标定一次就不用动了。工具坐标系和基坐标系之间,是通过机器人的运动学链联系起来的——你给每个关节一个角度,末端的位置和姿态就确定了。

工件坐标系和用户坐标系,都是为了方便编程而设的。比如你要在工件上画一个圆,直接在工件坐标系下编程,比在世界坐标系下算来算去方便得多。

一个小技巧:做TCP标定的时候,我习惯用「四点法」——让机器人以四种不同的姿态去触碰同一个固定点。这样算出来的工具坐标系最准。别问我为什么,试过你就知道了。

1.5 坐标系变换

坐标系之间怎么转换?说白了就是矩阵乘法。

一个点P在坐标系A中的坐标是AP,要转换到坐标系B中:

BP = BTA · AP

其中BTA是一个4×4的齐次变换矩阵,包含了旋转和平移信息。

这个矩阵长这样:

| R11  R12  R13  tx |
| R21  R22  R23  ty |
| R31  R32  R33  tz |
|  0    0    0    1  |

左上角3×3是旋转矩阵,右上角3×1是平移向量。最后一行永远是[0 0 0 1],这是齐次坐标的规矩。

我刚开始学的时候,总觉得这个矩阵很抽象。后来做实际项目,发现它就是「从一个坐标系看另一个坐标系」的数学表达。你站在世界坐标系里看工具坐标系,工具坐标系的原点在哪、三个轴朝哪——这就是变换矩阵。

关键点:坐标系变换是可逆的。从A到B的变换矩阵,求个逆就能从B回到A。而且变换可以链式传递:工具T世界 = 工具T · T世界

嗯,笛卡尔空间的基础概念就这些。说白了就是:用坐标描述位置,用矩阵描述变换,用坐标系统一参考。这些搞清楚了,后面的运动规划才能顺利进行。


公众号:蓝海资料掘金营,微信deep3321