# Robot 6-Axis/de

This page is a translated version of the page Robot 6-Axis and the translation is 3% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎română • ‎svenska • ‎čeština • ‎русский

### Tutorial

Thema
{{{Topic}}}
Niveau
Intermediate
Zeit zum Abschluss
Unknown
Autor
Beispieldatei(en)

## Overview

The description follows the Denavit-Hartenberg Parameter system, as also described in John J. Craigs book "Introduction to Robotics".

## Example Kuka

### Kinematic

3D applications
Segment Parameter Description
Base konfiguration

${\displaystyle \theta _{1}=q_{1}}$

${\displaystyle d_{1}=675mm}$

${\displaystyle a_{1}=260mm}$

$\displaystyle \alpha_{1} = −90$ °

Segment 1

${\displaystyle \theta _{2}=q_{2}-90}$°

${\displaystyle d_{2}=0mm}$

${\displaystyle a_{2}=680mm}$

${\displaystyle \alpha _{2}=0}$°

Segment 2

${\displaystyle \theta _{3}=q_{3}}$

${\displaystyle d_{3}=0mm}$

${\displaystyle a_{3}=0mm}$

${\displaystyle \alpha _{3}=90}$°

Segment 3

${\displaystyle \theta _{4}=q_{4}}$

${\displaystyle d_{4}=-670mm}$

${\displaystyle a_{4}=0mm}$

${\displaystyle \alpha _{4}=-90}$°

Segment 4

${\displaystyle \theta _{5}=q_{5}}$

${\displaystyle d_{5}=0mm}$

${\displaystyle a_{5}=0mm}$

${\displaystyle \alpha _{5}=90}$°

Segment 5

${\displaystyle \theta _{6}=q_{6}}$

${\displaystyle d_{6}=0mm}$

${\displaystyle a_{6}=-158mm}$

${\displaystyle \alpha _{6}=180}$°

Segment 6

This leads to following table:

Kinematik table
${\displaystyle i}$ ${\displaystyle \theta }$ ${\displaystyle d}$ ${\displaystyle a}$ ${\displaystyle \alpha }$
1 q1 675 mm 260 mm -90°
2 q2 - 90° 0 mm 680 mm
3 q3 0 mm 0 mm 90°
4 q4 -670 mm 0 mm -90°
5 q5 0 mm 0 mm 90°
6 q6 -158 mm 0 mm 180°

Since the Kuka robots do not have all axis to 0 in the drawn L-Position, we have to change axis 2 & 3 by 90°.

Kinematik table
${\displaystyle i}$ ${\displaystyle \theta }$ ${\displaystyle d}$ ${\displaystyle a}$ ${\displaystyle \alpha }$
1 q1 675 mm 260 mm -90°
2 q2 0 mm 680 mm
3 q3 - 90° 0 mm 0 mm 90°
4 q4 -670 mm 0 mm -90°
5 q5 0 mm 0 mm 90°
6 q6 -158 mm 0 mm 180°

In the data sheet we find additional information about the axis:

That leads to this complete table:

Kinematik table
${\displaystyle i}$ ${\displaystyle \theta }$ ${\displaystyle d}$ ${\displaystyle a}$ ${\displaystyle \alpha }$ ${\displaystyle \theta _{min}}$ ${\displaystyle \theta _{max}}$ Axis Speed
1 0 675 260 -90 -185 185 156
2 0 0 680 0 -155 35 156
3 - 90 0 0 90 -130 154 156
4 0 -670 0 -90 -350 350 330
5 0 0 0 90 -130 130 330
6 0 -158 0 180 -350 350 615

### Visual representation

FreeCAD can generate a rough visual out of the kinematic table. But if you want closer to reality you can use a VRML file with the robot shape for the simulation. E.g. Kuka delivers for its model VRML files. The VRML file gets loaded while the creation of the specific robot in FreeCAD. In order to allow FreeCAD to move the axis we have to edit the VRML file and insert special transformation nodes FreeCAD can find and manipulate.

