Ernest IRL

Ernest IRL

Description :

Ce robot est destiné à tester le mécanisme de la mémoire spatiale extra-personnelle en environnement réel. Le robot évolue dans un environnement similaire à l'environnement simulé : les murs sont verts, les proies et les algues sont représentées par des carrés de carton colorés.

Environnement
Ernest se promène dans le monde réel...
Le robot a été construit en Lego Mindstorms et son design implémente son système interactionnel : il s'agit d'une base roulante pouvant avancer tout droit ou tourner sur lui-même. Son système sensoriel comprend un capteur de contact à l'avant lui permettant de détecter l'interaction "se cogner", un capteur de luminosité sous le robot détectant le passage sur un carré bleu, qui définit l'interaction "manger une proie". Une caméra panoramique surélevée fournit les interactions visuelles. Cette caméra est constituée d'une webcam pointant vers une surface sphérique réfléchissante donnant un champs de vision de 180°. Les couleurs sont ensuite filtrées, et les éléments "masqués" sont effacés. L'image est ensuite projeté sur une surface plane pour définir les interactions visuelles énactées.

johnny1
Le système visuel du robot : robot dans son environnement, image perçue par la caméra, image filtrée, image projeté.
La communication avec le PC s'effectue par infrarouge avec la brique Lego RCX. Un programme en langage Not Quite C (NQC), permet au RCX de recevoir des commandes d'actions et d'envoyer le résultat des interactions.


Ressources :

- Modèle Lego du robot (à ouvrir avec leoCAD) : ernestIRL.lcd
Notons que les pièces non Lego (webcam, miroir et élastiques) ainsi que les pièces souples ne sont pas représentées.

ernestIRL
Le modèle du robot sous leoCAD.

- Modèle Lego Blender : ernestIRL.blend
L'ensemble des pièces peut être manipulé en utilisant l'élément empty nommé "Robot". Le modèle dispose également d'une caméra au niveau de la webacm permettant de simuler l'image produite par celle-ci. Pour choisir une caméra, faire clic droit sur celle-ci, puis Ctrl+0.
ernestIRL webcam
Le modèle blender du robot. A droite, le point de vue du robot.


- interface java-RCX : Interface.java

- programme nqc : ernest.nqc

Sous windows, le programme nqc peut être transféré au RCX à l'aide du programme Bricx Command Center (Bricxcc).

Sous Linux, il suffit d'installer le paquet "nqc", puis, d'ouvrir une console et de taper la commande : nqc -S"port serie" -d "nom_du_fichier.nqc".
"port serie" correspond au port utilisé. Dans mon cas, j'utilise un convertisseur USB vers port serie (/dev/ttyUSB0).
La commande est donc : nqc -S/dev/ttyUSB0 -d ernest.nqc


Commandes :

Les commandes sont les suivantes : (les messages utilisés ont été choisi plus ou moins aléatoirement)
- avancer d'un pas : 42. Le robot retourne 2 si il s'est cogné, 3 si il s'est arrêté sur une surface sombre, 1 sinon.
- tourner à gauche de 45° : 64.
- tourner à droite de 45° : 128.
- tourner à gauche de 90° : 164.
- tourner à droite de 90° : 200.
Dans le cas d'une rotation, le robot retourne 1.

Ces commandes peuvent être envoyés avec Bricxcc, avec l'interface java fournie ci-dessus ou avec la commande : nqc -S"port serie" -msg "commande" (par exemple, nqc -S/dev/ttyUSB0 -msg 42 ) sous Linux.

Expériences :

le robot a permis de mettre en évidence la robustesse de notre système car, même avec une mémoire spatiale peu fiable et des moteurs peu précis, le comportement du robot est très similaire à celui de l'agent simulé : le robot génère des signatures d'interactions pertinentes et se dirige naturellement vers les proies tout en évitant les murs.

On observe sur les signatures d'interactions que la partie visible du robot (reflet de la caméra), n'est pas pris en considération. En effet, cet élément est toujours présent dans le champs visuel, et n'est donc pas pertinente pour prédire le résultat d'une interaction. Le robot ne fait ainsi ''pas attention'' à sa caméra. Une autre observation intéressante est que lorsque la batterie du robot se décharge, et que le pas du robot se réduit, les signatures s'adaptent à cette variation. Le modèle montre ainsi une tolérance et une adaptativité aux pannes.

Ernest IRL
Signatures des interactions avancer, se cogner, manger. On observe que la partie visible du robot (reflet de la caméra) n'est pas prise en considération dans les signatures.