UNSW Making

RoboDK Learn Module

RoboDK is a powerful simulator for industrial robots and robot programming, which allows you to program robots outside the production environment.

Download RoboDK

Getting Started


What is RoboDK?

RoboDK is an offline programming and simulation software for industrial robots. The simulation software can be used for many manufacturing projects including milling, welding, pick and place, packaging and labelling, palletising, painting, robot calibration and more.

What do we Use RoboDK for?

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

RoboDK will be used to simulation student projects prior to use on the robot. The software allows students to gain a deeper understanding of robotic programming whilst also realising their project. Here the DFL staff can check more complex projects prior to deployment to ensure there are no collision and if there needs to be a change the risk assessment form.

Robots it can support at the DFL

UR Collaborative Robot


Kuka IIWA Robot




KUKA KR 6 700

KUKA KR6 700

ROBODK Interface


RoboDk - Main Menu.png

The main menu gives you access to all the tools available in the software, you can open & save files, edit your station or add in tools and utilities that are not accessible in the toolbar menu.

RoboDK - Toolbar.png

The toolbar is a series of icons that allow you to carry out the most used tools in the software such as creating reference frames, collision checking, adding programs, targets and different movement types and so forth.

robodk tools 1

Open- This button allows you to open any saved projects or access example projects provided by roboDK. File types include .RDK file, .STEP, .STL etc.

Online Library – Opens a new window to the library. This is where you can download your robot into your workspace. The online library also provides a range of objects and grippers

Save - This button allows you to save your station when required. Saves a .RDK

Undo/Redo - Both the undo and redo button allows you to quickly change any mistakes you have made or add elements back in

robodk tools 2

Reference Frame - This button allows you to add in a reference frame. This can be added to the station root or attached to another reference frame. Make sure you have the right section of your program tree selected when adding a reference frame.

Target Frame (CTRL + T) - Add a new target frame for the current robot selected. It is also possible to right click a reference frame or a tool to make them active.

Fit All - Zooms so you can see everything in your station.

Change View - This allows you to toggle between front, top, back, isometric.

robodk tools 3

Normal Mouse Button – Functions normally with no connection to the reference frames.

Mouse button with frames turns on - Move a reference frame by dragging it on the screen (OR hold Alt)

Mouse button with TCP frame turned on - Move a robot TCP by dragging it on the screen (OR hold Alt+Shift)

Check Collisions - will activate or deactivate collision checking. When collision checking is activated, objects that are in a collision state will be displayed in red.

The Collision map allows specifying what object interactions are being checked.

robodk tools 4

Simulation speed - This button sets the simulations speed

Pause - Pause button allows you to pause the simulation of a current program

Python program - Add a python program into the station. Options will include a sample Python program/macro/script/module in the station that links to the RoboDK API. A Python program using the RoboDK API allows creating robot programs from generic programming code (Python). It is possible to deploy these programs for any specific robot controller.

Add Program - Adds a saved program linked to the robot

robodk tools 5

MoveJoint Instruction - Add a new joint movement instruction

MoveLinear Instruction - Add a new linear movement instruction

MoveCircular Instruction – Add a new Circular movement instruction, this movement requires two target frames to create this movement type.

Timer Icon- Adds a wait a pause in the program

Calls or references to a set program

I/O Button - Sets an output or wait for an input, this could be from a sensor or a gripper

Offline Action - This button adds an event that occurs only offline - used for simulation purposes

Station / Program Tree

RoboDk - station Tree.png

The program tree can be seen in the left-hand corner of the workspace. This is where all the information of each program is stored, including the robot and gripper, world coordinates, all reference and target frame and any programming of movements that could be exported to the robot. This tree also shows the relationship between each object and reference frame within the project.


This is the workspace where you are able to create, edit, simulate, test and export your robotic programming. Here you can physically move frames and object into the correct position or use the corresponding tools to do so.

RoboDK - WorkSpace.png

View Robot, Object and Reference Frame Panel

If you double click on the robot, object or reference frame in the station/program tree you will bring up the configuration panel. For example, in the image below we can see the robot panel. Here we are able to jog the robot in cartesian frames by exact values.

RoboDk - Confirguation Panel.png

The Cartesian Jog section displays all the information related to the robot kinematics:

The Tool Frame (TF) with respect to the Robot Flange (FF) defines where the selected Tool Frame is located with respect to the Robot Flange. The Robot Flange is always the same, however, the Tool Frame changes depending on the tool that is mounted on the robot. The Robot Tool is also known as the TCP (Tool Center Point). The Selected Tool becomes the “Active” tool. The active tool is used when creating new targets and programs.

The Reference Frame (RF) with respect to the Robot Base (BF) defines where the Reference frame is located with respect to Robot Base Frame. The Robot Base Frame never moves, however, different Reference Frames can be used to position any objects with respect to the same Robot Base Frame.

The selected reference frame in the robot panel becomes the “Active” reference frame. The active reference frame is used as a reference for new targets and robot programs.

Using RoboDK


Define a TCP

The Tool Centre Point (TCP) is the point used to move the robot to a Cartesian position (Waypoint, reference frame etc). The TCP is defined as a transformation from the robot flange. Defining the TCP is crucial in any robot application and must also be defined when creating an offline program for later use.

To do this you can click on the utility’s menu in the main menu and click on the Define Tool Frame Option. This will open a new menu where you can calibrate your TCP via the 4 point method as you would on the teaching pendant of your robot.

You need to pick whether you are using poses or joint positions and ensure that you have the right robot selected.

Define TCP.PNG

Set Up a Station and Program

First, open RoboDK and select file > New Station OR (CTRL + N) to start a new project.

