3. 机器人运动学基础与路径表达

在 RobotStudio 中做路径优化,第一步不是调速度,而是把“机器人到底在哪里、朝哪个方向”这件事说清楚。机器人运动学提供了两套描述方式:一套是控制器内部真正执行的关节空间,另一套是工程师习惯使用的笛卡尔空间。路径优化本质上是在这两套空间之间做取舍——笛卡尔空间里直线好看,但关节空间里运动才真正可行。

关节空间:控制器直接执行的语言

一台六轴工业机器人有 6 个旋转关节,每个关节对应一个角度值。以常见的 IRB 2600 类机型为例,关节 1 到关节 6 的角度范围大致为:J1 ±180°、J2 −95°~+155°、J3 −180°~+75°、J4 ±200°、J5 ±120°、J6 ±400°。控制器下发的运动指令,最终都会转换成这 6 个角度随时间变化的曲线。

关节空间路径的表达形式是 robtarget 中的 robconf 与各轴角度,或直接使用 MoveAbsJ 指令给出 6 个角度。它的优点是:不会出现奇异点、不会超出工作空间、运动学求解一定成功;缺点是:末端在笛卡尔空间里走的轨迹是弯曲的,无法保证直线或圆弧。

! 关节空间绝对运动示例(角度单位:度)
MoveAbsJ [[0,0,0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]], v1000, fine, tool0;
MoveAbsJ [[30,-20,15,0,45,0],[9E9,9E9,9E9,9E9,9E9,9E9]], v500, z10, tool0;

笛卡尔空间:工程师描述任务的语言

笛卡尔空间用位置 (x, y, z) 和姿态 (rx, ry, rz 或四元数) 描述末端工具中心点(TCP)在某一坐标系下的状态。RobotStudio 中 robtarget 的 trans 是位置,rot 是姿态,robconf 是轴配置,extax 是外部轴。例如:

CONST robtarget pPick :=
  [[500, 200, 400], [0.7071, 0, 0.7071, 0], [0,0,0,0], [9E9,9E9,9E9,9E9,9E9,9E9]];
! trans = (500,200,400) mm;rot 为四元数,表示绕 Y 轴 90°

笛卡尔空间路径用 MoveL(直线)、MoveC(圆弧)、MoveJ(关节插补但目标点用笛卡尔描述)表达。它的优点是轨迹直观、便于与 CAD 对齐;缺点是可能遇到奇异点、超出关节限位或不可达。

位姿描述:位置 + 姿态 + 配置

一个完整的位姿描述包含三部分:位置(TCP 在参考坐标系中的坐标)、姿态(工具坐标系相对参考坐标系的旋转)、轴配置(robconf,即 cfx、cfy、cfz、cf4 四个值,用于区分同一笛卡尔位姿对应的多种关节解)。

姿态常用四元数 [q1, q2, q3, q4] 表示,RobotStudio 也支持欧拉角输入。四元数避免了万向锁问题,但可读性差;欧拉角直观,但接近 ±90° 时会出现奇异。实际编程中,建议用 RobotStudio 的示教器或“修改位置”功能自动生成四元数,不要手算。

轴配置 robconf 是路径优化中最容易被忽略的字段。同一个笛卡尔点,机器人可能有 8 种关节解(肩前/肩后、肘上/肘下、腕翻转/不翻转)。如果两个相邻路径点的 robconf 不一致,机器人会在中间发生大幅关节跳变,表现为“突然甩腕”。优化时优先检查 robconf 是否连续。

坐标系:路径表达的参照基准

RobotStudio 中常见的坐标系层级为:世界坐标系 → 基坐标系 → 工件坐标系(wobj)→ 工具坐标系(tool)。路径点通常定义在工件坐标系下,TCP 位置由工具坐标系决定。优化路径前必须确认:robtarget 引用的 wobj 和 tool 是否正确,否则所有坐标都会偏移。

例如,焊接任务中工件坐标系定义在夹具上,工具坐标系定义在焊枪末端。如果 tool0 被误用为焊枪工具,TCP 会偏离焊丝端点几十毫米,路径精度完全失效。

路径点定义与运动指令选择

路径点不是孤立的坐标,而是带有运动方式、速度、转弯区数据的完整指令。RobotStudio 中常用指令对比如下:

指令空间轨迹典型用途
MoveAbsJ关节空间关节插补回原点、换枪、避障
MoveJ关节空间关节插补大范围快速移动
MoveL笛卡尔空间直线焊接、涂胶、直线切割
MoveC笛卡尔空间圆弧圆弧焊缝、倒角

转弯区数据 fine、z10、z50 决定路径点是否精确到达。优化时,非关键点用 z 值让机器人圆滑过渡,关键点用 fine 保证精度。但 z 值过大会导致轨迹偏离工件,需要结合 TCP 速度和路径曲率判断。

关节空间与笛卡尔空间路径表达关系 关节空间 (Joint Space) J1 J2 J3 J4 J5 J6 角度值 例:[30, -20, 15, 0, 45, 0] MoveAbsJ / MoveJ 关节插补,轨迹为曲线 优点:无奇异、必可达 缺点:末端轨迹不可控 风险:关节跳变、腕部翻转 检查 robconf 连续性 优化重点:速度、加速度、平滑 避免关节限位与奇异 正运动学 逆运动学 笛卡尔空间 (Cartesian Space) 位置 (x, y, z) + 姿态 (q1~q4) 例:(500,200,400) + 四元数 MoveL / MoveC 直线/圆弧插补,轨迹可控 优点:轨迹直观、易对齐 CAD 缺点:可能奇异、不可达 风险:奇异点、关节超限 检查 robconf 与可达性 优化重点:路径精度、转弯区 避免碰撞与超程 坐标系链:世界 → 基座 → 工件(wobj) → 工具(tool) → TCP | 路径点必须明确引用 wobj 与 tool

路径点定义的实际操作要点

在 RobotStudio 中定义路径点,通常有三种方式:示教、从 CAD 导入、离线生成。无论哪种方式,都要检查以下字段:

  • trans:TCP 位置,单位 mm,注意是否与工件坐标系一致。
  • rot:姿态四元数,检查是否与工艺要求的方向一致。
  • robconf:轴配置,相邻点必须连续,否则会出现关节跳变。
  • extax:外部轴位置,有变位机或导轨时必须填写。

一个常见的优化动作是:把连续 MoveL 路径中的非关键点转弯区从 fine 改为 z20 或 z50,同时保持关键点 fine。这样可以在不损失精度的前提下,把节拍缩短 10%~20%。但要注意,转弯区过大会导致拐角处轨迹“切内角”,对于焊接和涂胶这类要求轨迹贴合的场景,需要根据 TCP 速度和路径夹角计算允许的偏差。

不要盲目把所有点都改成 z 值。对于需要精确到达的抓取点、焊接起弧点、涂胶端点,必须使用 fine。判断依据是:该点是否要求 TCP 精确停止或精确经过。如果只是过渡点,才考虑用转弯区优化。