你是怎么回原点的呢?(三)
Q:为什么要写机器人回原点的程序?
A:1.项目实施地现场环境复杂,特别是装配、打磨等应用中,机器人需要将末端夹具伸入产品内移动,当前任务终止后需开始新的任务,是需要退出来再重新开始的。
2.客户现场的操作员,对机器人的操作水平落差较大,更多的是不会操作机器人示教器的。
3.机器人自动/半自动回原点能够一定程度上保证安全路径上,不造成产品和物料损失。
Q:什么是机器人回原点?
A:机器人通过人为调用程序或者复位操作,自动从当前位置以安全的方式和路径回到原点。
Q:怎么做机器人回原点?
A:通过程序判断,执行动作;
判断是否与关键点重合
实现步骤:
分析并记录机器人运动关键点;
获取当前机器人位置数据;
将机器人当前位置与关键点数据进行对比;
若机器人在关键点附近,则根据提前规划好的路径回原点;
例如:
//读取当前位置
ActualPos:=CRobT(\Tool:=Gripper\WObj:=wobj0);
//判断是否与ZT1FrontPoint1重合
IF bCurrentPos(ZT1FrontPoint1,Gripper) THEN
MoveL PickZT1MidPoint,GoHomeSpeed,z200,Gripper\WObj:=wobj0;
MoveJ HomePoint,GoHomeSpeed,fine,Gripper;
//判断是否与PickZT1MidPoint重合
ELSEIF bCurrentPos(PickZT1MidPoint,Gripper) THEN
MoveL PickZT1MidPoint,GoHomeSpeed,z200,Gripper\WObj:=wobj0;
MoveJ HomePoint,GoHomeSpeed,fine,Gripper;
//判断是否与MidPoint重合
ELSEIF bCurrentPos(MidPoint,Gripper) THEN
MoveJ MidPoint,GoHomeSpeed,z200,Gripper\WObj:=wobj0;
MoveJ HomePoint,GoHomeSpeed,fine,Gripper;
ELSE
TPWrite 'NO way go home point';
EXIT;
ENDIF
附送福利:分析一波对比点位程序。
FUNC bool bCurrentPos(robtarget ComparePos,INOUT tooldata TCP) ! Function to compare current manipulator position with a given position VAR num Counter:=0; VAR robtarget ActualPos; //读取当前位置 ActualPos:=CRobT(\Tool:=TCP\WObj:=wobj0); //对比X方向,当前位置是否在目标点±25mm内 IF ActualPos.trans.x>ComparePos.trans.x-25 AND ActualPos.trans.x<ComparePos.trans.x+25 Counter:=Counter+1; //对比Y方向,当前位置是否在目标点±25mm内 IF ActualPos.trans.y>ComparePos.trans.y-25 AND ActualPos.trans.y<ComparePos.trans.y+25 Counter:=Counter+1; //对比Z方向,当前位置是否在目标点±25mm内 IF ActualPos.trans.z>ComparePos.trans.z-25 AND ActualPos.trans.z<ComparePos.trans.z+25 Counter:=Counter+1; //对比q1方向,当前位置是否在目标点±25mm内 IF ActualPos.rot.q1>ComparePos.rot.q1-0.1 AND ActualPos.rot.q1<ComparePos.rot.q1+0.1 Counter:=Counter+1; //对比q2方向,当前位置是否在目标点±25mm内 IF ActualPos.rot.q2>ComparePos.rot.q2-0.1 AND ActualPos.rot.q2<ComparePos.rot.q2+0.1 Counter:=Counter+1; //对比q3方向,当前位置是否在目标点±25mm内 IF ActualPos.rot.q3>ComparePos.rot.q3-0.1 AND ActualPos.rot.q3<ComparePos.rot.q3+0.1 Counter:=Counter+1; //对比q4,当前位置是否在目标点±25mm内 IF ActualPos.rot.q4>ComparePos.rot.q4-0.1 AND ActualPos.rot.q4<ComparePos.rot.q4+0.1 Counter:=Counter+1; RETURN Counter=7;ENDFUNC
END
赞 (0)