Urbi

Localisation

Carte du monde

Urbi : descriptif

Informations de Wikipedia
Urbi

Urbi est une plate-forme logicielle, sous licence libre BSD, 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++ ou Java 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 interactions.

Le langage urbiscript

urbiscript
Date de première version 2003
Paradigmes Orienté objet (prototypes), fonctionnel, événementiel, concurrent réflexif
Auteur Jean-Christophe Baillie
Dernière version 3.1.0 ()
Influencé par C++, Self, Io
Écrit en Urbiscript ()
Licence Licence BSD

Urbi a été initialement développé depuis 1999 par Jean-Christophe Baillie au laboratoire de Robotique Cognitive de l'ENSTA ParisTech à Paris. Il a ensuite été 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++/Java, 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.

  1. a et b «  », (consulté le )

Fonctions

  • Programmation parallèle et événementielle
  • Programmation par prototypes
  • Syntaxe proche du C++
  • Architecture de composants C++/Java (UObject) avec possibilité de lier des objets ou de les exécuter à distance
  • Architecture Client/Serveur
  • 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
  • Intégration de ROS directement accessible depuis urbiscript (version 2.1)

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.

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++/Java 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 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 apparaîtra et sera traité dans Urbi comme s'il était un objet natif.

Les composants développés par la communauté peuvent être trouvés et échangés sur le site web communautaire Github Urbi.

Robots et simulateurs compatibles Urbi

Livrés :

  • Jazz (Gostai)
  • ARDrone (Parrot)
  • V-rep (simulateur)
  • Webots (simulateur)
  • Aibo ERS7/ERS2xx
  • Bioloid
  • iRobot Create
  • Lego Mindstorms NXT
  • HRP-2 (livraison restreinte)
  • Nao (Aldebaran Robotics)
  • Pioneer
  • RMP (Segway)
  • Spykee (Meccano)
  • Reeti

Non maintenus :

  • e-puck
  • Surveyor
  • Khepera III

Environnement de développement

Urbi permet d'utiliser Gostai Studio qui intègre un éditeur de comportements pour créer graphiquement des machines à états finis hiérarchiques. Gostai Lab est une autre application permettant de réaliser rapidement des interfaces utilisateur par simple glisser-déposer de widgets sur une page de composition.

Ces informations proviennent du site Wikipedia. Elles sont affichées à titre indicatif en attendant un contenu plus approprié.

Urbi dans la littérature

Découvrez les informations sur Urbi dans la bande dessinée ou les livres, ou encore dans la ligne du temps.

1517 autres localités pour région autonome Pais Vasco

Vous pouvez consulter la liste des 1517 autres localités pour région autonome Pais Vasco sur cette page : https://www.gaudry.be/lieu/es/es-pv/villes.html.

Nederlandse vertaling

U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.

Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.

Bij voorbaat dank.

Document heeft de 03/01/2018 gemaakt, de laatste keer de 30/10/2024 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/lieu/es/es-pv/337879.html

De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.