Robot 6-Axis/cs

Tento článek je o zavedení standardů 6-ti osového průmyslového robota pro simulaci ve FreeCADu.

Popis vychází ze systému Denavit-Hartenberg Parameter, podobně jak popisuje John J. Craigs v knize "Introduction to Robotics".

Kinematika
Řídí se následující tabulkou:

Protože roboty Kuka nemají všechny osy do 0 v nakreslené L-pozici, musíme změnit osy 2 a 3 o 90°.

V popisu robota jsou navíc i informace o ose:

Výsledkem je kompletní tabulka:

Vizuální reprezentace
FreeCAD může generovat neupravený vizuální výstup kinematické taulky. Ale pokud se chcete dostat blíž k realitě, můžete pro simulaci použít VRML soubor s tvary robota. Např. dodávané Kuka soubory pro jejich model. Při vytváření specifického robota ve FreeCADu je natahován soubor VRML. Pokud je FreeCADu umožněno posunovat osy, musí být upraven VRML soubor a vloženy speciální transformační uzly, které FreeCAD může nalézt a manipulovat s nimi.

Ještě jednou ukážeme příklad Kuka KR 16. Začínáme od řádku 1:

# # #{ #} Transform {   #rotation 1 0 0 -1.5707963 #scale .001 .001 .001 children [           DEF AOBJ_0001_000_TRAFO Transform {              children [ ... Vidíte, že tento soubor je dodáván se simulačním software robota zvaným Tecnomatix. Odstraňte poznámku a vložte tam URL, ze které jste tento soubor získali, protože Tecnomatix nemá žádný copyright na obsah souboru. Je to pouze konvertor! Nejdřív odstraňte uzel Background. Potom odstraňte uzly rotation a scale abyste dostali model v mm a kolmou Z.
 * 1) VRML V2.0 utf8
 * 1) This VRML97 file was exported using eM-Workplace
 * 2) (c) Tecnomatix Technologies GmbH & Co. KG
 * 3)     Heisenberg-Bogen 1
 * 4)     D-85609 Aschheim-Dornach
 * 5)     GERMANY
 * 1) Background
 * 1)   skyColor   [0.752941 0.752941 0.752941]

A teď na konci: ] }  ] }   ] }   ] } #{ #}
 * 1) ROUTE SENS_04_OBJ.rotation_changed TO AXIS_04_OBJ.rotation
 * 2) ROUTE SENS_27_OBJ.rotation_changed TO AXIS_27_OBJ.rotation
 * 3) ROUTE SENS_32_OBJ.rotation_changed TO AXIS_32_OBJ.rotation
 * 4) ROUTE SENS_44_OBJ.rotation_changed TO AXIS_44_OBJ.rotation
 * 5) ROUTE SENS_46_OBJ.rotation_changed TO AXIS_46_OBJ.rotation
 * 6) ROUTE SENS_49_OBJ.rotation_changed TO AXIS_49_OBJ.rotation
 * 7) DEF AnySIMTimer TimeSensor
 * 1)   cycleInterval 1.000000
 * 2)   loop          TRUE

Odkomentujte TimeSensor a 6 routes. Těch 6 řádků určuje kde jsou aktuální osy robota! Nejdříve se podívejte po "AXIS_04_OBJ" což Vás přivede na následující místo: ...    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 [ ... Přesně nad definici tohoto uzlu musíte vložit řádek "DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children [" což je odkaz pro FreeCAD aby se přesunul na osy.

A teď to samé pro FREECAD_AXIS2,FREECAD_AXIS3,FREECAD_AXIS4,FREECAD_AXIS5 a FREECAD_AXIS6. Nezapomeňte na uzavírací závorky na konci souboru a pak jste hotovi!

Při konkretizaci robota můžete natáhnout VRML: App.activeDocument.addObject("Robot::RobotObject","Robot") App.activeDocument.Robot.RobotVrmlFile = "C:/_Projekte/FreeCAD0.9_build/mod/Robot/Lib/Kuka/kr16.wrl" což by mělo dát tento výsledek:

KR 210
Data sheet

KR 500
Data sheet