Urbi - Définition et Explications

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 (Ruby est un langage de programmation libre. Il est interprété, orienté objet, et...), Io
Système d'exploitation Multiplate-forme (Un logiciel multiplate-forme ou multiplateforme est un logiciel conçu pour fonctionner sur...)
Licences GNU (GNU est un projet de système d'exploitation composé exclusivement de logiciels libres.) Affero GPL V3
Site Web (Un site Web est un ensemble de pages Web hyperliées entre elles et mises en ligne à une...) 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 (L’architecture peut se définir comme l’art de bâtir des édifices.) 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 (Un outil est un objet finalisé utilisé par un être vivant dans le but d'augmenter son...) 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 (ParisTech, ou Institut des sciences et technologies de Paris, est un établissement qui...), à Paris (Paris est une ville française, capitale de la France et le chef-lieu de la région...). 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 (La vidéo regroupe l'ensemble des techniques, technologie, permettant l'enregistrement ainsi que la...), 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 (La programmation dans le domaine informatique est l'ensemble des activités qui permettent...) 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 (L'intelligence artificielle ou informatique cognitive est la « recherche de moyens...), Urbi est de fait particulièrement adapté à ce type d'applications.

Outre sa flexibilité et sa modularité, le point (Graphie) fort du langage urbiscript est sa simplicité, offrant une interface (Une interface est une zone, réelle ou virtuelle qui sépare deux éléments. L’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 (Un moteur est un dispositif transformant une énergie non-mécanique (éolienne, chimique,...) (des composants matériels, c (Le C++ est un langage de programmation permettant la programmation sous de multiples paradigmes...)'est à dire des drivers), ball est l'objet (De manière générale, le mot objet (du latin objectum, 1361) désigne une entité définie dans...) (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 (L'instant désigne le plus petit élément constitutif du temps. L'instant n'est pas...) 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 (Un robot est un dispositif mécatronique (alliant mécanique, électronique et...).standup;        }      

Toute commande (Commande : terme utilisé dans de nombreux domaines, généralement il désigne un ordre ou un...) (ou groupe de commandes) est « marquable », ce qui permet plus tard si besoin (Les besoins se situent au niveau de l'interaction entre l'individu et l'environnement. Il est...) 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.081 seconde(s) - site hébergé chez Amen
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
Ce site est édité par Techno-Science.net - A propos - Informations légales
Partenaire: HD-Numérique