Offline Programming
with RoboDK

Easily simulate and program industrial robots using an intuitive and user-friendly interface. You can click and drag object to create your layout and program your robot.

Programming experience is not required.

Offline Programming

Offline Programming (or Off-Line Programming) means programming robots outside the production environment. Offline Programming eliminates production downtime caused by shopfloor programming. Simulation and Offline Programming allows studying multiple scenarios of a robot work cell before setting up the production cell. Mistakes commonly made in designing a work cell can be predicted in time.

Offline Programming is the best way to maximize return on investment for robot systems and it requires appropriate simulation tools. The time for the adoption of new programs can be cut from weeks to a single day, enabling the robotization of short-run production.

Robotics API

Get full access to the RoboDK API, the most advanced API for programming industrial robots.

With the RoboDK API you can simulate and program any industrial robot using your preferred programming language and development environment.

The RoboDK API is available for Python, C#/.Net, C++ and Matlab .

Post Processors

Once your simulation produces the desired effect you can generate your robot programs offline with just 2 clicks (Offline Programming).

RoboDK post processors include support for more than 40 robot manufacturers.

As an example, the following program will be generated for an ABB robot.

Robot Offline Programming result for an ABB IRC5 robot controller:

MODULE MOD_HexagonPath

PROC HexagonPath()
  ! Program generated by RoboDK for ABB IRB 1600ID-4/1.5
  ConfJ \On;
  ConfL \On;
  tl.tframe:=[-4,0,371.3],[0.92387953,0,0.38268343,0];
  MoveJ [[1010.6,-114.4,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
  MoveL [[810.6,-114.4,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
  MoveL [[910.6,58.7,662.2],[0,0,1,0],[0,-1,0,0],ex],sp,z1,tl;
  MoveL [[1110.6,58.7,662.2],[0,0,1,0],[0,-1,0,0],ex],sp,z1,tl;
  MoveL [[1210.6,-114.4,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
  MoveL [[1110.6,-287.6,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
  MoveL [[910.6,-287.6,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
  MoveL [[810.6,-114.4,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
  Program_Done;
  MoveL [[1010.6,-114.4,662.2],[0,0,1,0],[-1,0,-1,0],ex],sp,z1,tl;
ENDPROC
ENDMODULE

Program example using the RoboDK API

# Draw a hexagon around Target 1
from robolink import *    # RoboDK's API
from robodk import *      # Math toolbox for robots
 
# Start the RoboDK API:
RDK = Robolink()
 
# Get the robot (first robot found):
robot = RDK.Item('', ITEM_TYPE_ROBOT)
 
# Get the reference target by name:
target = RDK.Item('Target 1')
target_pose = target.Pose()
xyz_ref = target_pose.Pos()
 
# Move the robot to the reference point:
robot.MoveJ(target)
 
# Draw a hexagon around the reference target:
for i in range(7):
    ang = i*2*pi/6 # Angle = 0,60,120,...,360
    R = 200        # Polygon radius
    
    # Calculate the new position:
    x = xyz_ref[0] + R*cos(ang) # new X coordinate
    y = xyz_ref[1] + R*sin(ang) # new Y coordinate
    z = xyz_ref[2]              # new Z coordinate
    target_pose.setPos([x,y,z])
    
    # Move to the new target:
    robot.MoveL(target_pose)
 
# Trigger a program call at the end of the movement
robot.RunInstruction('Program_Done')
 
# Move back to the reference target:
robot.MoveL(target)