Des nouvelles d'Urbi, désormais utilisable pour les jeux vidéo

Posté par . Modéré par patrick_g.
Tags :
18
21
déc.
2010
Technologie
Urbi, un puissant framework jusque-là principalement reconnu dans le domaine de la robotique, est maintenant compatible avec Qt, Ogre et Bullet. Ces différents « ponts », qui rendent possible la création de jeux vidéo ainsi que la simulation, sont Open Source comme l'est devenu Urbi il y a quelque temps. Retour rapide sur cet évènement qui n'a pas laissé indifférente la communauté d'Urbi. Résultats du concours Urbi Open Source

Gostai, la société qui maintient Urbi, a lancé en septembre dernier un concours ayant pour but de développer un projet en utilisant Urbi. Cette compétition a vu le jour suite au passage de la plate-forme Urbi en Open Source et s'est terminée il y a quelques jours. Les membres du jury ont sélectionné les projets suivants et ont récompensé leur auteur pour le travail étonnant et fastidieux qu'ils ont accompli.
  • 1ère place : 2-high nous propose une tour de défense basée sur le Lego Mindstorm NXT et programmée grâce à Urbi. Cet engin reposant sur quatre pieds est capable de détecter puis traquer une cible (un objet volant comme un hélicoptère télécommandé Picoo Z, par exemple) et de lui lancer des projectiles. Le tout se pilote via une interface graphique et les touches du clavier. Ainsi, l'auteur décrit son projet comme un jeu qui peut s'effectuer entre deux personnes, tel un combat aérien...
    Vous trouverez plus de détails techniques sur la page dédiée à ce robot, ainsi qu'une vidéo de présentation et un guide permettant de le reproduire et de télécharger le code source.
    > Page de présentation « NXT Tower Defense »


  • 2e place : Zappadoc s'est attaqué à un projet plus technique qui, à travers d'Urbi, offre un pont avec les cartes SLI-M et SLI-PRO de Leo Bodnar, qui sont utilisées sur des simulateurs de course, et des logiciels de simulation ainsi que certains jeux de course. Ce système permet de piloter ces cartes USB et de récolter les données basiques des jeux de course ou de logiciels de simulation : vitesse, tour par minute, etc.
    > Page de présentation de l'UObject « simracing »


  • 3e place : Kecsap s'est attelé au portage d'Urbi 2 sur l'Aibo. Pour cela, l'auteur a modifié une grande partie du code source d'Urbi puis a ensuite écrit les drivers nécessaires pour agir sur les composants et développé un serveur permettant de communiquer avec ce petit chien robotisé.
    La version modifiée d'Urbi permettant de l'utiliser sur l'Aibo est disponible sur la page de présentation du projet, ainsi qu'une vidéo de démonstration.
    > Page de présentation du portage d'Urbi sur l'Aibo


  • 3e place ex-aequo : Noonv s'est chargé de créer une implémentation d'Urbi non pas sur un robot précis mais sur l'Arduino, un circuit imprimé au design matériel Open Source livré avec un environnement de développement permettant de modifier le code source du firmware. Néanmoins, Urbi étant trop lourd pour s’exécuter sur ce microcontrôleur, l'auteur du projet a trouvé une parade consistant, grâce à un protocole bien défini, à interagir avec l'Arduino (qui peut se placer dans des robots ou d'autres appareils) grâce à un serveur Urbi installé sur un ordinateur.
    > Page de présentation de l'implémentation d'Urbi sur l'Arduino


Les autres participations à ce concours sont visibles sur cette page.

L'AR.Drone pilotable avec Urbi
D'autre part, Urbi est désormais « officiellement » compatible avec l'AR.Drone de la société Parrot, un quadricoptère miniature télécommandable via le Wi-Fi. En effet, grâce aux efforts de Jean-Charles Mammana qui a écrit un driver Urbi, il est maintenant possible de prendre le contrôle de l'engin au travers d'une interface graphique, d'un clavier, d'un joystick, d'une souris, d'une Wiimote, etc.

Encore plus surprenant, son auteur prouve qu'avec son driver et seulement 25 lignes de code en Urbiscript (le langage de script d'Urbi), il est possible de faire voler ce jouet technologique de manière à ce qu'il suive une balle, grâce à sa caméra frontale (vidéo disponible sur les liens ci-dessous).

> Page consacrée à « Urbi 4 AR Drone »
> Plus d'informations sur le blog de l'auteur