Select the robot that you will be using from the Online Library. You can do this by clicking the world icon in the toolbar OR (CRTL+ SHIFT + O). This will bring up a nested window. Use the filters to identity the robot you are using from brand, reach, payload etc. Download the Robot & it will appear in your workstation.

It is recommended to model and import all objects required for your simulation before you start programming. This could be inclusive of the mounting table or unit, the Workspace items, and the tools you will be using. Each object in your workspace should be attached to a reference frame.

Add a reference frame by using the icon in the toolbar or select the program tab > Add Reference Frame.

To add an object you can use the file > Open button and select the object you want to import OR you can drag and drop from your folder directly into the workstation.

In the station tree, drag and drop your object into the correct reference frame. it is important to place the object nested in the reference frame to teach the targets with respect to the object. Then, if the reference frame is moved the targets are moved together with the object.

When your objects are nested you can double click to bring up the Reference Frame panel to move your objects into the correct position via the cartesian jogging system.

Creating an End-effector for your robot is the same as objects, you can import custom models developed in other software, OR alternatively you can use Robotiq grippers that can be found in the robot library (Filter for the brand name).


When modelling custom tools or end-effectors, the connection point to the robot flange MUST BE CENTRED AT 0,0,0 (origin) in the modelling software to ensure accurate mounting into the robotic flange in roboDK.

Now you have your station developed with your workspace and objects imported with references frames you can start to set up target frames for your program. Robot positions are recorded as Targets. A Cartesian target defines the position of the tool with respect to a coordinate system. A Joint target defines the position of the robot given robot joint values.

Follow these steps to create two targets as a new home target and approach target respectively:

  • Double click the robot to show the robot panel > Select your end-effector frame as the tool frame > This should show the “active” button as a green dot in your program tree.
  • Select the corresponding frame as the reference frame
  • You can now use the ALT key to drag the robots TCP to a position or use the coordinate system provided in the robot panel.
  • Select Program Menu > Teach Target OR click the icon in the toolbar OR (CTRL+T)
  • Rename this frame by clicking F2 or Right Click the Target in the program tree > Rename. The names are important to remember each step of the program (Similar to a waypoint for Universals or a Frame for KUKA).

Repeat this process until you have all the required target frames for your program.

Creating a Program

Important: In ROBODK an organised way to create robotic program is to create separate subprograms for each step of the project. This way blocks of code can be called open multiple times without having to redo the movements. We recommended planning out your steps on a piece or paper prior to starting or creating pseudo code to break down your robotic program into the most important steps. In the image below you can see three sub drawings and then the main program calling upon the subprograms.

The code specific to a robot controller will be generated automatically when the program is generated. Create a Program by, clicking 'Program Menu > Add Program' OR use the program icon in the toolbar.

Select the program in the station/program tree and click F2 to rename.

From here we can add program instruction such as movement types, wait commands or set I/O commands.

roboDk Program

Move Commands

Starting with Move Instructions we can > Select the target frame in the station tree > Right click the program > Click Add Instruction > Click a MoveJoint or MoveLinear. This will add a movement command that is referenced to the target frame.

Note: Make sure you add movements in the correct order of your desired program. If not this can be change by right clicking on the 'Move' instruction and selecting target linked and picking the correct option from the drop down menu.

Robodk move program

Wait Command

To Add in a Wait Command click the program menu -> click pause instruction OR click the pause icon in the toolbar.

This adds a pause in the program between the move instructions. You can right click and modify the time (Milliseconds) OR click the pause in the program tree and click F3 to change the time.

wait command.png

Message Pop-Up Command

You can have a message printed onto the teaching pendant at a certain point in a program.

To add a message pop up click the program menu -> show message instruction OR click the message instruction icon in the TOOLBAR.

This automatically prompts a text box for you to type your message into.

You can modify this message by right clicking it in the program tree OR selecting it and clicking F3

message pop up.png

Program calling upon command

This command allows you to call on programs you have created (individual steps) or insert python code (This could be to control mechanism like the gripper to open and close) into your main program. Use the drop-down menu to:

Call a program

Insert Code (python)

Insert a thread

Insert a comment

insert code.png

Set or Wait I/O command

The I/O command allows you use inputs and outputs from sensors or external devices in your robotic programming. This tool can be found under the program menu or in the toolbar. In the program tree > right click the command and click modify OR click F3 on your keyboard. Here you can set whether you are setting a digital /analog output OR waiting for a digital input (example : A sensor). Ensure the I/O name and value is matching that on your robot controller.

manage io.png

Offline Programming

Once you have finished your program:

Firstly ensure that you have set up the right post processor for your program. This should be done automatically when picking your robot in the library. If not, right click on your main program and select Select Post Processor

You can export any program individually or the main program including the subprograms:

  1. Right click a program (MainProg for example).
  2. Select Generate robot program (F6). Alternatively, select Generate robot program… to specify the location to save the file.
  3. The SCRIPT program for UR robot will be displayed in a text editor
  4. Save the generated URP file(s) to a USB memory disk.
  5. Connect the USB memory disk to the robot teach pendant (UR’s Polyscope)
  6. On the robot teach pendant: Select the Run tab
  7. Select Load Program and load the program generated from RoboDK
  8. Select the Program tab and select the Play button to start it

Online Programming can be found in the RoboDK Advanced Learn Module

offline programming

What is a Post Processor?

Post Processors are a key step in offline programming because they can generate robot programs for a specific robot controller. Robot programming must follow vendor-specific programming rules, these rules are implemented in the post processor. A robot post processor defines how robot programs must be generated for a specific robot controller.

One post processor is a PY file (each post processor is defined by a Python script). It is possible to manually add, modify or delete the files in the Posts folder of RoboDK. If you have been provided a RoboDK post processor (PY file) it should be placed in the 'Posts' folder so that it can be selected from RoboDK. C:\RoboDK\Posts