VRML Preparation for Robot Simulation/fr

= VRML_Preparation_for_Robot_Simulation/fr =

Ce tutoriel explique comment utiliser FreeCAD et le Workbench Simulation Robot pour simuler les mouvements de robots sur 6 axes. Le tutoriel se concentre sur la création du fichier VRML utilisé pour la visualisation. La base du fichier VRML est un modèle FreeCAD. La version de FreeCAD utilisée est 0.11.4252ppa1 sur Ubuntu 32 bits.

Ouvrir un fichier, ou en créer un avec FreeCAD
Le tutoriel est basé sur un fichier-STEP d'un Stäubli TX40, vous pouvez télécharger le fichier fichier TX40-HB.stp, la méthode, devrait également s'appliquer à un modèle entièrement réalisé dans FreeCAD, cependant, je n'ai pas encore eu le temps de vérifier ce point. Après l'ouverture du fichier, vous devriez obtenir ceci : On notera que pour l'importation, le robot est composé de 8 formes, directement sur la racine de l'arbre du document. La structure du fichier VRML exporté peut changer si des groupes sont utilisés. Les formes sont commandées à partir de la base de l'outil. La dernière forme contient les axes de rotation de tous les axes du robot. Le nom de forme de corrélation, le nom de la pièce est donné (pour l'instant (Mars 2011) par FreeCAD, FreeCAD n'importe pas encore les noms inclus dans les fichiers STEP) :

Pour cette importation, changez le "Mode d'affichage" de chaque forme, à l'exception TX40_HB007, de "lisser" les lignes en "Ombrage" pour l'exportation VRML pour faire bonne figure. J'ai aussi changé les couleurs de [245, 196, 0] et [204, 204, 204] afin de mieux correspondre au jaune Stäubli. Masquer TX40_HB007 car il contient les axes de tous les joints et ne peut pas être démonté.

Mesure des caractéristiques géométriques
Afin de construire la table Denavit-Hartenberg (voir 6-Axis_Robot ) et de préparer le fichier VRML, que vous avez besoin pour obtenir des caractéristiques du Robot. Pour l'instant, l'outil de mesure de FreeCAD n'est pas prêt, vous pouvez utiliser les axes inclus dans TX40_HB007 (les coordonnées sont indiquées en bas à gauche lorsque vous pointez un objet avec la souris) ou vous devez utiliser la console Python pour obtenir des informations sur la forme géométrique. Notez que, le DH-tableau n'est nécessaire que si vous avez besoin d'utiliser la cinématique inverse, c'est à dire obtenir les coordonnées cartésiennes ou de commander le robot en coordonnées cartésiennes. La DH-table pour ce robot est le suivant (mm, degrés et deg/s) : Le fichier csv est :

a, alpha, d  , theta, rotDir, maxAngle, minAngle, AxisVelocity 0,   -90, 320,     0,      1,      180,     -180, 555 225,     0,  35,   -90,      1,      125,     -125, 475 0  ,    90,   0,    90,      1,      138,     -138, 585 0  ,   -90, 225,     0,      1,      270,     -270, 1035 0  ,    90,   0,     0,      1,    133.5,     -120, 1135 0  ,     0,  65,     0,      1,      270,     -270, 1575

Exporter en VRML
Exporter le document dans un fichier VRML. La structure du fichier VRML est la suivante :

Group { children Group { children [ Group { …        },         Group { …        },         Group { …        },         Group { …        },         Group { …        },         Group { …        },         Group { …        },         Group { …        } ]     } }
 * 1) VRML V2.0 utf8

Vous pouvez remarquer que nous avons 8 groupes indépendants, correspondants aux 8 formes.

Préparation du dossier de vrml
Toutes les formes dans le fichier vrml sont exprimés dans le cadre de base, indépendamment les uns des autres. Pour le Workbench Simulation Robot, nous avons besoin de créer une structure où, un mouvement de formes induit un mouvement de toutes les formes qui se trouveront ensuite dans la structure. Le placement des formes sera relatif à la forme précédente, nous avons donc besoin d'inclure quelques modifications à partir du système de référence absolue vers celui relatif. Les traductions sont décrites dans le tableau suivant : With
 * A=(0, 0, 168)
 * B=(0, 107.8, 320)
 * C=(0, 104.15, 545)
 * D=(0, 35, 601)
 * E=(0, 35, 770)
 * F=(0, 35, 835).

Prenons l'exemple de l'axe 4 entre le coude et avant-bras, située à D = (xd, yd, zd). Le point d'ancrage pour l'axe de FreeCAD est :

"DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children ["

Cela correspond à une rotation autour de l'axe y. Dans le modèle CAO, la rotation se fait sur l'axe z. Ainsi, nous avons besoin d'une rotation autour de l'axe x de $$\pi$$ avant la définition des axes de FreeCAD et de -$$\pi$$ après. En outre, une traduction de (-xd, yd-,-zd) est nécessaire juste avant le groupe correspondant à la définition de l'avant bras, et de l'exprimer dans le cadre de référence centré par rapport à D. Cela signifie que la traduction de (xd, yd, zd) doit être insérée avant la première rotation. A la fin, le fichier vrml à partir de la définition du COUDE (ELBOW) vers la définition de l'avant bras (FOREARM) ressemble à ceci :

