Recherche

 

ASSET

L'objectif de mon travail de doctorat à l'IRIT a été la construction d'un système facilitant le développement de systèmes de réalité virtuelle pour la télérobotique. Ce système est ASSET (Architecture pour des Systèmes de Simulation et d'Entraînement en Téléopération), un outil spécialisé dans la construction rapide de prototypes et de programmes de tests pour de nouveaux dispositifs, modèles de simulation, techniques d'interaction et comportements d'entités autonomes.
Pour ASSET on a adopté un développement orienté-objet afin d'offrir un système modulaire, flexible et facile à utiliser. D'un autre côté, grâce aux langages utilisés pour la création de notre système (Java et Java3d) celui-ci est portable et de ce fait disponible pour plusieurs plates-formes matérielles. ASSET est indépendant des dispositifs utilisés et ne requiert pas d'une configuration matérielle particulière. Notre système peut donc être considéré comme une solution de réalité virtuelle accessible et utile pour la recherche.

La plate-forme ASSET offre les services liés aux systèmes de simulation : le rendu graphique 3D, la détection des collisions, la gestion de périphériques, le chargement dynamique des unités comportementales des objets et du modèle de l'environnement. Le chargement dynamique des resources de l'application et la gestion abstraite des données assurent la separation entre l'application et la configuration materielle et la réutilisation des composants développés.

Applications

Voici quelques exemples d'applications développées avec ASSET :

Contrôle d'un robot téléoperé.

Robot d'assistance.

Robot autonome

Animat (vidéo AVI 35Mo)

Depuis 2003, ASSET sert de base à des applications plus complexes. Par exemple, un service de Réalité Augmentée a été intégré dans le système. Le module qui a été développé utilise l’interface Java du système ARToolkit (Augmented Reality Toolkit) pour permettre aux utilisateurs et aux robots (agents) autonomes d’obtenir des informations complémentaires sur la mission à effectuer. Les points d’information sont représentés dans le monde réel par de motifs visuels qui déclenchent, dans le module de réalité augmentée, les renseignements associés aux actions à réaliser. Le module de réalité augmentée permet de renfoncer le système en permettant aux utilisateurs de découvrir et résoudre des problèmes non détectés par la simulation. Une autre application est le filtrage spatial dans les environnements virtuels distribuées, sujet de thèse de Souad Elmerhebi.

Motivation

Le développement du système ASSET a commencé à l'Université de Los Andes en Colombie, avec l'objectif d'utiliser des environnements virtuels comme interface utilisateur des systèmes de téléopération. Pour développer les premières applications liées avec ce projet, le Virtual Reality Modeling Language ( VRML) a été utilisé. Ce langage fournit les services graphiques pour la création et la visualisation d'une scène 3D et permet aussi d'avoir une interaction basique entre l'utilisateur et les objets du monde virtuel. La plupart des navigateurs et des logiciels de modélisation 3D permettent le chargement de fichiers VRML ce qui simplifie les tâches de création et visualisation des mondes virtuels.


eai Pour ajouter des comportements à un environnement virtuel créé avec VRML,un langage de programmation comme Java ou Javascript doit être utilisé. Pour construire des mondes et des interfaces plus complexes, nous avons choisi l'External Authoring Interface (EAI) qui permet d'utiliser les outils Java pour programmer le comportement des objets et pour gérer les événements du monde virtuel. Même s'il est possible de construire des mondes complexes avec l'EAI,on est limité par les capacités du navigateur utilisé et par les restrictions sur les applets Java. La conception de notre système a donc évolué et l'étude des plate-formes non seulement indépendantes d'autres logiciels mais aussi des applications a commencé. A ce moment-la, on a décidé de construire une plate-forme de développement de systèmes de téléopération, orientée objet, en utilisant les langages Java et Java3D. Le travail à l'Université des Andes a donné comme résultats la conception de l'architecture basique des systèmes de téléopération, la conception des interactions entre les composants du système et une première implantation des composants. Le travail continue à l'IRIT,dans l'equipe de Synthèse d'Images.

Architecture

ASSET définit une architecture générale pour les systèmes de téléopération. Grâce à la modularité et la flexibilité obtenues du développement orienté objet, il est possible de personnaliser facilement les divers paramètres du système pour développer de nouvelles applications.

architecture

L'architecture d'ASSET consiste de trois modules : le module d'interaction avec l'utilisateur (Gestionnaire Utilisateur), le module de contrôle du système réel (Gestionnaire Système Réel) et le module central (Administrateur) qui coordonne les entités participantes, utilisateurs et robots. Dans le Gestionnaire Utilisateur, on trouve les dispositifs d'interaction et visualisation, le simulateur et la gestion des communications et des événements. Le Gestionnaire Système Réel est constitué d'une façon similaire mais, à la place des dispositifs d'interaction et de visualisation, on a des capteurs et des effecteurs. Il gère aussi la gestion de la cohérence entre l'état réel et l'état simulé pour mettre à jour les simulations des utilisateurs. L'administrateur a deux composants qui s'occupent de coordonner les interactions entre les entités et de communiquer avec le système réel.

Mécanismes

