DoF - a Robotiq Community
Warning sign
The Dof Community was shut down in June 2023. This is a read-only archive.
If you have questions about Robotiq products please reach our support team.

Note : This how-to guide was developed for ABB IRC5 controller and Robotiq 3-Finger Gripper generation 5 (sold in 2012-2013).
Once you have setup all the communication and mapped the gripper I/Os, the Gripper can be programmed by changing the output values according to the input variables. 
Below some procedures/functions are presented as examples to control the Gripper. Please note that these functions/procedures only use the simple control mode (no control options are triggered) and that they are presented as a reference only. 
Module Demo() 
VAR errnum ERRCodeGripper := -1;  

!Example of program using the previously defined procedures 
PROC Main()  

     BookErrNo ERRCodeGripper; 
     !Reset/Activate the Gripper to cancel previous config.   
     !Full speed, full force, pinch mode  
     gripperSpeed 255;  
     gripperForce 255;
     gripperChangeMode 1;  

     !Partial close of  the Gripper (can reduce cycle  
     !time if multiple objects are to be picked up)  
     gripperMove 100;  
     !Approach the object  

     !Move to the pickup position  

     !Gripper full close   
     gripperMove 255; 
     !Verify if the object has been picked up  
     !(Does not work for very small objects)  
     IF(NOT gripperHasObject()) THEN   
        !No object! Do special procedure.   

     !Move the robot to the release location  
     !Fully open the Gripper  
     gripperMove 0;  

     !Move the robot to its home position  


!Reset the Gripper command 
PROC gripperReset()   
     SetGO O_rMOD 0;  
     SetGO O_rPRA 0;  
     SetGO O_rSPA 0;  
     SetGO O_rFRA 0;  
     reset o_rGLV;  
     reset O_rAAC;  
     reset O_rICF;  
     reset O_rICS;  
     reset O_rGTO;  
     reset O_rATR;  
     reset O_rACT;  
     waitUntil(I_gIMC = 0); 

!Activate the Gripper and wait until initialization is over 
PROC gripperActivate()   
     Set O_rACT;  
     waitUntil(I_gIMC = 3); 

!Move the gripper to the specified position 
!and wait until motion is over 
!posRequest = 0   for fully opened 
!posRequest = 255 for fully closed 
PROC gripperMove(num posRequest)  
     !The limits are validated  
     posRequest:= round(posRequest);  
     IF (posRequest > 255) posRequest:=255; 
     IF (posRequest < 0) posRequest:=0; 
     SetGO O_rPRA posRequest;  
     Set O_rGTO; 

     !Wait until the position request echo is OK  
     !and the motion is over.  
     waitUntil (I_gPRA = posRequest and I_gSTA > 0);  

!Operation mode change with the Gripper fully opened 
!mode = {0:Basic, 1:Pinch, 2:Wide, 3:Scissor} 
PROC gripperChangeMode(num mode)  
     IF ((mode <0) or (mode >3) RAISE ERRCodeGripper;  
     gripperMove 0;  
     SetGO O_rMOD mode;  
     !Wait until the mode request echo is OK  
     !and the motion is over.  
     waitUntil(I_gMOD = mode and I_gIMC = 3); 

!Change Gripper Speed (0-255) 
PROC gripperSpeed(num speed)  
     !Validate the limits  
     Speed:= round(speed);  
     If (speed > 255) speed:=255;  
     If (speed < 0) speed:=0;  
     SetGO O_rSPA,speed;
!Change Gripper Force (0-255) 
PROC gripperForce(num force) 
     !Validate the limits  force:= round(force);  
     If (force > 255) force:=255;  
     If (force < 0) force:=0;  
     SetGO O_rFRA, force; 
!Verify if Gripper has an object by verifying if the
!motion as stopped before requested position 
!Small objects might not be detectable with this approach 
FUNC bool gripperHasObject()  
     RETURN ((I_gSTA = 1) OR (I_gSTA = 2)); 

If you want the details on how to integrate the 3-Finger gripper on an ABB robot and how to configure the ABB controller,
check out this discussion.