- ABB工业机器人进阶编程与应用
- 陈瞭 肖辉编著
- 613字
- 2022-08-16 16:20:27
1.3.4 工件坐标系计算原理及实现
1.3.3节介绍了如何使用DefFrame函数计算获得坐标系。在ABB工业机器人的示教器中定义坐标系时,默认使用的是“DefFrame(p1,p2,p3\Origin:=3)”的函数,即坐标系原点在点p3到p1p2连线的垂足处。
DefFrame函数返回的是pose类型的数据(位姿数据),即在计算时,要计算坐标系的原点位置(x、y、z)和坐标系姿态。
假设空间3点为p1(x1,y1,z1)、p2(x2,y2,z2)和p3(x3,y3,z3)。由点p3向p1p2连线做垂线,垂足为点p4(x,y,z),p4即为需要求解的坐标系原点(见图1-45)。
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_48_3.jpg?sign=1738856988-ULmjIksG6Sz0pYzgAQNWaH6oU7w39ivc-0-bf745a4442a6002799174ae30f3dde0c)
图1-45 三点计算坐标系
把经过点p1和点p2的空间直线称为L1,可以用式(1-31)表示:
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_48_4.jpg?sign=1738856988-CBFPGYLzBtVdxjAo6CqhiVo0q0GNb7z3-0-095273ce6da9663378c75c6a819df8fc)
由于向量垂直于
,根据向量点积规则,
。
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_48_8.jpg?sign=1738856988-Wo4bGOtcVuDGpEpwhRegy5oGbbEeObg3-0-4d476d51ed9141b0f3ed3e1a03b37f0a)
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_48_9.jpg?sign=1738856988-Xl6EeWG3xJeD7229YK9107uNcjS3rldM-0-bf2f5c6da42b7e441a680f199951e3ce)
为方便书写,记:
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_49_1.jpg?sign=1738856988-RrsEzlvLDB9CP1FSbxAI4ri2y7eyluq3-0-87d7e1a6b3aa7d32e9f54fe35f98fa01)
将式(1-31)和式(1-32)整理为式(1-33):
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_49_2.jpg?sign=1738856988-3O1kD5JpbC0cTCeECK9JOQQUKGb60R8s-0-4f769216e6acb854101e139f39f6856c)
计算式(1-33)即可得到由点p1、p2和p3构成的坐标系原点。RAPID提供求解AX=B的指令“MatrixSolve A,B,X”,计算结果存储于X数组中。MatrixSolve中使用的数据类型为dnum,在调用时可以使用NumToDnum和DnumToNum函数进行转化。
对于坐标系原点姿态,则可以通过向量的叉乘得到,如图1-46及图1-47所示。
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_49_3.jpg?sign=1738856988-oPOf3vMQE3JKhREjEle7eTx7WGc8TRkm-0-32573491bb0a0b6ca60082bb18b15e59)
图1-46 三点计算坐标系姿态
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_49_4.jpg?sign=1738856988-gG9WBZ8D4vRECcBmkyJEEN2A4kkmJgtj-0-92aa1c1fc39ef324e5d50ec7a08b7430)
图1-47 叉乘运算表示
计算过程如下:
(1)向量单位化,得到单位向量
;
(2)向量单位化,得到单位向量
;
(3)向量叉乘向量
,得到单位向量
;
(4)单位向量等于单位向量
叉乘单位向量
;
(5)得到单位向量、单位向量
、单位向量
;
(6)将旋转矩阵转化为欧拉角;
(7)利用OrientZYX函数将欧拉角转化为四元数。
综合以上计算坐标系原点与姿态的介绍,可以编写RAPID代码如下,运算结果与DefFrame(p1,p2,p3\Origin:=3)相同:
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_49_19.jpg?sign=1738856988-Hb3d8XDxGr6Xzvs9RzB2elA648Jd4aqq-0-3e3fb92feffb75b59a0c44ec5f92c89c)
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_50_1.jpg?sign=1738856988-yR85rRgV8iPfWoVABqlQv4zg0vIM5BJ2-0-a0f76fcfa675b62ff6c096876ad2a2e1)
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_51_1.jpg?sign=1738856988-dqcnlJcC41nrI08LtbCreKyq31Xd0lpn-0-58b858ad494d3f253e2653d2c8e2cd6f)
![](https://epubservercos.yuewen.com/315336/23950325101463306/epubprivate/OEBPS/Images/43597_52_1.jpg?sign=1738856988-q6k0KON52C9vuJiaZCgmi0ca4QFuCgGU-0-2541b52c5e5f86425540ed67fae5b6e7)