En plus de l'architecture, ASSET définit les différents mécanismes d'interaction entre composants et modules, et les stratégies permettant le déroulement des activités du système :

  • Espace de données et gestion des événements : pour la communication entre les composants d'un module, un espace de données a était défini. Cet espace - qui maintien l'information des dispositifs, les commandes et les messages du réseau - signale les événements d'écriture (lorsque un composant ajoute un message), permettant aux dispositifs et aux objets de simulation de les récupérer et les traiter.

  • Simulation: la simulation facilite l'expérimentation et l'évaluation des systèmes dans des environnements non accessibles ou  face à événements peu probables. En plus, en répliquant la simulation et les modèles dans l'espace de chaque participant, l'information de retour peut être génerée rapidement et les commandes à envoyer au système réel peuvent être validées. Le composant de simulation d'ASSET offre les services de visualisation 3D, détection des collisions et lecture de modèles Java3D et VRML2.0. Une caractéristique très intéressante d'ASSET est la possibilité de définir un comportement pour chaque objet de simulation, permettant ainsi d'avoir des entités avec des différents degrés d'autonomie.

  • Etat: pour calculer la difference entre l'état réel du système et l'état simulé, ASSET utilise les conditions définies par le développeur pour son application. Le développeur  défini l'ensemble de variables qui constituent l'état du system et pour chaque variable, la valeur du seuil d'erreur. Si une ou plus variables dépassent leur seuil d'erreur, la simulation est mise à jour. Puisque l'état du système et la différence acceptable entre deux états sont définis via un fichier de configuration, il est possible de calibrer le déclenchement des mises à jour du système. D'un autre cote, le type des variables et le calcul de la différence peuvent être modifiés sans affecter l'application parce que le système charge dynamiquement les classes développes par l'utilisateur pour gérer ses variables.

  • Gestion de dispositifs: ASSET définit de dispositifs virtuels pour offrir un ensemble de services qui peuvent être implémentes avec différents dispositifs physiques.Le dispositif virtuel est un médiateur entre le dispositif réel et le système, pour assurer l'indépendance entre l'application développée et les dispositifs utilisés.

Technologies

  • Java. Pour la mise en œuvre du système ASSET, Java a été utilisé. Ce langage a été choisi car son approche objet permet de réaliser aisément le découpage de fonctionnalités défini par notre architecture. Egalement, l'implantation des notions de la conception orientée objet comme l'abstraction de données, l'héritage, l'encapsulation et la liaison dynamique est facilitée. Logiquement, ces concepts peuvent être implantés facilement avec des autres langages objets comme C++ mais nous avons retenu Java parce qu'il est neutre par rapport aux plates-formes matérielles. La portabilité de Java permet la création des applications capables de fonctionner sur de multiples plates-formes sans être modifiées ce qui est un plus pour notre système. L'interface graphique 2D d'ASSET est réalisée avec Swing, une bibliothèque fournie par Java pour la création d'interfaces graphiques utilisateur. Pour charger et avoir accès de façon dynamique aux classes fournies par le développeur, sans y avoir connaissance pendant la compilation, nous avons utilisé l'API Reflection de Java. Cet API nous permet d'utiliser une classe (créer des instances, appeler des méthodes) à partir de son nom. Les classes développées par le programmateur peuvent donc être utilisées en récupérant leur nom du fichier de configuration et en appelant les méthodes de l'interface qu'elle implémente.

  • Java3D. La réalité virtuelle permet aux utilisateurs de percevoir, comprendre et contrôler de façon intuitive les systèmes complexes. Comme le point de vue peut être changé par l'utilisateur à tout moment (à différence des visualisations réelles avec des images vidéo), il peut analyser les situations plus efficacement. Nous avons donc utilisé des environnements virtuels comme interface du système ASSET. La mise en œuvre de cette interface est réalisée avec la bibliothèque graphique Java3D qui fourni des méthodes de haut niveau pour créer et afficher la géométrie tridimensionnelle des objets dans un monde virtuel.

  • Xj3D. Pour incorporer le contenu VRML dans l'application Java3D nous utilisons le loader fourni par Xj3D, un projet dédié a l'implémentation du code Java pour l'affichage et l'intégration de contenu VRML dans toute sorte d'applications.

  • IFC et DirectX. IFC est un ensemble d'outils et de bibliothèques qui simplifie le développement des classes de contrôle pour une ample gamme de dispositifs à retour d'effort. IFC fourni un ensemble de classes C++ qui utilisent DirectX pour l'intégration et la gestion des dispositifs à retour d'effort, et des outils comme Immersion Studio pour faciliter la création d'effets. Avec Immersion Studio les effets, construits et testés dans un environnement graphique, sont sauvegardés dans un fichier afin d'être chargés et utilisés dans différentes applications.

  • JNI (Java Native Interface). La classe de contrôle développée pour le joystick SideWinder est écrite en C++ pour avoir la fonctionnalité de retour d'effort. L'intégration de cette classe dans l'application Java est réalisée grâce à l'interface native de Java, JNI. JNI permet au code Java d'opérer avec des applications et des bibliothèques écrites dans d'autres langages de programmation.

Dispositifs

  • Robot Khepera. Le robot Khepera est un petit robot mobile : 5.5 cm de diamètre, 30 mm de hauteur et un poids d'environ 70g. Il peut atteindre une vitesse de 60 cm/s.Le Khepera est équipé d'un microprocesseur, deux moteurs, et un ensemble de 8 capteurs fournissant des informations sur la proximité des obstacles.


  • Spacemouse Logicad3D. La souris 3D est un outil permettant la manipulation des modèles 3D dans un environnement virtuel. Ce dispositif contrôle 3 degrés de liberté de translation (x,y et z) et 3 degrés de liberté de rotation (A, B et C).



  • Joystick Microsoft SideWinder Force Feedback Pro. Le joystick à retour d'effort permet de donner à l'opérateur qui le manœuvre une sensation, sous forme de retour d'effort,des déplacements réalisés ou des effets de sa commande. Le joystick comporte un axe mobile qui peut être déplacé dans trois directions: deux translations orthogonales (x et y) et une rotation autour de z.