Urbi - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Introduction

Urbi
Apparu en 2003
Auteur Jean-Christophe Baillie
Développeurs Gostai
Dernière version stable 2.0 (le 3 mai 2010)[+/−]
Paradigmes Langage d'orchestration parallèle et événementiel
Influencé par C++, Ruby, Io
Système d'exploitation Multiplate-forme
Licences GNU Affero GPL V3
Site Web www.urbiforge.org

Urbi (Interface Universelle pour Systèmes Interactifs, Universal Real-time Behavior Interface), est une plate-forme logicielle utilisée pour le développement d'applications dans les domaines de la robotique et des systèmes complexes.

Urbi intègre une architecture distribuée de composants en C++ appelée UObject, ainsi qu'un langage de script parallèle et évènementiel appelé urbiscript. UObject facilite l'intégration d'objets C++ dans le langage, et permet leur exécution locale ou distante, tandis qu'urbiscript agit comme un outil d'orchestration pour coordonner les différents composants et leurs intéractions.

Le langage urbiscript

Urbi a été initialement développé depuis 1999 par Jean-Christophe Baillie au laboratoire de Robotique Cognitive de l'ENSTA ParisTech, à Paris. Il est maintenant développé par la société Gostai, fondée en 2006.

Le langage urbiscript est un langage de script qui peut être décrit comme un langage d'orchestration : de même que Lua dans le domaine du jeu vidéo, Urbi peut intégrer des composants C++, les parties algorithmiques gourmandes en CPU étant allouées aux composants C++, tandis que la description des modèles comportementaux généraux restent du domaine du langage de script, qui est plus flexible, plus facile à maintenir, et qui permet des interactions dynamiques durant l'exécution du programme. Le langage urbiscript apporte de nouvelles abstractions utiles lors du développement, les concepts de programmation parallèle et de programmation évènementielle faisant partie intégrante du langage. La spécification de comportements concurrents et la réaction à des évènements étant des exigences clefs de la plupart des applications de robotique et d'intelligence artificielle, Urbi est de fait particulièrement adapté à ce type d'applications.

Outre sa flexibilité et sa modularité, le point fort du langage urbiscript est sa simplicité, offrant une interface intuitive aux débutants, mais également des fonctions avancées aux développeurs confirmés.

Exemples

L'exemple ci-dessous montre comment écrire une boucle vision/action de suivi de balle en Urbi : headYaw et headPitch représentent deux objets moteurs (des composants matériels, c'est à dire des drivers), ball est l'objet (composant logiciel) représentant la balle détectée :

        whenever (ball.visible)         {          headYaw.val   += camera.xfov * ball.x          &          headPitch.val += camera.yfov * ball.y        };      

whenever est utilisé pour déclencher un bloc de code de façon répétée tant que la condition associée reste vraie. Le signe « & » est utilisé pour spécifier que deux commandes (ou groupes de commandes) doivent être lancées exactement au même instant et exécutées en parallèle.

Un autre mot-clef événementiel est at, qui déclenche le code associé une fois seulement, lorsque la condition invoquée devient vraie :

        at (speech.hear("Bonjour"))        {          voice.say("Comment vas-tu ?")          &          robot.standup;        }      

Toute commande (ou groupe de commandes) est « marquable », ce qui permet plus tard si besoin de l'annuler, de la bloquer ou de la geler :

        myTag:          every (2s)            echo ("Boucle sans fin"),        at (button.pressed)          myTag.stop;      

Dans l'exemple ci-dessus, la virgule à la fin de la commande permet l'exécution en tâche de fond de la commande qui la précède, entrainant la poursuite de l'exécution du programme et en particulier à la commande 'at' qui suit de s'exécuter sans attendre la fin de la boucle infinie.

Page générée en 0.465 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise