Robot programming

The general ABB robot programming language is called RAPID. A complete new way of programming ABB robots is called Wizard. For editing, testing and simulation RobotStudio is used.


ABB uses a high level programming language for programming its robots called RAPID. There are more robot manufacturers using high level programming languages but when I asked one of our robotic partners what they see as differentiator they told me that ABB has a very rich programming language and that they so do not have to spent time on developing functions themselves. As an example I mention that the RAPID software contains 11 Trigg functions to carry out an action during motion of the robot between two points. See below.

TriggC                    Circular robot movement with events

TriggCheckIO      Defines IO check at a fixed position

TriggEquip           Defines a fixed position and time I/O event on the path

TriggInt                 Defines a position retated interrupt

TriggIO                  Defines a fixed position or time I/O event near a stop point

TriggJ                    Axis-wise robot movement with events

TriggL                    Linear robot movement with events

TriggLIOs              Linear robot movement with I/O events

TriggRampAO     Defines a fixed position ramp AO event on the path

TriggStopProc     Generate restart data for trigg signals at stop

TriggSpeed          Defines TCP speed proportional analog output with fixed

                                position-time scale event

It is not a coincident that I mention the Trigg function. It is for instance used to control grippers and so let a robot move like a sewing machine and this speed independent. See as an example the small RAPID program and explaining picture.

MODULE CalibData

    PERS tooldata Gripper:=[TRUE,[[0,0,69.7],[0,1,0,0]],[0.2,[0,0,20],[1,0,0,0],0,0,0.00014]];

    PERS wobjdata WO_Place:=[FALSE,TRUE,””,[[-76.957,318.869,-1141],[0.978,-0,0,-0.207]],[[0,0,0],[1,0,0,0]]];

    PERS wobjdata WO_Pick:=[FALSE,TRUE,””,[[-288.460,-156.174,-1141],[0.978,-0,0,-0.207]],[[0,0,0],[1,0,0,0]]];


MODULE Module1

    CONST robtarget Target_Place:=[[200,-60,11],[1,0,0,0],[0,0,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

    CONST robtarget Target_Pick:=[[200,60,11],[0.7071067,0,0,0.7071067],[0,-1,0,0],[9E9,9E9,9E9,9E9,9E9,9E9]];

    CONST speeddata v10000:=[10000,1000,0,0];

    PERS loaddata Product:=[0.01,[0,0,0.005],[1,0,0,0],0,0,0];

    VAR triggdata GripperOn;

    VAR triggdata GripperOff;

    VAR stoppointdata PickTime:=[stoptime,FALSE,[0,0,0,0],0.03,0,””,0,0];

    VAR stoppointdata PlaceTime:=[ stoptime,FALSE,[0,0,0,0],0.05,0,””,0,0];


PROC PickPlace()

    MoveL RelTool (Target_Pick,0,0,90),v10000,z50,Gripper\WObj:=WO_Pick;

    TriggL Target_Pick,v10000,GripperOn,z5\Inpos:=PickTime,Gripper\WObj:=WO_Pick;

    Gripload Product;

    MoveL RelTool (Target_Pick,0,0,90),v10000,z50,Gripper\WObj:=WO_Pick;

    MoveL RelTool (Target_Place,0,0,90),v10000,z20,Gripper\WObj:=WO_Place;

    TriggL Target_Place,v10000,GripperOff,z5\Inpos:=PlaceTime,Gripper\WObj:=WO_Place;

    Gripload Load0;

    MoveL RelTool (Target_Place,0,0,90),v10000,z20,Gripper\WObj:=WO_Place;


PROC main()

    TriggIO GripperOn,0.1\Time\DOp:=DOGripper,1;

    TriggIO GripperOff,0.05\Time\DOp:=DOGripper,0;

    FOR i FROM 1 TO 10 DO





Another rather important differentiator is that the RAPID programs do not have to get compiled. So all programs are open and accessible.


Wizard is the easy, intuitive way to program the following ABB collaborative robots without needing to learn RAPID programming language:

  • Single-arm Yumi (IRB 14050)
  • Swifti (CRB 1100)
  • GoFa (CRB 15000)

Wizard is based on Google’s Blockly.

Wizard Skill Creator enables you to create your own blocks.

Once a wizard program is completed it is translated to RAPID.

There is no additional cost.


RobotStudio is ABB’s offline programming and simulation tool and runs on a PC.

The tool is build on the ABB virtual controller, an exact copy of the real software that runs your robots in production.

Even the stopping behavior of a robot in RobotStudio corresponds with the one of a real robot.

Even the software running on the FlexPendant in RobotStudio is identical to software running on the real one.