# ELBOW Group { … here comes the unmodified definition of ELBOW },      Transform { translation 0 35 601 rotation 1 0 0 1.5707963 children DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children Transform { rotation 1 0 0 -1.5707963 children Transform { translation 0 -35 -601 children [ # FOREARM Group { ... here comes the unmodified definition of FOREARM }, A la fin du document, les crochets de fermeture appropriés doivent être insérés : "]}}}}", pour chacun des 6 axes. Finalement, le document ressemble à ceci (ici, je ne sais pas si je peux établir un lien avec le fichier, à cause des droits d'auteur (copyrights)):

Group { children Group { children [ # HORIZONTAL BASE CABLE OUTLET Group { ... here comes the unmodified definition of HORIZONTAL BASE CABLE OUTLET },      Transform { translation 0 0 168 rotation 1 0 0 1.5707963 children DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children Transform { rotation 1 0 0 -1.5707963 children Transform { translation 0 0 -168 children [ # SHOULDER Group { ... here comes the unmodified definition of SHOULDER },      Transform { translation 0 107.8 320 #rotation 0 0 1 0 children DEF FREECAD_AXIS2 Transform { rotation 0 1 0 0 children Transform { #rotation 0 0 1 0 children Transform { translation 0 -107.8 -320 children [ # ARM Group { ... here comes the unmodified definition of ARM },      Transform { translation 0 104.15 545 #rotation 0 0 1 0 children DEF FREECAD_AXIS3 Transform { rotation 0 1 0 0 children Transform { #rotation 0 0 1 0 children Transform { translation 0 -104.15 -545 children [ # ELBOW Group { ... here comes the unmodified definition of ELBOW },      Transform { translation 0 35 601 rotation 1 0 0 1.5707963 children DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children Transform { rotation 1 0 0 -1.5707963 children Transform { translation 0 -35 -601 children [ # FOREARM Group { ... here comes the unmodified definition of FOREARM },      Transform { translation 0 35 770 #rotation 0 0 1 0 children DEF FREECAD_AXIS5 Transform { rotation 0 1 0 0 children Transform { #rotation 0 0 1 0 children Transform { translation 0 -35 -770 children [ # WRIST Group { ... here comes the unmodified definition of WRIST },      Transform { translation 0 35 835 rotation 1 0 0 1.5707963 children DEF FREECAD_AXIS6 Transform { rotation 0 1 0 0 children Transform { rotation 1 0 0 -1.5707963 children Transform { translation 0 -35 -835 children [ # TOOL FLANGE Group { ... here comes the unmodified definition of TOOL FRAME },      Group { ... here comes the unmodified definition of TX40_HB007 } # "]" was deleted from this line ]}}}},    ]}}}},     ]}}}},     ]}}}},     ]}}}},     ]}}}},     ] # this is the "]" deleted from the line above } }
 * 1) VRML V2.0 utf8

Voici un patch pour obtenir un fichier vrml convenant à la simulation du robot :

7a8 >        # HORIZONTAL BASE CABLE OUTLET 95968a95970,95981 >        Transform { >          translation 0 0 168 >          rotation 1 0 0 1.5707963 >          children >            DEF FREECAD_AXIS1 Transform { rotation 0 1 0 0 children >              Transform { >                rotation 1 0 0 -1.5707963 >                children >                  Transform { >                    translation 0 0 -168 >                    children [ >        # SHOULDER 128428a128442,128453 >        Transform { >          translation 0 107.8 320 >          #rotation 0 0 1 0 >          children >            DEF FREECAD_AXIS2 Transform { rotation 0 1 0 0 children >              Transform { >                #rotation 0 0 1 0 >                children >                  Transform { >                    translation 0 -107.8 -320 >                    children [ >        # ARM 206503a206529,206540 >        Transform { >          translation 0 104.15 545 >          #rotation 0 0 1 0 >          children >            DEF FREECAD_AXIS3 Transform { rotation 0 1 0 0 children >              Transform { >                #rotation 0 0 1 0 >                children >                  Transform { >                    translation 0 -104.15 -545 >                    children [ >        # ELBOW 267111a267149,267160 >        Transform { >          translation 0 35 601 >          rotation 1 0 0 1.5707963 >          children >            DEF FREECAD_AXIS4 Transform { rotation 0 1 0 0 children >              Transform { >                rotation 1 0 0 -1.5707963 >                children >                  Transform { >                    translation 0 -35 -601 >                    children [ >        # FOREARM 417854a417904,417915 >        Transform { >          translation 0 35 770 >          #rotation 0 0 1 0 >          children >            DEF FREECAD_AXIS5 Transform { rotation 0 1 0 0 children >              Transform { >                #rotation 0 0 1 0 >                children >                  Transform { >                    translation 0 -35 -770 >                    children [ >        # WRIST 422053a422115,422126 >        Transform { >          translation 0 35 835 >          rotation 1 0 0 1.5707963 >          children >            DEF FREECAD_AXIS6 Transform { rotation 0 1 0 0 children >              Transform { >                rotation 1 0 0 -1.5707963 >                children >                  Transform { >                    translation 0 -35 -835 >                    children [ >        # TOOL FLANGE 435627c435700,435707 <        } ] --- >         }  >       ]}}}}, >       ]}}}}, >       ]}}}}, >       ]}}}}, >       ]}}}}, >       ]}}}}, >       ]