Premiers pas avec URBI pour Webots

cette section fourni les bases pour utiliser URBI pour Webots.

Les mondes URBI

Nous fournissons des mondes de démonstration, avec différents robots, qui utilisent URBI comme controlleur. Ils sont localisés dans le répertoire: REPERTOIRE_WEBOTS/projects/packages/urbi/worlds/ . Ouvrez le monde nommé aibo_ers7_urbi_soccer.wbt. L'image en dessous est une copie-écran de ce monde. Vous pouvez voir un Aibo sur un terrain de football, avec une balle rose devant lui.

Si vous regardez l'arbre de scène de Webots, vous verrez que cet aibo (son vrai nom est ERS7) est un noeud CustomRobot, et qu'il utilise Urbi comme contrôleur.

Voyons comment ce contrôleur vous permet de contrôler le robot.

Le contrôleur URBI

Vous avez deux modes de contrôle votre robot avec le contrôleur URBI. Avec le premier mode, vous envoyez à distance des commandes au contrôleur URBI. Celui ci agît comme un serveur. Vous pouvez vous y connecter à travers le réseau, et lui envoyer des commandes URBI. Le second mode de controle vous permet d'écrire des scripts URBI qui seront chargés au démarage du contrôleur.

Envoyer des commandes avec un logiciel client

Pour se connecter au contrôleur URBI puis envoyer des commandes, vous avez besoin d'utiliser un logiciel client. Celui ci vous permet de vous connecter à une adresse sur le réseau et vous laisse envoyer des données par cette connection. Le programme client le plus simple est le programme telnet, disponible sur tous les systèmes d'exploitation (Windows, Linux et MacOs). Vous pouvez aussi utiliser un des programmes disponible sur Urbiforge (http://www.urbiforge.com) dans la section Outils (Tools). Par défaut, le contrôleur URBI lancé avec le monde aibo_er7_urbi_soccer est en attente de connections réseaux arrivant sur votre ordinateur, sur le port 54000. Aussi pour vous y connecter vous avez à spécifier l'adresse de votre ordinateur ('localhost') et le port (54000).

Telnet

Windows

Pour lancer telnet sous windows cliquez sur le menu Démarer (Start dans la version anglaise), puis sur Exéctuter (Run).

Tapez cmd et cliquez sur Ok. Ceci lancera une invite de commande Dos.

Dans l'invite de commande Dos tapez telnet localhost 54000.

Ceci lance telnet. Il se connecte au contrôleur URBI, et le contrôleur URBI lui envoi l'en-tête URBI (les lignes qui s'affiche sur l'écran). Dans la fenêtre le texte est mal affiché parce que certains caractères ont des problèmes de conversion. C'est quand même utilisable même si ce n'est pas vraiment commode.

Linux et MacOs

Ouvrez un nouveau shell et tapez telnet localhost 54000. Ceci lance telnet. Il se connecte au contrôleur URBI, et le contrôleur URBI vous envois l'en-tête URBI.

Utiliser telnet pour envoyer des commandes

Maintenant que vous êtes connecté au contrôleur URBI, vous pouvez lui envoyer des commandes pour faire bouger votre robot et le faire intéragir avec son environnemnt. Par exemple essayez de taper la commande suivante dans telnet:

	headPan = 50 time: 5s;
	headPan = -50 time: 5s;
	headPan = 0 time: 5s;
	

Vous verrez la tête d'aibo bouger vers la gauche, la droite et finalement vers le milieu.

Charger des programmes URBI au démarage du contrôleur

Il est possible d'écrire des scripts URBI et de les charger au démarage du contrôleur. Pour ce faire, il suffit d'écrire du code URBI dans un fichier, et de spécifier son chemin dans le noeud Webots "controllerArgs". Par exemple, créez un nouveau fichier texte, renommez le test.u et écrivez dedans:

robot.sit (),
    

Puis éditez le monde webots aibo_ers7_urbi_soccer.wbt, et ajoutez chemin vers votre fichier test.u à la ligne du noeud "controllerArgs".

controllerArgs "-f -p 54000 50 [ICI AJOUTEZ VOS FICHIERS]"
    

Par exemple si vous avez créé votre fichier dans:

  • C:/Program Files/webots/projects/packages/urbi/data/aibo/ (sous Windows)
  • /Applications/webots/projects/packages/urbi/data/aibo/ (sous Macos)
  • /usr/local/webots/projects/packages/urbi/data/aibo/ (sous Linux)

Vous pouvez spécifier le chemin de manière absolue:

  • C:/Program Files/webots/projects/packages/urbi/data/aibo/test.u (sous Windows)
  • /Applications/webots/projects/packages/urbi/data/aibo/test.u (sous Macos)
  • /usr/local/webots/projects/packages/urbi/data/aibo/test.u (sous Linux)

Ou vous pouvez le spécifier relativement à l'emplacement du controlleur Urbi. Disons que vous utilisez le controlleur Urbi qui se trouve ici:

  • C:/Program Files/webots/projects/default/controllers/urbi/urbi (sous Windows)
  • /Applications/webots/projects/default/controllers/urbi/urbi (sous Macos)
  • /usr/local/webots/projects/default/controllers/urbi/urbi (sous Linux).

Alors le chemin vers votre fichier relativement au controlleur Urbi est:

  • ../../../packages/urbi/data/aibo/test.u (sous Windows|Linux|Macos)

Ajoutez ce chemin au champs controllerArgs et cela donne:

# Sous Windows, version chemin absolu:
controllerArgs "-f -p 54000 50 \"C:/Program Files/webots/projects/packages/urbi/data/aibo/test.u\""
(Notez l'utilisation de \" \" autour du chemin, qui est obligatoire
lorsque le chemin contient des espaces. Ici entre Program et Files)

# Sous MacOs, version chemin absolu:
controllerArgs "-f -p 54000 50 /Applications/webots/projects/packages/urbi/data/aibo/test.u"

# Sous Linux, version chemin absolu:
controllerArgs "-f -p 54000 50 /usr/local/webots/projects/packages/urbi/data/aibo/test.u"

# Version chemin relatif (os independant)
controllerArgs "-f -p 54000 50 ../../../packages/urbi/data/aibo/test.u"
      

NB: Si vous avez des espaces dans le chemin vers votre fichier de script, vous devez ajouters des guillemets précédés de backslash afin que Webots et Urbi comprennent les chemins correctement.

Maintenant quand vous lancez Webots et que vous lancez le monde aibo_ers7_urbi_soccer.wbt vous pouvez vérifier que le controllerArgs a été correctement mis à jour.

Et si vous regardez la fenêtre du monde, vous pouvez voir que le contrôleur a exécuté le code URBI que vous avez spécifié: l'aibo s'est assis.