Un robot industriel peut être vu comme un système mécanique articulé.
Les différents axes sont commandés par l'intermédiaire d'un moteur
(pas à pas ou continu) et l'ensemble constitue un système multivariable.
Pour pouvoir faire exécuter une action ou tâche au robot manipulateur,
il est nécessaire de commander ce système multivariable pour positionner les différents axes.
Le but de la programmation robotique est de fournir les consignes de position
qui permettent d'exécuter la tâche désirée.
Il faut disposer de langages et d'environnements de programmation souples et structurés.
Beaucoup de constructeurs ont crée des langages de programmation spécifiques facilitant le travail
des programmeurs non initiés en robotique et permettant par là même de créer
et de modifier plus rapidement les programmes d'utilisation de leur robot.
En général, on distingue 4 niveaux de programmation classés par ordre de flexibilité croissante :
Le langage AML/2 possède des caractéristiques de niveau effecteur. Il s'agit d'un langage interprété qui va manipuler des données de type constantes ou variables. Sa particularité est d'intégrer des fonctions spécifiques à la robotique telles que :
De telles fonctions impliquent que le système prenne en compte les calculs du modèle géométrique direct et inverse.
Il devient alors plus simple d'amener l'effecteur d'un robot en un point quelconque de l'espace,
référencé par ses coordonnées cartésiennes et d'orienter la pince comme on le désire.
Le programmateur est donc libéré d'une somme de calculs liée à la structure du robot.
AML/2 intègre les modèles géométriques de 2 robots IBM : 7575 et 7576.
L'objectif de ce BE est de réaliser la saisie automatique d'une pièce après détection de sa situation par un système de vision.
L'effecteur du robot est muni d'une caméra qui lui est rigidement fixée.
Celle-ci est couplée à un système industriel programmable de reconnaissance des formes, le COGNEX.
La tâche robotique à réaliser s'effectuera donc en deux étapes : la localisation de la pièce par la vision,
puis sa saisie par le robot.
La localisation est réalisée par le COGNEX, à l'aide d'un programme (fourni)
développé en LV (langage de programmation de ce système de reconnaissance).
Le COGNEX renvoie alors la position et l'orientation de la pièce considérée exprimées dans le repère lié à la caméra.
Le robot ne pouvant être commandé que par rapport à son repère de base,
la saisie de la pièce considérée requiert la détermination des différentes transformations
nécessaires à l'expression des coordonnées de l'objet dans ce repère.
Le travail à effectuer consistera à calculer les changements de base adéquats et à programmer le robot à l'aide du langage AML/2.
Après avoir validé en simulation les programmes AML, un test réel sera mené sur le robot SANKYO.
Ce robot industriel étant très rapide, une attention particulière est impérative lors de son fonctionnement.
appl4.aml
et le compléter.
On utilise un robot de type IBM 7576
possédant 4 degrés de liberté.
Un programme sur PC permet de faire communiquer le COGNEX avec le robot
SANKYO.
Le dialogue entre le robot et le système de reconnaissance se fait par l'intermédiaire d'une ligne RS232.
Le système de reconnaissance effectue les tâches de vision suivantes :
Lorsque l'objet est reconnu par le COGNEX, la position retournée correspond au centre de gravité. Les coordonnées sont transmises en 1/10 mm. L'orientation de l'objet est calculée par rapport à une orientation de référence apprise lors de la phase d'apprentissage. Elle est également donnée en 1/10 de degré.
Le système COGNEX, programmé en Visual Basic et utilisant l'environnement de vision OMIWin,
permet de mettre en oeuvre la reconnaissance et la localisation d'objet en temps réel.
Avant toute utilisation, il est nécessaire de configurer et de calibrer le système de vision.
cognex_robot
.Il faut faire une translation de l'organe terminal pour le placer au dessus du dé.
Voici les deux bras du robot représentés dans le repère de base. On a besoin de l'angle Θ entre le repère caméra porté par l'organe terminal et le repère de base.
|
On va maintenant utiliser les informations de coordonnées provenant de COGNEX pour calculer la translation à effectuer.
Voici le repère caméra représenté dans le repère de base du robot.
|
On va simplement utiliser l'information de l'angle du dé dans le repère caméra fourni par COGNEX.
On fera donc une rotation de l'organe terminal d'un angle Θ pour être aligné sur les faces du dé.
##partie binôme irr03-------------------------------------- ##le point c0 (-130.0729,58.36754) est la coordonnée du dé dans le repère caméra lorsqu'il est sous la pince ##le point c1 (Xc1,Yc1) est la coordonnée actuelle (par vision) du dé dans le repère caméra dxg = -130.0729 - Xc1; ##translation à effectuer dans le repère caméra en X. dyg = 58.36754 - Yc1; ##translation à effectuer dans le repère caméra en Y. <q1,q2> = INVKIN(QPOSITION()); #récupère q1 et q2 de la position courante (liaisons 1 et 2) ##calcul de la translation (dxw,dyw) dans le repère de base dxw = dxg * cos(90 + q1 + q2) - dyg * sin(90 + q1 + q2); dyw = dxg * sin(90 + q1 + q2) + dyg * cos(90 + q1 + q2); ##de_teta est l'angle du dé dans le repère image constaté par reconnaissance DPMOVE(<-dyw,dxw,0,de_teta>); ##déplacement relatif DPMOVE(<0,0,-230,0>); ##on abaisse l'outil DELAY(1); ##pause de 1 seconde pour contrôler l'alignement DPMOVE(<0,0,-15,0>); ##mise en position de saisie DELAY(1); GRASP(); ##fermeture de la pince DELAY(2); DPMOVE(<0,0,245,23>); ##on remonte et on tourne DELAY(1); DPMOVE(<0,0,-244,0>); ##on redescend DELAY(1); RELEASE(); ##ouverture de la pince DELAY(1); DPMOVE(<0,0,244,-de_teta>>); #et on remonte en tournant ##fin partie binôme irr03----------------------------------