/ Accueil / Classification hybride ART-CS
     | Ecrire

Agir sur l'environnement

 

Pour boucler le cycle il ne reste plus qu'à réaliser les actions décidées à l'étape précédente. Il faut définir les mouvements du bras manipulateur qui correspondent à chaque action, relativement au problème à résoudre. En effet si le but du système est de saisir ou de pousser des objets, les étapes précédentes ne changent pas (seul les quantités de situations et d'actions possibles vont varier). En revanche, il faut redéfinir complètement les primitives du robot pour passer d'un problème à l'autre. Nous commencerons donc par exposer le travail demander au système pour définir les actions élémentaires que le bras articulé devra être capable de réaliser.

Comme il a déjà été dit, le robot doit agir sur une scène de petits objets perçue par la caméra. Le problème à résoudre dépend à la fois du nombre d'objets perçus et de leur forme. Il se décompose en trois sous problèmes :

  • 2 objets : le robot doit pousser ces deux pièces l'un contre l'autre. Par poussées successives, amener les deux pièces en contact. Le problème est terminé dès qu'il n'y plus qu'un seul objet perçu. Ceci va permettre d'amorcer l'apprentissage en évitant dès le départ une trop grande complexité des tâches à effectuer.
  • 3 objets de deux formes différentes, soit un couple de pièces identiques et un intrus : le bras doit rassembler les deux formes identiques sans se préoccuper de la dernière. Dans cette extension la forme des objets perçus entre en compte dans les actions à réaliser. Le système s'arrête quand il ne perçoit que deux objets, i.e. dès que deux pièces ont été accolées.
  • Plus de trois objets, soit plus d'un couple de formes identiques et éventuellement un intrus : ce dernier problème est en réalité le même que le précédant et seul le nombre de couple d'objets de même forme a été augmenté. La présence de l'intrus ne se justifie plus car d'un qu'un couple a été formé, la forme perçue de ce couple est alors considérée comme un objet intrus. Le problème est résolu quand tous les couples ont été réunis, c'est à dire lorsque le nombre d'objets perçu est la moitié du nombre de pièce initial.

Enfin le système, pour connaître quel est le problème à résoudre n'a besoin de connaître que le nombre initial d'objets. C'est le nombre de pièces perçues après la première acquisition qui lui permettra de déterminer ce qu'il doit faire.

Tout comme dans la simulation, il faut déplacer un objet vers une cible. De même qu'auparavant nous allons donc définir huit déplacements élémentaires selon huit directions différentes de façon à pouvoir diriger la pièce où on le désir. Une méthode simple à mettre en oeuvre est de construire huit primitives qui pousseront l'objet de quelques centimètres, chacune selon une des huit directions possibles. Il suffit d'amener l'organe terminal du robot contre la face de l'objet opposée au mouvement, puis, de déplacer la pince dans la direction du déplacement souhaité.

8 actions élémentaires, soit 8 directions de poussée élémentaire
8 actions élémentaires, soit 8 directions de poussée élémentaire

Pousser des objets est cependant une tâche difficile à réaliser correctement car elle a l'avantage et le désavantage d'être très stochastique. L'efficacité du mouvement dépend de nombreux paramètres : géométrie de l'objet, masse de l'objet, nature du support [Z&M 93]... Toutefois cette irrégularité est souhaitable pour évaluer correctement l'apprentissage, et surtout, sa capacité à affronter des situations changeantes.

Décomposons maintenant une action :

  • Etape 1 : placer la pince du robot au-dessus de l'objet.
  • Etape 2 : déplacer la pince vers le coté à pousser, i.e. effectuer le déplacement inverse à celui souhaité pour la pièce.
  • Etape 3 : descendre la pince au niveau de l'objet.
  • Etape 4 : déplacer la pince vers la pièce, c'est à dire selon la direction du mouvement désiré.
  • Etape 5 : remonter la pince.
  • Etape 6 : placer le robot en position "garage" (il ne faut pas garder la main devant les yeux si on veut voir le résultat de l'action).

Pour chacune des huit actions possibles, le robot effectuera cette série de mouvements. Les étapes 2 et 4 seront complètement spécifiée par le numéro de l'action à réaliser qui code la direction de la poussée.

Reprenons les 6 étapes d'un mouvement décrites au paragraphe précédant. Chacun des déplacements élémentaires s'y trouve défini relativement au mouvement de l'étape précédente. La première d'entre celles-ci est donc déterminante de l'ensemble de la trajectoire que la pince va parcourir au cours de la poussée d'un objet. Il nous faut donc connaître la localisation précise de la pièce à déplacer. Cette information est disponible et fournie par la perception qui, en plus de décrire les objets présents dans la scène, indique leur position (au référentiel près, cf. chapitre suivant).

Nous connaissons maintenant les coordonnées cartésiennes de l'objet et par conséquent celles de l'ensemble des points définissant la trajectoire à effectuer. Mais notre robot à cinq degrés de liberté, se pilote en lui indiquant les valeurs angulaires sur lesquelles chacune de ses articulations doit se positionner. Il faut transformer des coordonnées cartésiennes (x, y, z), en coordonnées angulaires ( )en tenant compte de la géométrie du robot : distances entre les axes et orientations de ceux-ci.

La description de Roth-Pieper de notre robot permet d'établir les matrices élémentaires de Denavit, supports du modèle géométrique inverse [Gau 95]. Ce modèle permet de construire la fonction transformant les coordonnées cartésiennes en coordonnées angulaires. Nous utiliserons pour nos expérimentations un bras articulé Mini S 2 de Jeulin bien connu à l'E3i et dont on dispose un modèle géométrique inverse performant [TP robot à je ne sais qui...].

Cette méthode est très précise mais demande de nombreux calculs. Les mouvements que nous souhaitons réaliser sont relativement simples (orientation de la pince fixe vers le bas, pas de prise d'objets...) et ne nécessite pas une précision au millimètre près. Jeulin fourni avec son robot un logiciel d'apprentissage (écrit en BASIC [Doc 1]) de trajectoire incorporant une procédure rapide de transformation de coordonnées. Celle-ci se fonde sur des considérations géométriques plus élémentaires pour trouver l'angle de chaque axe, et demande moins de calculs. Sa précision est moindre que celle du modèle géométrique inverse (notamment en ce qui concerne l'orientation de la pince) mais est largement suffisante pour notre application. C'est pourquoi l'écriture du programme de commande du robot a été fondée sur la traduction en Pascal, de la procédure, plus simple à mettre en oeuvre, qui vient d'être évoquée (cf. listing pousse.pas en deuxième partie de ce rapport).

mis à jour le : 15/04/2006 - 21:58