第1章:坐标系与运动学——机械臂的“世界观”与“运动逻辑”

各位工程师朋友,大家好。我是你们这门课的老朋友。

咱们今天聊点最基础,但也最要命的东西——坐标系和运动学。你想想看,一台机械臂,它怎么知道自己的手在哪儿?怎么知道要去抓的那个杯子在哪儿?说白了,就是靠坐标系给它“定位”,靠运动学给它“指路”。

我刚开始带项目那会儿,就吃过坐标系的亏。有一次调试一个码垛程序,机器人死活抓不准,后来发现是工具坐标系标定错了,偏差了2毫米。嗯,就这2毫米,让我和团队折腾了一整天。从那以后,我对坐标系的理解就刻到骨子里了。

核心观点:坐标系是机械臂的“世界观”,运动学是机械臂的“运动逻辑”。不懂这两样,调参就是瞎调。

1.1 世界坐标系——机械臂的“参考系”

世界坐标系,你可以把它想象成整个机器人工作区域的“大地基准”。它通常固定在机器人底座或者车间地面上,是一个固定不动的笛卡尔坐标系。

为什么要搞这么个东西?因为机械臂的各个关节、末端执行器、工件,它们的位置都需要一个统一的“尺子”来量。世界坐标系就是这把尺子。

  • 原点:通常设在机器人底座中心或用户自定义的固定点。
  • 轴方向:一般遵循右手定则,Z轴向上,X轴指向机器人前方。
  • 作用:所有其他坐标系(工具、工件)最终都要映射到世界坐标系下。

我的经验:我个人习惯把世界坐标系的原点设在机器人底座正中心的地面上。这样,后续所有工件的坐标都是正数,看着清爽,调试也方便。你试试看,省心。

1.2 工具坐标系——机械臂的“手”在哪儿?

世界坐标系是“大地”,那工具坐标系就是机械臂的“手”。

机械臂的法兰盘(最后一个关节的安装面)有一个默认的坐标系,叫法兰坐标系。但咱们实际干活时,法兰盘上要装夹爪、焊枪、吸盘等等。这些工具的尖端(TCP,Tool Center Point)才是真正干活的位置。

工具坐标系,就是用来描述TCP相对于法兰坐标系的位置和姿态的。

注意:工具坐标系标定不准,是抓取不准的头号元凶。我曾经见过一个项目,工程师用默认的工具坐标系去抓一个精密零件,结果每次都偏0.5mm。后来重新标定TCP,问题立刻解决。所以,别偷懒,一定要标定。

标定TCP的方法有很多,最常用的是“四点法”或“六点法”。简单说,就是让机械臂以不同的姿态去触碰空间中的一个固定尖点,然后通过算法反算出TCP的位置。

// 伪代码示意:四点法标定TCP
// 让机械臂以4种不同姿态触碰同一个固定点
Pose1 = [x1, y1, z1, rx1, ry1, rz1]
Pose2 = [x2, y2, z2, rx2, ry2, rz2]
Pose3 = [x3, y3, z3, rx3, ry3, rz3]
Pose4 = [x4, y4, z4, rx4, ry4, rz4]

// 通过最小二乘法求解TCP偏移量
TCP_Offset = SolveLeastSquares(Pose1, Pose2, Pose3, Pose4)

1.3 工件坐标系——工件在哪儿?

有了世界坐标系(大地),有了工具坐标系(手),那工件在哪儿呢?这就轮到工件坐标系登场了。

工件坐标系是定义在工件上的坐标系。它让编程变得极其方便。你想想看,如果工件放在传送带上,或者每次摆放位置有微小偏差,你总不能每次都重新示教所有点位吧?

有了工件坐标系,你只需要在工件上定义一个坐标系,然后所有的抓取点、放置点都相对于这个坐标系来编程。当工件位置变了,你只需要重新标定一下工件坐标系,所有程序点位自动跟着偏移。

