ABB机器人常见使用的坐标系,包括世界坐标系,Base坐标系,工具坐标系及工件坐标系。示教器中的“手动操纵”界面表示的位姿通常为当前工具TCP在当前工件坐标系下的位姿。工件坐标系又有用户坐标系(uframe)和对象坐标系(oframe)构成,uframe基于wobj0,oframe基于uframe。实际使用时,表示的位姿是基于oframe的。为便于轨迹/点位的整体偏移,ABB机器人在执行代码时,还有一个位移坐标系(Displacementcoordinate system)。该坐标系基于工件坐标系中的对象坐标系(oframe)。实际上,位移坐标系就是对oframe(对象坐标系)的一个右乘。 要开启位移坐标系,可以使用语句PDsipSetPose1语句。即使用该语句后,后面的所有的运动指令在执行时,都会在当前oframe下再做一个基于oframe的偏移和旋转(Pose1)(在oframe基础上做一个右乘Pose1)。 例如要在当前工件坐标系workobject_1下,令轨迹path2沿着工件坐标系的y方向偏移200mm(图 1‑67),可以使用如下代码: 图 1‑67 PROC main() VAR pose pose1:=[[0,0,0],[1,0,0,0]]; path2; !原始轨迹 pose1.trans:=[0,200,0]; PDispSet pose1; !设定基于当前工件坐标系的y方向偏移200并开启 path2; PDispOff; !关闭偏移 ENDPROC
PROC path2() reg1:=30; MoveL p3000,v100,fine,mytool\WObj:=Workobject_1; set DO10_1; MoveL offs(p3000,reg1,0,0),v100,fine,mytool\WObj:=Workobject_1; MoveL offs(p3000,reg1,reg1,0),v100,fine,mytool\WObj:=Workobject_1; MoveL offs(p3000,0,reg1,0),v100,fine,mytool\WObj:=Workobject_1; MoveL offs(p3000,0,0,0),v100,fine,mytool\WObj:=Workobject_1; reset DO10_1; ENDPROC 例如要在当前工件坐标系workobject_1下,令轨迹path2绕着工件坐标系的z方向旋转45°(图 1‑68),可以使用如下代码。即在第二遍执行轨迹path2时,位移坐标系(Displacementcoordinate system)基于workobject_1的oframe的z轴旋转了45°,轨迹起点p3000随着位移坐标系移动了空间p3000’的位置。PROC main() VAR pose pose1:=[[0,0,0],[1,0,0,0]]; path2; pose1.trans:=[0,0,0]; pose1.rot:=OrientZYX(45,0,0); !设置位移坐标系为绕工件坐标系的z轴旋转45° PDispSet pose1; !开启位移坐标系 path2; PDispOff; !关闭位移坐标系 ENDPROC
PROC path2() reg1:=30; MoveJ p3000,v100,fine,mytool\WObj:=Workobject_1; set DO10_1; MoveL offs(p3000,reg1,0,0),v100,fine,mytool\WObj:=Workobject_1; MoveL offs(p3000,reg1,reg1,0),v100,fine,mytool\WObj:=Workobject_1; MoveL offs(p3000,0,reg1,0),v100,fine,mytool\WObj:=Workobject_1; MoveL offs(p3000,0,0,0),v100,fine,mytool\WObj:=Workobject_1; reset DO10_1; ENDPROC
|