Again shown by the example Kuka KR 16. Beginning from line 1:

#VRML V2.0 utf8
#
# This VRML97 file was exported using eM-Workplace
# (c) Tecnomatix Technologies GmbH & Co. KG
#     Heisenberg-Bogen 1
#     D-85609 Aschheim-Dornach
#     GERMANY
#
#Background
#{
#   skyColor   [0.752941 0.752941 0.752941]
#}
Transform
{
#rotation 1 0 0 -1.5707963
#scale .001 .001 .001
children
[
DEF AOBJ_0001_000_TRAFO Transform
{
children
[
...


You see this file is exported with a robot simulation software called Tecnomatix. Remove this notice and put in a URL where you get this file from, because Tecnomatix has no copyright in the file content. It's only a converter! First of all we remove the Background node. Then remove the rotation and scale node to get the model to mm and upright Z.

Right at the end:

  ] }
] }
] }
]
}
#ROUTE SENS_04_OBJ.rotation_changed TO AXIS_04_OBJ.rotation
#ROUTE SENS_27_OBJ.rotation_changed TO AXIS_27_OBJ.rotation
#ROUTE SENS_32_OBJ.rotation_changed TO AXIS_32_OBJ.rotation
#ROUTE SENS_44_OBJ.rotation_changed TO AXIS_44_OBJ.rotation
#ROUTE SENS_46_OBJ.rotation_changed TO AXIS_46_OBJ.rotation
#ROUTE SENS_49_OBJ.rotation_changed TO AXIS_49_OBJ.rotation
#DEF AnySIMTimer TimeSensor
#{
#   cycleInterval 1.000000
#   loop          TRUE
#}


Comment out the TimeSensor and the 6 routes. This 6 lines give you a hint where the actual axis of the robot are! First search for "AXIS_04_OBJ" that brings you to that place:

...
Transform { rotation 1 0 0 1.570796 children [
DEF SENS_04_OBJ-0001 CylinderSensor
{
diskAngle 1.570796
minAngle  -3.228859
maxAngle  3.228859
offset    0.000000
}
DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children [
DEF AXIS_04_OBJ-0001 Transform
{
children
[
Transform { rotation 1 0 0 -1.570796 children [
DEF AOBJ_0001_003_TRAFO Transform
{
rotation 1.000000 0.000000 0.000000 3.141593
translation -600.000000 500.000000 300.000000
children
[
...


You have to insert exactly above the definition of this node the line "DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children [" which is the anchor for FreeCAD to move the axis.

You can load the VRML by instantiating the robot:

App.activeDocument().addObject("Robot::RobotObject","Robot")


which should give you that result:

### KR 210

Kinematik table
${\displaystyle i}$ ${\displaystyle \theta }$ ${\displaystyle d}$ ${\displaystyle a}$ ${\displaystyle \alpha }$ ${\displaystyle \theta _{min}}$ ${\displaystyle \theta _{max}}$ Axis Speed
1 0 750 350 -90 -185 185 156
2 0 0 1250 0 -155 35 156
3 - 90 0 0 90 -130 154 156
4 0 -1100 0 -90 -350 350 330
5 0 0 0 90 -130 130 330
6 0 -230 0 180 -350 350 615

### KR 500

Kinematik table
${\displaystyle i}$ ${\displaystyle \theta }$ ${\displaystyle d}$ ${\displaystyle a}$ ${\displaystyle \alpha }$ ${\displaystyle \theta _{min}}$ ${\displaystyle \theta _{max}}$ Axis Speed
1 0 1045 500 -90 -185 185 156
2 0 0 1300 0 -155 35 156
3 - 90 0 0 90 -130 154 156
4 0 -1025 0 -90 -350 350 330
5 0 0 0 90 -130 130 330
6 0 -250 0 180 -350 350 615