URBI

URBI, est une plate-forme logicielle utilisée pour le développement d'applications dans les domaines de la robotique.



Catégories :

Robotique - Robot - Langage de programmation

Recherche sur Google Images :


Source image : info.rsr.ch
Cette image est un résultat de recherche de Google Image. Elle est peut-être réduite par rapport à l'originale et/ou protégée par des droits d'auteur.

Page(s) en rapport avec ce sujet :

  • ... Urbi, le langage de Gostai URBI (Interface Universelle pour Dispositifs... URBI intègre aussi une architecture distribuée de composants nommée UObject, ... Et la machine virtuelle Urbi est intégrée à la machine.... (source : robotimpact.free)
  • GOSTAI va commercialiser le langage URBI auprès de constructeurs de robots, ... URBI est une Interface logicielle Universelle pour la Robotique (Universal... Ces composants peuvent être rédigés en C++, Java ou Matlab et fonctionner soit... (source : gostai)
URBI
Apparu en 2003
Auteur
Développeurs
Dernière version stable
Paradigmes Langage parallèle et événementiel d'interfaces
Influencé par C++, Ruby, Io
Dispositif d'exploitation Multiplate-forme
Licences UObject est GPL, le moteur URBI est propriétaire
Site Web [1]

URBI (Interface Universelle pour Dispositifs 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 URBI qui est un langage de script événementiel d'une syntaxe proche de C++. URBI intègre aussi une architecture distribuée de composants nommée UObject, qui favorise l'intégration d'objets C++ dans le langage, et permet leur exécution locale ou distante.

Le langage URBI

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

URBI 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++, alors 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. URBI 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 majorité des applications de robotique et d'intelligence artificielle, URBI devient spécifiquement adapté à ces types d'applications.

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

Fonctions

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 précisément 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, quand 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 :

 montag: while(true) { echo "C'est une boucle sans fin" },
 at (button.pressed) stop montag;

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, donnant la possibilité la poursuite de l'exécution du programme, surtout à une commande'at'ultérieure de s'exécuter.

Architecture de composants UObject

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

Un objet C++ (UObject) est parfois 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, donnant la possibilité une intégration efficace. C'est une utilisation typique pour les composants critiques tels que les drivers de moteurs ou de capteurs. Ce même objet C++ peut aussi être utilisé sans modifications comme 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 :

  • Bioloid (En version beta)
  • Surveyor
  • Khepera III

Environnement de développement

URBI est apporté 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

Recherche sur Amazone (livres) :




Ce texte est issu de l'encyclopédie Wikipedia. Vous pouvez consulter sa version originale dans cette encyclopédie à l'adresse http://fr.wikipedia.org/wiki/URBI.
Voir la liste des contributeurs.
La version présentée ici à été extraite depuis cette source le 14/04/2009.
Ce texte est disponible sous les termes de la licence de documentation libre GNU (GFDL).
La liste des définitions proposées en tête de page est une sélection parmi les résultats obtenus à l'aide de la commande "define:" de Google.
Cette page fait partie du projet Wikibis.
Accueil Recherche Aller au contenuDébut page
ContactContact ImprimerImprimer liens d'évitement et raccourcis clavierAccessibilité
Aller au menu