I have tried to add an error handler for a procedure where a robot picks up items from a conveyor. Since the height of the object is unknown I am using a SearchL instruction, searching for a signal from my Vacuum sensor on the gripper tool.
However, sometimes there is not enough vacuum (often due to debris left on part), then I don’t get any signal from the Vacuum Sensor and the robot has a collision. If this happens I would like to catch this in the error handler but I can’t get it to work.
This is an example code:
PROC PickPart()
MoveL Offs(pPickPart,0,0,250),v1000,z50,tGripper1\WObj:=wConveyor;
MoveL Offs(pPickPart,0,0,50),v1000,z20,tGripper1\WObj:=wConveyor;
VacuumOn;
SearchL\Stop,diGripperSensor1,pSearchHit,pPickPart,v10,tGripper1\WObj:=wConveyor;
MoveL Offs(pPickPart,0,0,50),v100,z10,tGripper1\WObj:=wConveyor;
MoveL Offs(pPickPart,0,0,250),v1000,z50,tGripper1\WObj:=wConveyor;
MoveL pFromPick,v2000,z50,tDefaultTool;
ERROR
IF ERRNO=ERR_COLL_STOP THEN
SkipWarn;
TRYNEXT;
ENDIF
ENDPROC
The problem is the Program Pointer never reaches the Error handler. The robot retracts from the collision and stops with the Motion Supervision error message. When I restart it continues with the SearchL instruction and has another collision.
What am I doing wrong? I have done the same thing in several robots before and gotten it to work. I am using RobotWare 6.15.08. The CollisionErrorHandler is enabled in the system parameters.
Thanks in advance!