假设现场有工件坐标系Workobject_1,已知ABB机器人在Workobject_1下的robtarget是p10,若希望计算该点在wobj0下的坐标,可以使用如下方法:
即先将Workobject_1下的p10转化为jointtarget类型jtmp,再将jtmp转化为wobj0下的p0
jtmp:=CalcJointT(p10,tWeldGunWObj:=Workobject_1);
p0:=CalcRobT(jtmp,tWeldGunWObj:=wobj0);
2. 假设wobj0到wobj1.uframe的坐标转化关系为
wobj1.uframe到wobj1.oframe的坐标转化关系为,
p10在wobj1.oframe下的位姿为p10,
其中可用形式的位姿矩阵
来表示,或者用[[px,py,pz],[q1,q2,q3,q4]]的Pose形式来表示。
3. 对于Pose的右乘,可以使用RAPID PoseMult函数,若计算p10在wobj0下的位置p0:
假设pose类型数据pose1等于p10的坐标,假设pose类型数据pose3为p0对应的坐标,
pose1.trans:=p10.trans;
pose1.rot:=p10.rot;
pose3:=posemult(Workobject_1.uframe,Workobject_1.oframe);
pose3:=PoseMult(pose3,pose1);
4. 若已知p0在wobj0下的位置,要计算对应p0在workobject_1下的位置p10,则满足(注意矩阵运算乘法不满足交换律!!!)
其中表示对
的求逆
5. 对于位姿Pose的求逆,RAPID 可以使用PoseInv函数,
假设pose类型数据pose2等于p10的坐标,假设pose类型数据pose4为p0对应的坐标,
pose2:=PoseMult(PoseInv(Workobject_1.oframe),PoseInv(Workobject_1.uframe));
pose2:=posemult(pose2,pose4);