Les jeux vidéo et la simulation sur Urbi
Si Urbi a pu faire ses preuves dans le domaine de la robotique, le framework compte également se faire une place dans le monde des jeux vidéo et de la simulation. En effet, Urbi propose depuis quelque temps des ponts avec Qt, Ogre et Bullet. Ces trois entités, directement utilisables depuis Urbi, permettent désormais d'employer ce dernier pour développer des logiciels de simulation et des jeux vidéo. À noter que ces ponts, également Open Source, ne sont pas encore en version finale, puisque les bindings ne sont pas totalement terminés ou que certains systèmes d'exploitation ne sont pas supportés.

  • Qt est un framework orienté objet écrit en C++ qui permet principalement de dessiner des interfaces graphiques. Cette bibliothèque, qui permet de concevoir des applications portables, présente de nombreux points forts tels que les signaux et les slots. Urbi propose donc un pont avec Qt 4 afin de simplifier la création d'interfaces graphiques et la gestion des évènements. Par exemple, le code ci-dessous rend plus facile l'utilisation des signaux de Qt via les évènements Urbiscript :
    var button = Qt.PushButton.new("Hi");
    button.show;
    at (button.clicked?)
    echo("Hello!");

  • Ogre st un moteur 3D libre et multi-plateforme écrit en C++. Orgre est connu puisqu'il est utilisé dans de nombreux jeux et logiciels de simulation. Très flexible, il peut être employé dans de nombreux langages de programmation comme C#, Java, Python, Ruby, etc. et possède une documentation complète.

  • Bullet, quant à lui, est un moteur physique Open Source écrit en C++ qui permet d'animer de manière réaliste des scènes 3D en simulant l'interaction physique entre plusieurs objets, y compris la détection et la gestion des collisions. Également multi-plateforme, Bullet est utilisé par le bien connu Blender et sert généralement au sein des applications temps réel, comme les jeux vidéo.


L'assemblage d'Orgre et de Bullet à Urbi permet donc de réaliser un monde virtuel en trois dimensions avec une gestion poussée de la physique (gravité, forces, collisions, etc.), à l'intérieur d'un code Urbiscript. Une capture d'écran et un code d'exemple sont disponibles sur le site Urbi Forge, afin de vous donner un aperçu des fonctionnalités du trio Ogre-Bullet-Urbi.

> Page dédiée à « Qt 4 Urbi »
> Page dédiée à « OBU » (Ogre-Bullet-Urbi)

