URBI

URBI

Urbi

URBI
Importez le logo de ce langage de programmation
Apparu en 2003
Auteur Jean-Christophe Baillie
Développeurs Gostai
Dernière version stable 1.0 (le 11 avril 2007)[+/−]
Paradigmes Langage parallèle et événementiel d'interfaces
Influencé par C++, Ruby, Io
Système d'exploitation Multiplate-forme
Licences UObject est GPL, le moteur URBI est propriétaire
Site Web [1]

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.

Elle est basée sur le langage urbiScript qui est un langage de script événementiel d'une syntaxe proche de C++. Urbi intègre également une architecture distribuée de composants appelée UObject, qui facilite l'intégration d'objets C++ dans le langage, et permet leur exécution locale ou distante.

Sommaire

Le langage urbiScript

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

urbiScript est un langage de script qui peut être décrit comme un langage d'interface : 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. 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 devient particulièrement adapté à ces types 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és aux développeurs confirmés.

Fonctions

  • Programmation parallèle et événementielle
  • Programmation par prototypes
  • Syntaxe proche du C++
  • Architecture de composants C++ (UObject) avec possibilité de lier des objets ou de les exécuter à distance
  • Architecture Client/Server
  • Interfaces clients avec Java et Matlab (Urbi SDK)
  • Plates-formes multiples : Linux, Mac, Windows, et environnements embarqués (x86, ARM, mips, powerPC...)
  • Marquage de commandes permettant leur contrôle de façon asynchrone

Exemples

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

 whenever (ball.visible) 
 {
   headPan.val  = headPan.val  + camera.xfov * ball.x
   &
   headTilt.val = headTilt.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, lorsque la condition invoquée devient vrai :

 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:
   loop
     echo ("Boucle sans fin"),
 at (button.pressed)
   myTag.stop;

Noter dans l'exemple ci-dessus la virgule à la fin de la commande. Elle permet l'exécution en tâche de fond de la commande qui la précède, permettant la poursuite de l'exécution du programme, en particulier à une commande 'at' ultérieure de s'exécuter.

Architecture de composants UObject

L'architecture de composants UObject, actuellement basée sur la bibliothèque C++ UObject, permet d'interfacer n'importe quel objet C++ avec Urbi/urbiScript, rendant les méthodes et les attributs sélectionnés du code C++ visibles directement depuis le langage de script. Des indicateurs peuvent être positionnés pour permettre de prévenir le composant C++ de tout changement effectué sur les attributs de l'objet par le langage urbiScript.

Un objet C++ (UObject) peut être utilisé localement, soit en le liant statiquement lors de la compilation, soit par chargement dynamique ultérieur. L'objet C++ partage alors directement la mémoire du noyau Urbi, permettant une intégration efficace. Il s'agit d'une utilisation typique pour les composants critiques tels que les drivers de moteurs ou de capteurs. Ce même objet C++ peut également être utilisé sans modifications en tant que composant distant. Dans ce cas, il devient un programme autonome qui est exécuté avec comme paramètre l'adresse IP du moteur Urbi. Dans les deux cas, l'objet apparaitra et sera traité dans Urbi comme s'il était un objet natif.

Les composants en licence GNU GPL développés par la communauté peuvent être trouvés et échangés sur le site web communautaire Urbiforge.

Robots et simulateurs compatibles URBI

Livrés :

Annoncés :

Environnement de développement

Urbi est fourni avec URBI Studio qui intègre un éditeur d'animations, et d'un éditeur de comportements pour créer graphiquement des machines à état fini dans lesquels les états sont de simples programmes Urbi.

liens externes

  • Portail de la robotique Portail de la robotique
  • Portail de l’informatique Portail de l’informatique
Ce document provient de « Urbi ».

Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article URBI de Wikipédia en français (auteurs)

Игры ⚽ Поможем написать курсовую

Regardez d'autres dictionnaires:

  • urbi — urbi …   Dictionnaire des rimes

  • Urbi — Développeur Gostai Première version 2003 …   Wikipédia en Français

  • URBI — (Universal Real time Behavior Interface Универсальный Интерфейс Поведения Реального времени) кросс платформенная открытая программная платформа на C++, используемая для разработки приложений для робототехники и сложных систем. Urbi основывается… …   Википедия

  • Urbi — [[Archivo:Archivo:Urbi.2.0.cube.lightbg.png|220px]] Desarrollador(es) Gostai http://www.urbiforge.org/ Información general Extensiones com …   Wikipedia Español

  • URBI — Saltar a navegación, búsqueda URBI Paradigma: Robótica (educativa) Apareció en: 2007 Diseñado por: Jean Christophe Baillie Implementaciones: Multiplataforma Urbi (Universal Real time Behavior Interface …   Wikipedia Español

  • URBI — Indiae populi. Plin. l. 6. c. 23 …   Hofmann J. Lexicon universale

  • URBI — infobox programming language name = URBI paradigm = Parallel and Event driven Interface Language year = 2003 designer = Jean Christophe Baillie developer = Gostai latest release version = 1.0 latest release date = April 11 2007 influenced by =… …   Wikipedia

  • urbi et orbi — ● urbi et orbi locution adjectivale et adverbe (mots latins signifiant à la ville de Rome et à l univers) Se dit des bénédictions solennelles adressées par le souverain pontife à Rome et au monde entier. ● urbi et orbi (expressions) locution… …   Encyclopédie Universelle

  • Urbi et Orbi — literally to the [of Rome] and to the , was a standard opening of Roman proclamations. The term is now used to denote a papal address and Apostolic Blessing that is addressed to the City of Rome and to the entire world.The blessing takes place a …   Wikipedia

  • Urbi et Orbi — Saltar a navegación, búsqueda Urbi et orbi, palabras que en latín significan a la ciudad Roma y al mundo . Era la fórmula habitual con la que empezaban las proclamas del Imperio Romano. En la actualidad es la bendición más solemne que imparte el… …   Wikipedia Español

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”