Outils pour utilisateurs

Outils du site


kuka

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révision Les deux révisions suivantes
kuka [2020/01/11 11:16]
bvandepo
kuka [2020/01/22 11:38]
bvandepo
Ligne 1: Ligne 1:
-KUKA.Si Pro 3.04+=====Présentation du matériel===== 
 +====Règles de sécurité==== 
 +Il est absolument nécessaire d’observer les quelques règles de sécurité suivantes afin d'​éviter tout incidents pendant les phases de manipulation. 
 + 
 +  * <color red> Toute manipulation du robot doit s'​opérer en binôme et sous surveillance de l’encadrant.</​color>​ 
 +  * <color red> Ne jamais pénétrer dans la zone de travail du robot lorsqu'​il est en fonctionnement,​ et toujours travailler avec la cage de protection fermée.</​color>​ 
 +  * <color red> En cas d'​incident,​ appuyer sur l'​arrêt d'​urgence situé sur le SmartPAD ou la grille de protection.</​color>​ 
 +  * <color red> Ne pas toucher le robot après ou pendant le fonctionnement. Les moteurs peuvent atteindre des températures élevés.</​color>​ 
 +  * <color red> On se limitera toujours à une vitesse < 20% pendant les tests des programmes. On ne dépassera jamais 50% de la vitesse maximale.</​color>​ 
 + 
 + 
 +====Système robotique===== 
 +Le robot KR 6 R700 sixx est un bras manipulateur industriel. Il dispose de 6 degrés de libertés, et, dans sa configuration à l’AIP, est équipé d’une pince pneumatique en guise d’organe terminal. 
 +Le système robotique complet se compose de quatre éléments:​ 
 +  * Le bras manipulateur KR6 R700 
 +  * L’armoire de commande 
 +  * Le Kuka control panel ou Smartpad  
 +  * La cage de protection 
 + 
 +====Logiciels===== 
 +Les différents logiciels utilisés pour simuler et programmer le robot sont: 
 +  * **KUKA.SimPro** (Simulation du robot, programmation simplifiée)  
 +  * **KUKA.OfficeLite** (Programmation complete du robot en simulation) 
 +  * **KUKA.VisualWork** (Edition des programmes et configurations du robot, transfert avec le robot) 
 + 
 +La plupart des informations requises pour programmer un robot KUKA sont disponibles dans le manuel suivant: [[http://​supportwop.com/​IntegrationRobot/​content/​4-Logiciel_Utilisation_Programmation/​Logiciel_systeme_KSS_VSS/​KSS8x/​8.2/​Manuel_de_service__int%C3%A9grateur_KSS_82_fr.pdf|Manuel de service intégrateur ]] 
 +__**Il servira de référence pour l'​ensemble des travaux pratiques à réaliser.**__ 
 + 
 +Le langage de programmation des robots KUKA est le KRL (KUKA ROBOT LANGUAGE). Plusieurs niveaux de programmation sont possibles pour programmer les robots KUKA en fonction du groupe utilisateur:​ 
 + 
 +==Programmation pour le groupe d'​utilisateur "​Utilisateur"​ (formulaires en ligne)== 
 +Pour les instructions souvent utilisées, telles que des déplacements simples, on dispose de formulaires en ligne dans le KSS. Ceci facilite la programmation. 
 + 
 +==Programmation pour le groupe d'​utilisateur "​Expert"​ (syntaxe KRL)== 
 +Le mode utilisateur Expert donne accès à l’entièreté de la syntaxe KRL.  
 + 
 + 
 +=====Présentation de l'​application à réaliser===== 
 +On se propose au cours de ce TP de résoudre un Rubik'​s cube à l'aide du bras KUKA. 
 +Le robot est équipé d'une pince pneumatique permettant de saisir le cube. De plus un support fixe sera placé dans l'​espace de travail pour que le robot puisse faire tourner les deux premières rangés de cubies (facette d'un Rubik'​s cube). 
 +  
 +{{http://​homepages.laas.fr/​tflayols/​files/​ressources_kuka/​support_cube.PNG|}} 
 + 
 +Par un ensemble de manipulation à définir, le robot sera capable de faire tourner le cube et le replacer dans dans le socle dans toutes les orientations.  
 + 
 +Ainsi, par déplacement successifs le robot disposera des mouvements de base pour entamer la résolution du Rubik'​s cube. 
 + 
 +Un système de vision permet d'​observer la face supérieure du cube et met à disposition les couleurs des 9 cases sur un serveur de capteur (Serveur TCP). 
 + 
 +Un programme python se charge de donner les ordres de déplacement au robot KUKA sur demande.  
 + 
 +Dans un premier temps, ce programme récupère les configurations de chaque faces du cube en donnant les ordre de déplacement permettant de présenter les différentes faces. 
 +Une fois les 6 faces connues, l'​application ​ puis fait appel à un algorithme de résolution [[https://​github.com/​Wiston999/​python-rubik]]. 
 +Finalement, les consignes de résolutions sont envoyés au robots au fur et à mesure de leurs executions. 
 + 
 +==== Notations ==== 
 +Pour résoudre un Rubik'​s cube, un ensemble de notation standards ont été définies. C'est sous cette forme que les algorithmes de résolution donnent les séquence de mouvement à réaliser. Elles expriment les mouvement en considérant l'​orientation du robot dans le monde (faces UP, DOWN, LEFT, RIGHT, FRONT et BACK). 
 + 
 +Avec notre système robotique, nous sommes obligés de tourner le cube pour présenter la face à faire tourner vers le bas. Aussi dans l'​ensemble des programmes, on appellera les faces non pas par leurs orientations géométriques,​ mais par leurs couleurs centrale. (Red, Yellow, Orange, Blue, While, Green). 
 +Les ordres de résolutions sont alors, une couleur de face, et un sens de rotation horaire (CW - ClockWise) ou anti horaire (CCW - ConterClockWise). L'​application de résolutions traduit la rotation d'une face (Rouge par exemple) par des rotations de l'​ensemble du cube, pour placer la face rouge dans le socle, puis une rotation des deux rangés supérieures.  
 + 
 +Mouvements de base: 
 +La résolution du Rubik'​s cube est traduite en mouvements de base qui sont: 
 + 
 +  * code 0 - **FCW** ​ : Tourner l'​ensemble du cube dans le sens horaire en regardant la face FRONT (avant) 
 +  * code 1 - **FCCW** : Tourner l'​ensemble du cube dans le sens anti-horaire en regardant la face FRONT (avant) 
 +  * code 2 - **UCW** ​ : Tourner l'​ensemble du cube dans le sens horaire en regardant la face UP (du haut) 
 +  * code 3 - **UCCW** : Tourner l'​ensemble du cube dans le sens anti-horaire en regardant la face UP (du haut) 
 +  * code 4 - **MCW** ​ : En bloquant la face DOWN (du bas), tourner les deux rangés du haut dans le sens horaire  
 +  * code 5 - **MCCW** : En bloquant la face DOWN (du bas), tourner les deux rangés du haut dans le sens anti-horaire 
 +Où le **code** est une valeur entière transmise au robot  
 +Un dernier code transmit comme un mouvement permet d'​informer le robot que la manipulation est finie 
 +  * code 100 - **END** : Tous les mouvements ont été transmis, fin du programme KRL 
 + 
 +A l'​initialisation,​ le cube doit être placé avec le centre de chaque face dans la configuration suivante: 
 +  * FRONT center -> RED 
 +  * RIGHT center -> GREEN 
 +  * UP center -> YELLOW 
 +  * ... 
 + 
 +{{http://​homepages.laas.fr/​tflayols/​files/​ressources_kuka/​setup_kuka.jpg|}} 
 + 
 +===== Annexes ===== 
 +====KUKA.Si Pro 3.04==== 
 + 
 +Modalisation de la pince: 
 +{{http://​homepages.laas.fr/​tflayols/​files/​ressources_kuka/​Kuka%20Sim%20Pro%203.docx|Doc_modelisation}} 
 +{{http://​homepages.laas.fr/​tflayols/​files/​ressources_kuka/​Kuka_Gripper.vcmx|Kuka_Gripper.vcmx}} 
 + 
 +===Configuration de licence=== 
 +{{http://​homepages.laas.fr/​tflayols/​files/​ressources_kuka/​01.PNG|}} 
 +{{http://​homepages.laas.fr/​tflayols/​files/​ressources_kuka/​02.PNG|}}
 ===Activation de l'​option "​connectivity"​=== ===Activation de l'​option "​connectivity"​===
  
Ligne 15: Ligne 106:
  
  
-===Programme pour extraire les faces d'un rubiks cube===+====Programme pour extraire les faces d'un rubiks cube====
 <file python tcv3.py> <file python tcv3.py>
 #​!/​usr/​bin/​python3 #​!/​usr/​bin/​python3
Ligne 248: Ligne 339:
 {{http://​homepages.laas.fr/​bvandepo/​files/​kuka/​rubiks.jpg}} {{http://​homepages.laas.fr/​bvandepo/​files/​kuka/​rubiks.jpg}}
  
 +
 +====Programme KRL====
 +<file KRL TestTpCube.src>​
 +&ACCESS RVP
 +&REL 14
 +&PARAM EDITMASK = *
 +&PARAM TEMPLATE = C:​\KRC\Roboter\Template\vorgabe
 +DEF TestTpCube( )
 +;FOLD Declaration
 +DECL INT cmdN
 +DECL BOOL FLAG_END
 +;ENDFOLD (Declaration)
 +;FOLD INI;%{PE}
 +  ;FOLD BASISTECH INI
 +    GLOBAL INTERRUPT DECL 3 WHEN $STOPMESS==TRUE DO IR_STOPM ( )
 +    INTERRUPT ON 3 
 +    BAS (#INITMOV,0 )
 +  ;ENDFOLD (BASISTECH INI)
 +  ;FOLD USER INI
 +    ;Make your modifications here
 +   
 +  ;ENDFOLD (USER INI)
 +;ENDFOLD (INI)
 +
 +;FOLD PTP HOME  Vel= 100 % DEFAULT;​%{PE}%MKUKATPBASIS,​%CMOVE,​%VPTP,​%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
 +$BWDSTART = FALSE
 +PDAT_ACT=PDEFAULT
 +FDAT_ACT=FHOME
 +BAS (#​PTP_PARAMS,​100 )
 +$H_POS=XHOME
 +PTP  XHOME
 +;ENDFOLD
 +
 +
 +;FOLD initialisation et ouverture du canal 
 +;Initialize and Open channel ​
 +   ​RET=EKI_Init("​configcomcube"​)
 +   ​RET=EKI_Open("​configcomcube"​)
 +   WAIT FOR $FLAG[1]
 +   ​FLAG_END = FALSE
 +   ​WHILE(NOT FLAG_END)
 +      ;Envoi des données
 +         ​OFFSET=0
 +         FOR i=(1) TO (100)
 +            Cmd[i]=0
 +         ​ENDFOR
 +         ​SWRITE(Cmd[],​STATE,​OFFSET,"​%s","​getmove"​)
 +         ​RET=EKI_Send("​configcomcube",​Cmd[])
 +         wait sec 1.5
 +      ​
 +      ;​récupération des données
 +       ;RET = EKI_CheckBuffer("​configcomcube","​Buffer"​)
 +       ;wait sec 1
 +       ;IF RET.Buff <> 0 THEN
 +          WAIT FOR $Out[60]
 +          RET=EKI_GetString("​configcomcube","​Buffer",​Cmd[])
 +          $Out[60]=FALSE
 +          wait sec 1
 +       ;​ENDIF
 +      ;​************************************************************
 +       ​OFFSET=0
 +       ​SREAD(Cmd[],​STATE,​OFFSET,"​%d",​cmdN)
 +       if cmdN == 20 THEN
 +          ​
 +         ;msg = {modul[] "​Info",​ nr 123, msg_txt[] ​ "​Caractere 20 recu"}
 +         ;opt = {vl_stop true, clear_p_reset true, clear_p_SAW false,​log_to_DB true}
 +         ;​nHandle = Set_KrlMsg (#notify, msg,par[], opt)
 +         ;wait sec 1
 +       ​endif ​  
 +       
 +       if cmdN == 0 THEN
 +          ​
 +         ;msg = {modul[] "​Info",​ nr 123, msg_txt[] ​ "​Caractere 0 recu"}
 +         ;opt = {vl_stop true, clear_p_reset true, clear_p_SAW false,​log_to_DB true}
 +         ;​nHandle = Set_KrlMsg (#notify, msg,par[], opt)
 +         ;Fin de programme
 +         ​FLAG_END = TRUE
 +       ENDIF
 +   ​ENDWHILE
 +
 +
 +
 +;FOLD PTP HOME  Vel= 100 % DEFAULT;​%{PE}%MKUKATPBASIS,​%CMOVE,​%VPTP,​%P 1:PTP, 2:HOME, 3:, 5:100, 7:DEFAULT
 +$BWDSTART = FALSE
 +PDAT_ACT=PDEFAULT
 +FDAT_ACT=FHOME
 +BAS (#​PTP_PARAMS,​100 )
 +$H_POS=XHOME
 +PTP  XHOME
 +;ENDFOLD
 +
 +END
 +</​file>​
 +
 +
 +<ifauth @prof>
 +
 +
 +
 +FP: Fermeture Pince
 +
 +OP: Ouverture Pince
 +
 +Pi: Position i
 +
 +^  FCW  ^ FCCW  ^  UCW  ^ UCCW  ^  MCW  ^ MCCW  ^
 +|  OP   ​| ​ OP   ​| ​ OP   ​| ​ OP   ​| ​ OP   ​| ​ OP   |
 +|  P3   ​| ​ P2   ​| ​ P5   ​| ​ P6   ​| ​ P5   ​| ​ P6   |
 +|  P4   ​| ​ P1   ​| ​ P7   ​| ​ P8   ​| ​ P7   ​| ​ P8   |
 +|  FP   ​| ​ FP   ​| ​ FP   ​| ​ FP   ​| ​ FP   ​| ​ FP   |
 +|  P3   ​| ​ P2   ​| ​ P5   ​| ​ P6   ​| ​ P8   ​| ​ P7   |
 +|  P2   ​| ​ P3   ​| ​ P6   ​| ​ P5   ​| ​ OP   ​| ​ OP   |
 +|  P1   ​| ​ P4   ​| ​ P7   ​| ​ P7   ​| ​ P6   ​| ​ P5   |
 +|  OP   ​| ​ OP   ​| ​ OP   ​| ​ OP   ​| ​ P0   ​| ​ P0   |
 +|  P2   ​| ​ P3   ​| ​ P5   ​| ​ P5   ​| ​      ​| ​      |
 +|  P0   ​| ​ P0   ​| ​ P0   ​| ​ P0   ​| ​      ​| ​      |
 + 
 +
 +</​ifauth>​
kuka.txt · Dernière modification: 2020/01/22 12:58 par bvandepo