Urbi est donc en pleine progression, en grande partie grâce à son passage en Open Source qui permet entre autres aux développeurs de toucher directement au code source du framework, comme nous avons pu le voir lors du concours. Avec plus de 11 ans d'existence, Urbi tente ainsi d'élargir sa communauté en développant de nouvelles fonctionnalités, parfois proposées par les membres sur la page destinée aux suggestions.
  • # Mais Urbi, c'est quoi ?

    Posté par . Évalué à 8.

    D'accord mais c'est quoi Urbi au juste ?
    • [^] # Re: Mais Urbi, c'est quoi ?

      Posté par . Évalué à 6.

      De ce que j'ai compris, ce serait un truc pour simplifier le développement de la partie logiciel d'un robot. Ça marcherait avec un certain nombre de robots jouets pour enfants barbus de 30 ans et plus.

      Par contre, j'ai pas pigé le lien avec Qt.
    • [^] # Re: Mais Urbi, c'est quoi ?

      Posté par . Évalué à 5.

      Il s'agit d'un framework qui a pour but de simplifier (voire même d'universaliser) la programmation pour les systèmes robotisés. Cela est possible grâce aux UObject, entité d'Urbi bas niveau qui s'occupent de gérer le hardware. Ensuite, en fonction des méthodes décrites dans ces UObject (où il est possible d'inclure des objets C++), le robot peut se contrôler localement ou à distance grâce au Urbiscript, le langage de script propre à Urbi.

      Le fait que Urbi propose maintenant un pont avec Qt permet de créer des interfaces graphiques directement dans Urbi, qui peuvent répondre à des évènements Urbiscript par exemple.
      Il en est de même avec Ogre et Bullet, qui auront la possibilité d'interagir avec Urbi.
      • [^] # Re: Mais Urbi, c'est quoi ?

        Posté par (page perso) . Évalué à 1.

        D'accord, ça m'aide également plus à comprendre.

        Cela aurait pu être utile de le mettre également sur ta news du "site du zéro".
    • [^] # Re: Mais Urbi, c'est quoi ?

      Posté par (page perso) . Évalué à 2.

      c'est facile :
      urbi est orbi es.
  • # Qu'est ce que Urbi

    Posté par . Évalué à 4.

    Urbi est langage destiné avant tout au robot, mais qui se tourne de plus en plus vers la programmation classique.

    Avant tout c'est un langage créé par une entreprise Française ! Oui Môsieur !

    Il offre l'avantage d'être événementiel, c'est à dire que vous pouvez déclencher des actions lorsque il se produit des événements précis, exemple :

    //pour un événement ponctuel
    at( x == 1){
    echo("x = 1");
    };

    //pour une condition plus large
    whenever(x <= 10){ // appelé tant que x est plus petit ou égal à 10
    echo("x plus petit que 10");
    };

    Contrairement au langage classique, pas besoin de créer d'écouteur ou autre mécanisme, toutes les variables crées dans le script peuvent déclencher des actions et a n'importe quel moment.

    Le deuxième point fort de ce langage est son parallélisme. En effet, il est possible de lancer 2 actions simultanément, ou à la suite, ou séparées dans le temps avec un décalage défini en millisecondes, secondes, etc.
    Exemple de la doc officielle :
    function test(name) {
    echo(name + ": 1");
    echo(name + ": 2");
    echo(name + ": 3");
    } |;
    // Serialized executions
    test("left") ; test ("middle"); test ("right");
    [00000000] *** left: 1
    [00000000] *** left: 2
    [00000000] *** left: 3
    [00000000] *** middle: 1
    [00000000] *** middle: 2
    [00000000] *** middle: 3
    [00000000] *** right: 1
    [00000000] *** right: 2
    [00000000] *** right: 3
    // Parallel execution
    test("left") & test("middle") & test ("right");
    [00000000] *** left: 1
    [00000000] *** middle: 1
    [00000000] *** right: 1
    [00000000] *** left: 2
    [00000000] *** middle: 2
    [00000000] *** right: 2
    [00000000] *** left: 3
    [00000000] *** middle: 3
    [00000000] *** right: 3

    Enfin, et surtout, il est compatible avec un grand nombre de robots du marché, ce qui fait que vous pouvez facilement créer des programmes qui "sortiront" du PC, et qui prendront vie en vrai !

    Comme mon projet ''NXT Tower Defense'' que j'ai essayé de faire le plus accessible possible pour que tout le monde puisse s'amuser à l'améliorer et à l'utiliser !!!!

    Vous trouverez des tutoriels simples et accessibles sur mon blog : [http://www.2-high.info], en attendant la présentation en français du NXT Tower Défense !
    • [^] # Re: Qu'est ce que Urbi

      Posté par . Évalué à 3.

      En gros, c'est un langage synchrone comme Lustre ou Esterel mais sans le coté formel ?

      "La première sécurité est la liberté"

    • [^] # Re: Qu'est ce que Urbi

      Posté par (page perso) . Évalué à 1.

      Merci à toi de nous (me) faire découvrir tout çà !
    • [^] # Re: Qu'est ce que Urbi

      Posté par (page perso) . Évalué à 1.

      Enfin, et surtout, il est compatible avec un grand nombre de robots du marché, ce qui fait que vous pouvez facilement créer des programmes qui "sortiront" du PC, et qui prendront vie en vrai !

      Ca peut faire fonctionner le tuxBot histoire de le sortir du placard ?
      • [^] # Re: Qu'est ce que Urbi

        Posté par . Évalué à 2.

        Du moment que la machine ou le robot est programmable en c++ il est possible de créer des composants utilisables par Urbi.
        Quand je dit "il est compatible avec un grand nombre de robots du marché" c'est à dire qu'il existe déjà tous les composants qui permettent de dialoguer avec le robot.
        Voici la liste officielle sur le site de Gostai :
        - Aibo de Sony
        - Bioloid de Robotis
        - Create d'iRobot
        - Mindstorms NXT de LEGO
        - Nao d'Aldebaran Robotics
        - Pioneer de Mobile robots
        - Segway RMP de Segway Inc.
        - Spykee de Meccano
        - Wifibot de Wifibot
        - ARDrone de Parrot

        Cette liste n'est pas exhaustive et le forum regorge de projet pour porter Urbi sur d'autres robots !
    • [^] # Re: Qu'est ce que Urbi

      Posté par . Évalué à 2.

      Et voilà l'Homme dans toute sa splendeur:
      Il a un outil technique formidable, des idées plein la tête, et la première chose qu'il en fait, c'est une machine de guerre!!

      ---------------> [ ]
      • [^] # Re: Qu'est ce que Urbi

        Posté par . Évalué à 1.

        Une machine de guerre, lol, je le voyais plus comme une jeux d'adresse et de précision qui permet de bonnes parties de rigolade.

        Pourtant j'ai tenté de revendre mon projet à la NAVY, mais ils en ont pas voulu .... allez savoir pourquoi o_O

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.