说白了:工件坐标系就是给程序加了一个“可移动的参考系”。移动工件,只需更新工件坐标系,程序不用改一个字。

坐标系类型 固定/移动 典型用途 标定频率
世界坐标系 固定 全局基准,机器人底座 安装时一次
工具坐标系 固定于工具 定义TCP位置 更换工具时
工件坐标系 可移动 定义工件位置 工件位置变化时

1.4 正运动学——我知道关节角度,就知道手在哪儿

好,坐标系讲完了,咱们聊聊运动学。运动学分两种:正运动学和逆运动学。

正运动学,就是“已知关节角度,求末端位姿”。

你给机械臂的每个关节电机发一个角度值,比如关节1转30度,关节2转45度……然后机械臂的末端(TCP)会到达一个特定的位置和姿态。正运动学就是计算这个“特定位置和姿态”的数学方法。

对于六轴机器人,正运动学通常用DH参数法(Denavit-Hartenberg)来建模。每个关节有4个参数:连杆长度a、连杆扭角α、关节距离d、关节转角θ。

// 正运动学计算示例(简化)
// 已知:关节角度 q1, q2, q3, q4, q5, q6
// 已知:DH参数表
// 输出:末端位姿矩阵 T

T = A1(q1) * A2(q2) * A3(q3) * A4(q4) * A5(q5) * A6(q6)

// 其中 Ai(qi) 是第i个关节的齐次变换矩阵
// 最终 T 是一个 4x4 矩阵,包含位置和姿态信息

我的习惯:在实际调试中,我很少手算正运动学。但我会用示教器手动转动每个关节,观察末端位置的变化,来验证我的运动学模型是否正确。这叫“感官验证”,比看公式直观多了。

1.5 逆运动学——我知道手要去哪儿,就知道关节怎么转

逆运动学正好反过来:已知末端要到达的目标位姿(位置+姿态),求各个关节应该转多少度。

这才是实际编程中最常用的。你告诉机器人:“去抓那个杯子”,机器人需要自己算出6个关节的角度,然后驱动电机转过去。

逆运动学比正运动学复杂得多。为什么?因为正运动学有唯一解,而逆运动学可能有多个解,甚至无解。

  • 多解问题:同一个末端位姿,机械臂可能有多种“姿势”到达(比如肘部朝上或朝下)。你需要根据避障、关节限位等条件选择一个最优解。
  • 无解问题:目标点超出了机械臂的工作范围,或者姿态太奇葩,关节转不过去。

避坑指南:我曾经在调试一个焊接程序时,逆运动学一直报错“无解”。查了半天,发现是目标点的姿态定义有问题——我让焊枪指向了一个不可能的角度。后来调整了姿态参数,问题解决。所以,遇到无解,先检查目标位姿是否合理。

1.6 知识体系总览

为了让你更直观地理解这一章的知识结构,我画了一张图。你可以把它当作整个章节的“地图”。

第1章:坐标系与运动学知识体系 机械臂空间描述 坐标系 世界坐标系 工具坐标系 工件坐标系 运动学 正运动学 逆运动学 DH参数法 三者关系:世界坐标系为基准,工具坐标系定义“手”,工件坐标系定义“物” 正运动学:关节角度 → 末端位姿(唯一解) 逆运动学:末端位姿 → 关节角度(多解/无解)

1.7 小结

这一章,咱们把机械臂的“世界观”和“运动逻辑”捋了一遍。

  • 世界坐标系是基准,定大局。
  • 工具坐标系定义手在哪儿,定精度。
  • 工件坐标系定义物在哪儿,定灵活。
  • 正运动学是已知关节求位置,唯一解。
  • 逆运动学是已知位置求关节,多解需选优。

这些概念,是后续所有调优工作的基石。你如果现在觉得有点绕,没关系,多动手在示教器上摆弄几次,自然就通了。我当年也是这么过来的。

可可精品资料库