Robot 6-Axis/de: Difference between revisions
(Updating to match new version of source page) |
(Updating to match new version of source page) |
||
(40 intermediate revisions by 2 users not shown) | |||
Line 2: | Line 2: | ||
{{TutorialInfo/de |
{{TutorialInfo/de |
||
|Topic= Roboter Arbeitsbereich |
|||
|Thema= Robot Workbench |
|||
|Level= |
|Level= Mittel |
||
|Time= |
|Time= Unbekannt |
||
|Author= |
|Author= |
||
|FCVersion= |
|FCVersion= |
||
Line 10: | Line 10: | ||
}} |
}} |
||
= |
<span id="Overview"></span> |
||
==Übersicht== |
|||
<div class="mw-translate-fuzzy"> |
|||
This article is about bringing a standard 6-Axis industry robot into FreeCAD for simulation in the [[Image:Workbench_Robot.svg|24px]] [[Robot Workbench]] |
|||
In diesem Artikel geht es darum, einen Standard 6-Achsen Industrieroboter in FreeCAD zur Simulation in der [[Image:Workbench_Robot.svg|24px]] [[Robot Workbench/de|Arbeitsbereich Roboter]] zu bringen. |
|||
</div> |
|||
Die Beschreibung folgt dem [http://en.wikipedia.org/wiki/Denavit-Hartenberg_Parameters Denavit-Hartenberg Parameter] System, wie es auch in John J. Craigs Buch "Introduction to Robotics" beschrieben ist. |
|||
<span id="Example_Kuka"></span> |
|||
== Example Kuka == |
|||
== Kuka Beispiel == |
|||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ ''' |
|+ '''Der Kuka KR-16''' |
||
|- |
|- |
||
Line 27: | Line 31: | ||
|} |
|} |
||
= |
<span id="Kinematic"></span> |
||
⚫ | |||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ '''3D |
|+ '''3D Anwendungen''' |
||
|- |
|- |
||
! Abschnitt |
|||
! Segment |
|||
! Parameter |
! Parameter |
||
! Beschreibung |
|||
! Description |
|||
|- |
|- |
||
| [[Image:KukaBase.jpg]] |
| [[Image:KukaBase.jpg]] |
||
|| |
|| |
||
|| |
|| Basiskonfiguration |
||
|- |
|- |
||
| [[Image:KukaSegment1.jpg]] |
| [[Image:KukaSegment1.jpg]] |
||
Line 48: | Line 53: | ||
<math>a_{1} = 260 mm </math> |
<math>a_{1} = 260 mm </math> |
||
<math>\alpha_{1} = |
<math>\alpha_{1} = -90</math>° |
||
|| |
|| Abschnitt 1 |
||
|- |
|- |
||
| [[Image:KukaSegment2.jpg]] |
| [[Image:KukaSegment2.jpg]] |
||
Line 63: | Line 68: | ||
<math>\alpha_{2} = 0</math>° |
<math>\alpha_{2} = 0</math>° |
||
|| |
|| Abschnitt 2 |
||
|- |
|- |
||
| [[Image:KukaSegment3.jpg]] |
| [[Image:KukaSegment3.jpg]] |
||
Line 76: | Line 81: | ||
<math>\alpha_{3} = 90</math>° |
<math>\alpha_{3} = 90</math>° |
||
|| |
|| Abschnitt 3 |
||
|- |
|- |
||
| [[Image:KukaSegment4.jpg]] |
| [[Image:KukaSegment4.jpg]] |
||
Line 89: | Line 94: | ||
<math>\alpha_{4} = -90</math>° |
<math>\alpha_{4} = -90</math>° |
||
|| |
|| Abschnitt 4 |
||
|- |
|- |
||
| [[Image:KukaSegment5.jpg]] |
| [[Image:KukaSegment5.jpg]] |
||
Line 102: | Line 107: | ||
<math>\alpha_{5} = 90</math>° |
<math>\alpha_{5} = 90</math>° |
||
|| |
|| Abschnitt 5 |
||
|- |
|- |
||
| [[Image:KukaSegment6.jpg]] |
| [[Image:KukaSegment6.jpg]] |
||
Line 115: | Line 120: | ||
<math>\alpha_{6} = 180</math>° |
<math>\alpha_{6} = 180</math>° |
||
|| |
|| Abschnitt 6 |
||
|} |
|} |
||
Dies führt zu folgender Tabelle: |
|||
This leads to following table: |
|||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ <div class="mw-translate-fuzzy"> |
|||
⚫ | |||
'''Kinematiktabelle''' |
|||
</div> |
|||
|- |
|- |
||
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> |
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> |
||
Line 138: | Line 145: | ||
|} |
|} |
||
Da die Kuka Roboter in der gezeichneten L-Position nicht alle Achsen auf 0 haben, müssen wir die |
|||
Since the Kuka robots do not have all axis to 0 in the drawn L-Position, we have to change |
|||
Achse 2 & 3 um 90° ändern. |
|||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ <div class="mw-translate-fuzzy"> |
|||
|+ '''Kinematik table''' |
|||
'''Kinematiktabelle''' |
|||
</div> |
|||
|- |
|- |
||
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> |
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> |
||
Line 160: | Line 169: | ||
|} |
|} |
||
Im Datenblatt finden wir zusätzliche Informationen über die Achse: |
|||
In the data sheet we find additional information about the axis: |
|||
[[Image:KukaAxisData.jpg]] |
[[Image:KukaAxisData.jpg]] |
||
Das führt zu dieser vollständigen Tabelle: |
|||
That leads to this complete table: |
|||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ <div class="mw-translate-fuzzy"> |
|||
|+ '''Kinematik table''' |
|||
'''Kinematiktabelle''' |
|||
</div> |
|||
|- |
|- |
||
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> !! <math>\theta_{min}</math> !! <math>\theta_{max}</math> !! Axis Speed |
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> !! <math>\theta_{min}</math> !! <math>\theta_{max}</math> !! Axis Speed |
||
Line 183: | Line 194: | ||
|} |
|} |
||
<span id="Visual_representation"></span> |
|||
=== Visual representation === |
|||
=== Visuelle Darstellung === |
|||
FreeCAD kann aus der Kinematik Tabelle ein grobes Bild erzeugen. Wenn du aber näher an der Realität sein willst, kannst du eine VRML Datei mit der Roboterform für die Simulation verwenden. |
|||
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. |
|||
Z. B. [http://kuka.com Kuka] liefert für sein Modell VRML Dateien. |
|||
Die VRML Datei wird bei der Erstellung des spezifischen Roboters in FreeCAD geladen. Damit FreeCAD die Achsen bewegen kann, müssen wir die VRML Datei bearbeiten und spezielle Transformationsknoten einfügen, die FreeCAD finden und verändern kann. |
|||
Wiederum am Beispiel des Kuka KR 16 gezeigt. |
|||
Beginnend ab Zeile 1: |
|||
#VRML V2.0 utf8 |
#VRML V2.0 utf8 |
||
Line 215: | Line 227: | ||
[ |
[ |
||
... |
... |
||
Du siehst, diese Datei wird mit einer Robotersimulationssoftware namens Tecnomatix exportiert. Entferne diesen Hinweis und füge eine URL ein, von der du diese Datei beziehst, denn Tecnomatix hat kein Copyright am Inhalt der Datei. Es ist nur ein Konverter! Als erstes entfernen wir den '''Hintergrund''' Knoten. Dann entferne den '''Rotation''' und '''Scale''' Knoten, um das Modell auf mm und Z senkrecht zu bekommen. |
|||
Ganz zum Schluss: |
|||
Right at the end: |
|||
] } |
] } |
||
] } |
] } |
||
Line 235: | Line 247: | ||
#} |
#} |
||
Kommentiere den '''TimeSensor''' und die 6 Strecken aus. Diese 6 Zeilen geben dir einen Hinweis, wo die tatsächlichen Achsen des Roboters sind! Suche zunächst nach "AXIS_04_OBJ", das bringt dich an diese Stelle: |
|||
... |
... |
||
Transform { rotation 1 0 0 1.570796 children [ |
Transform { rotation 1 0 0 1.570796 children [ |
||
Line 258: | Line 270: | ||
[ |
[ |
||
... |
... |
||
Du musst genau über der Definition dieses Knotens die Zeile '''"DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children ["''' der der Anker für FreeCAD ist, um die Achse zu bewegen. |
|||
Mache nun das gleiche für '''FREECAD_AXIS2''', '''FREECAD_AXIS3''', '''FREECAD_AXIS4''', '''FREECAD_AXIS5''' und '''FREECAD_AXIS6'''. |
|||
Vergiss die schließenden Klammern am Ende der Datei nicht und du bist fertig! |
|||
Don't forget the closing brackets at the end of the file and you're done! |
|||
Du kannst die VRML laden, indem du den Roboter instanziierst: |
|||
You can load the VRML by instantiating the robot: |
|||
App.activeDocument().addObject("Robot::RobotObject","Robot") |
App.activeDocument().addObject("Robot::RobotObject","Robot") |
||
App.activeDocument().Robot.RobotVrmlFile = "C:/_Projekte/FreeCAD0.9_build/mod/Robot/Lib/Kuka/kr16.wrl" |
App.activeDocument().Robot.RobotVrmlFile = "C:/_Projekte/FreeCAD0.9_build/mod/Robot/Lib/Kuka/kr16.wrl" |
||
was dir dieses Ergebnis liefern sollte: |
|||
which should give you that result: |
|||
[[Image:KukaKR16FreeCAD.jpg]] |
[[Image:KukaKR16FreeCAD.jpg]] |
||
Line 274: | Line 286: | ||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ <div class="mw-translate-fuzzy"> |
|||
|+ '''Kinematik table''' |
|||
'''Kinematiktabelle''' |
|||
</div> |
|||
|- |
|- |
||
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> !! <math>\theta_{min}</math> !! <math>\theta_{max}</math> !! Axis Speed |
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> !! <math>\theta_{min}</math> !! <math>\theta_{max}</math> !! Axis Speed |
||
Line 297: | Line 311: | ||
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
{| class="wikitable" style="color:green; background-color:#ffffcc;" cellpadding="5" cellspacing="0" border="1" |
||
|+ <div class="mw-translate-fuzzy"> |
|||
|+ '''Kinematik table''' |
|||
'''Kinematiktabelle''' |
|||
</div> |
|||
|- |
|- |
||
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> !! <math>\theta_{min}</math> !! <math>\theta_{max}</math> !! Axis Speed |
! <math>i</math> !! <math>\theta</math> !! <math>d</math> !! <math>a</math> !! <math>\alpha</math> !! <math>\theta_{min}</math> !! <math>\theta_{max}</math> !! Axis Speed |
||
Line 313: | Line 329: | ||
| 6 || 0 || -250 || 0 || 180 || -350 || 350 || 615 |
| 6 || 0 || -250 || 0 || 180 || -350 || 350 || 615 |
||
|} |
|} |
||
=== Links === |
|||
* [https://link.springer.com/referenceworkentry/10.1007%2F978-3-540-30301-5_2 Springer Handbook of Robotics, section Kinematics, p 9-33]. |
|||
* [https://www.youtube.com/watch?v=qZB3_gKBwf8 Denavit-Hartenberg Parameter 3D Video Tutorial] Denavit-Hartenberg Parameter 3D Video Tutorial for a KUKA industry robot on YouTube (german). |
|||
* [https://www.youtube.com/watch?v=rA9tm0gTln8 Denavit-Hartenberg Reference Frame Layout] Denavit-Hartenberg Reference Frame Layout on YouTube. |
|||
* [http://www.roboanalyzer.com/ RoboAnalyzer] RoboAnalyzer is a 3D model based software that can be used to teach and learn the Robotics concepts. |
|||
{{Tutorials navi{{#translation:}}}} |
|||
{{Robot_Tools_navi{{#translation:}}}} |
{{Robot_Tools_navi{{#translation:}}}} |
||
{{Userdocnavi{{#translation:}}}} |
{{Userdocnavi{{#translation:}}}} |
Latest revision as of 12:56, 14 April 2023
Tutorium |
Thema |
---|
Roboter Arbeitsbereich |
Niveau |
Mittel |
Zeit zum Abschluss |
Unbekannt |
Autoren |
FreeCAD-Version |
Beispieldateien |
Siehe auch |
None |
Übersicht
In diesem Artikel geht es darum, einen Standard 6-Achsen Industrieroboter in FreeCAD zur Simulation in der Arbeitsbereich Roboter zu bringen.
Die Beschreibung folgt dem Denavit-Hartenberg Parameter System, wie es auch in John J. Craigs Buch "Introduction to Robotics" beschrieben ist.
Kuka Beispiel
Kinematik
Abschnitt | Parameter | Beschreibung |
---|---|---|
Basiskonfiguration | ||
° |
Abschnitt 1 | |
°
° |
Abschnitt 2 | |
° |
Abschnitt 3 | |
° |
Abschnitt 4 | |
° |
Abschnitt 5 | |
° |
Abschnitt 6 |
Dies führt zu folgender Tabelle:
1 | q1 | 675 mm | 260 mm | -90° |
2 | q2 - 90° | 0 mm | 680 mm | 0° |
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° |
Da die Kuka Roboter in der gezeichneten L-Position nicht alle Achsen auf 0 haben, müssen wir die Achse 2 & 3 um 90° ändern.
1 | q1 | 675 mm | 260 mm | -90° |
2 | q2 | 0 mm | 680 mm | 0° |
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° |
Im Datenblatt finden wir zusätzliche Informationen über die Achse:
Das führt zu dieser vollständigen Tabelle:
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 |
Visuelle Darstellung
FreeCAD kann aus der Kinematik Tabelle ein grobes Bild erzeugen. Wenn du aber näher an der Realität sein willst, kannst du eine VRML Datei mit der Roboterform für die Simulation verwenden. Z. B. Kuka liefert für sein Modell VRML Dateien. Die VRML Datei wird bei der Erstellung des spezifischen Roboters in FreeCAD geladen. Damit FreeCAD die Achsen bewegen kann, müssen wir die VRML Datei bearbeiten und spezielle Transformationsknoten einfügen, die FreeCAD finden und verändern kann.
Wiederum am Beispiel des Kuka KR 16 gezeigt. Beginnend ab Zeile 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 [ ...
Du siehst, diese Datei wird mit einer Robotersimulationssoftware namens Tecnomatix exportiert. Entferne diesen Hinweis und füge eine URL ein, von der du diese Datei beziehst, denn Tecnomatix hat kein Copyright am Inhalt der Datei. Es ist nur ein Konverter! Als erstes entfernen wir den Hintergrund Knoten. Dann entferne den Rotation und Scale Knoten, um das Modell auf mm und Z senkrecht zu bekommen.
Ganz zum Schluss:
] } ] } ] } ] } #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 #}
Kommentiere den TimeSensor und die 6 Strecken aus. Diese 6 Zeilen geben dir einen Hinweis, wo die tatsächlichen Achsen des Roboters sind! Suche zunächst nach "AXIS_04_OBJ", das bringt dich an diese Stelle:
... 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 [ ...
Du musst genau über der Definition dieses Knotens die Zeile "DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children [" der der Anker für FreeCAD ist, um die Achse zu bewegen.
Mache nun das gleiche für FREECAD_AXIS2, FREECAD_AXIS3, FREECAD_AXIS4, FREECAD_AXIS5 und FREECAD_AXIS6. Vergiss die schließenden Klammern am Ende der Datei nicht und du bist fertig!
Du kannst die VRML laden, indem du den Roboter instanziierst:
App.activeDocument().addObject("Robot::RobotObject","Robot") App.activeDocument().Robot.RobotVrmlFile = "C:/_Projekte/FreeCAD0.9_build/mod/Robot/Lib/Kuka/kr16.wrl"
was dir dieses Ergebnis liefern sollte:
KR 210
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
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 |
Links
- Springer Handbook of Robotics, section Kinematics, p 9-33.
- Denavit-Hartenberg Parameter 3D Video Tutorial Denavit-Hartenberg Parameter 3D Video Tutorial for a KUKA industry robot on YouTube (german).
- Denavit-Hartenberg Reference Frame Layout Denavit-Hartenberg Reference Frame Layout on YouTube.
- RoboAnalyzer RoboAnalyzer is a 3D model based software that can be used to teach and learn the Robotics concepts.
- Roboter: Roboter einfügen, Simulieren einer Bewegungsbahn, Exportiere Bewegungsbahn, Ausgangsposition setzen, zur Ausgangsposition zurückkehren
- Bewegungsbahnen, nicht-parametrisch: Erstelle Bewegungsbahn, Set default orientation, Festlegen von Standardwerten, In Bewegungsbahn einfügen, Wegpunkt einfügen (Maus)
- Bwegungsbahnen, parametrisch: Bewegungsbahn aus Kanten, Bewegungsbahn verschönern, Bewegungsbahnen verbinden
- Erste Schritte
- Installation: Herunterladen, Windows, Linux, Mac, Zusätzlicher Komponenten, Docker, AppImage, Ubuntu Snap
- Grundlagen: Über FreeCAD, Graphische Oberfläche, Mausbedienung, Auswahlmethoden, Objektname, Programmeinstellungen, Arbeitsbereiche, Dokumentstruktur, Objekteigenschaften, Hilf FreeCAD, Spende
- Hilfe: Tutorien, Video Tutorien
- Arbeitsbereiche: Std Base, Arch, Assembly, CAM, Draft, FEM, Inspection, Mesh, OpenSCAD, Part, PartDesign, Points, Reverse Engineering, Robot, Sketcher, Spreadsheet, Surface, TechDraw, Test Framework