Institute of Robotics and System Dynamics

VRML 2.0 Robot

PUMA 560

Complete source code download
Interactive Robot Manipulation using VRML 2.0

Martin Rohrmeier, Jörg Vogel, Gerd Hirzinger

Check out
our Awards


Moving the Robot

Release Notes

How to run the program:
Step 1: Download the VRML plug-in (Cortona3D Viewer)
Step 2: Enter the Manutec scene here
or select a robot from the table below
(originally, this software has been developed for use with
the SGI CosmoPlayer which is not available any more.
Other VRML clients are not showing the same behavior
under all circumstances, so expect to face some odd
events on certain actions.

Select robotRobot Type
PUMA 560
CosmoPlayer 2.1
CP 2.1 with
Java Applet control
CosmoPlayer 1.0.2
Other Browsers
(very simple)


VRML 2.0 Robot is a robot simulation system, that enables the telemanipulation of real robots via WWW. It provides a detailed graphical model of the robot, that cat be manipulated intuitively using the mouse. Basic features are forward and backward kinematics with various interaction possibilities for motion in joint space or cartesian space. Routes can be programmed and edited, after that the operator can repeat them in different modes. The software also handles the connection and control of various tools.

A lot of benefits can be achieved with this software. Specialized and expensive hard- or software like teach-in-devices are no longer needed. The platform independent design allows engineers to telemanipulate a robot from almost any internet host in the world. The only requirements you need is a VRML plugin installed in your web-browser. Nevertheless the interface is intuitive as only few of the conventional solutions available today. The whole project is based on a strict modular programming concept which makes adapting the program to another type of robot a task of a few minutes.

We are planning to use this VRML interface to let people from all over the world operate one of the KUKA robots in our lab. A commercial application would be teleservicing of industrial robots. Support engineers of a maybe world wide operating manufacturer of robots will continuously monitor their installations around the world. In case of failure they will remotely debug the robot and give their advice.

Please read the master thesis for technical information (only german). For further reading about Telerobotics and VRML see Jörg Vogels VRML and Robotics Library at the DLR.

Moving the Robot

One of our design goals was to build the easiest-to-use interface for robot simulations currently available. With only few exceptions the color yellow indicates possible user interaction. Most of the buttons reveal their functionality immediately when used. If you are not sure just try it out with your mouse and see what happens. The use of language became almost superfluous, thus there is no need for a translation to use this application in different countries. Nevertheless we recommend you to read this lines first.

Before you start we want to explain a few basic terms for those of you who aren't familiar with robotics. Nobody really wants to have an industrial robot. People just have heavy tools that should be moved precisely. The robot itself is nothing more than a tool to handle another one. The point of interest is always the Tool Center Point (TCP) which is where the tool should do something - for example the tip of a screwdriver. There are two basically different ways to move this TCP. The easy one is to set the value of one or more joints and watch how the end of the arm moves. But you will see that in this case it is very difficult to position the tool exactly where you want to have it, especially when the robot only has rotation joints. An engineer would say, you are guiding the robot in Joint Space.

Much more comfortable it is when you just set the tool's position and orientation and let the robot arm follow to the destination point automatically. Robotics people call this Motion in Cartesian Space. To achieve this the so called Inverse Kinematics has to be calculated whenever the TCP should move. The result you get are all the the joint values required to reach this new position. Now you can set all joints simultaneously and find the tool correctly placed.

Sometimes you want to program a certain route which should be repeated several times. These routes are called Trajectories. Normally they are defined by series of Teach-Points. The robot can follow the trajectory by always interpolating between one tech-point ond the next one. Here again you have two possibilities. Either the joint values are interpolated - when only the next point should be reached - or exactly the line between two points which means that the inverse kinematics must be calculated for each increment during the motion. Even more complicated it gets when you want to avoid abrupt direction changes using spline interpolation. This last feature is not implemented in this program, yet.

Joint Space Motion

To move KUKA in joint space simply click on the robot arm where you want to move it and drag the mouse. The according joint will then rotate around its axis.

Cartesian Space Motion

When you are moving the robot, you are always referring to the Tool Center Point (TCP). It is surrounded by a transparent yellow control element for intuitive manipulation in cartesian space.
Rotate the inner sphere to change the orientation of the tool coordinate system.
Drag the outer disc to change the tool's position. The position changes within a plane that always faces your current viewpoint. Choose another viewpoint to move the arm in another direction.
At the central coordinate axes there are yellow pointers mounted, each one pointing along one axis. Click on these to align the z-axis of the tool with the desired axis.


At the bottom of the screen you can see some buttons for viewpoint-independent control.
The red cone is a link back to this page. You can iconize the whole panel when you click on the yellow cube
A click on this button switches the control element on or off.
Rotate this sphere to change the orientation of the tool coordinate system. The positive z-axis is pointing towards the user.
The three discs let you change the orientation of the tool around fixed axes. The sphere in the center is a switch. When it is yellow, the tool rotates around the world coordinate axes. When it is red, the axes of the local tool coordinate system are used.
Drag the disc and the robot-arm moves around in the x/y-plane of its current workspace (i.e. grinding).
The arrow makes the arm move along its z-axis (i.e. screwing). While holding the mouse button down, the possible directions are shown near the TCP.
This button will bring up the interaction panels described below. Hit again to close them.


Now there are trajectory programing features in a separate panel. You can drag each panel to any position on the screen.
In the edit area you can add, change or delete teach-points. The two rectangular buttons are most important. Click on the left one to add the current working position as the next route point. A marker will appear to indicate its position. To delete the whole route, press the right button. You can move a cursor through the route with the navigation buttons and insert or delete points or let the robot jump to the cursor-position. The clock gives the interpolation time between the cursor-point and the following (default 2 sec). Change the clock-time by rotating the face and set it with the yellow sphere. (Note: the routes are currently restricted to 20 points.)
Select run mode to start the animation. The START-button will automatically do this, another hit will stop the robot. You can also interpolate the route manually when you turn the manual control wheel. The scale at the bottom indicates the route progress in time. The exact time is displayed by the clock.
The route-types can be selected in the set area. Press one of upper radio buttons to let the trajectory run once or continuously in a loop or back and forth. Set the speed using the slider at the bottom. By default the interpolation between points is linear in cartesian space. You can switch to joint-value interpolation with the radio buttons at the right.

Other Panels

With three push-buttons you can switch off some of the robots components. The display allows the detailed robot model, a simplier one with colored bars or the axes of the coordinate system to be switched on or off separately. The TCP-distance you can control with the TCP controller.
This panel is for tool control. You can currently choose between tree different grippers using the radio-buttons, two of them can be opened and closed by dragging the OPEN-button. There is a push-button to show or hide the selected tool.
The information panel always displays the location of the TCP and the joint-values. The position is given as a three-dimensional vector, the orientation as an axis/angle-value. All angles are given in degrees.
These coordinate systems give you information about the robot position. You can also move the TCP in cartesian space by dragging one of the yellow lines which indicate the position in the according plane. During the time you hold the mouse button clicked the moving direction will be displayed near the TCP. More precise movement can be achieved when you switch the panel enlarged to the background using the size toggle button. You may switch it off entirely pressing X or change the transparency pressing T.

Other Interactions

Use the Browser control elements to navigate through the world. The default EXAMINE-Mode works best here. There are some predefined viewpoints, a special one is the camera-viewpoint (picture at the left) which simulates a camera mounted at the end of the robot arm. Hand is another moving viewpoint which always follows the motion of the tool keeping the TCP in your focus. (Note: In the WinNT/9x Version trajectories won't interpolate smoothly when you have chosen one of these viewpoints.)

Release Notes

The VRML Robot was originated by Martin Rohrmeier as his master thesis. It is best viewed using Cosmo Player for WinNT/9x or IRIX. This plug-in works well with Version 4.0 or later of Netscape Communicator and Microsoft Internet Explorer. The simulation was developed and tested on a SGI Indigo 2, R10000 Maximum Impact and on different PC platforms. We recommend a system with at least a Pentium II, 266 MHz and an Open GL or Direct3D capable hardware accelerator.

As not all of the existing VRML 2.0 browsers are 100% compatible you will probably face problems using other browsers than CosmoPlayer. The most common among them are missing support for vrmlscript, EXTERNPROTOs or sensors. Furthermore the various implementations differ in some details. The Windows version of CosmoPlayer contains some bugs and behaves different than the IRIX version in many situations. We will do future development using CosmoPlayer for Windows only.

We know most of the existing problems and we think that they will be fixed soon. We are currently working on a lot of extensions that should be included in the robot world. Comments and suggestions are highly welcome, please feel free to inform us about what you think about this project.

Furthermore I'd like to thank a few people for their prototypes that are included in this project: Tom Kaye for the Tracking Viewpoint. Braden McDaniel for the Torus.

The most recent version of this software can be found at:

(c) 1999 Martin Rohrmeier. All rights reserved.

! Awards


NASA Telerobotics


ASK Karlsruhe

Martin Rohrmeier, Mar 1999

If you are in Munich you can visit me at the Rüen Thong Thai Restaurant.