Précédent : Génération des niveaux de détails :
Remonter : Animation et simulation
Suivant : Algorithmique parallèle
Participants : Alain Chauffaut, Stéphane Donikian
La plateforme Siames est un projet d'équipe dont l'objectif est de réaliser une plate-forme logicielle de simulation et d'animation qui permette d'intégrer de manière homogène les différents travaux issus des thèmes de recherche développés dans le projet.
Un effort important de développement sur l'ensemble de l'année a débouché sur une version opérationnelle. Une simulation de trafic automobile en milieu urbain illustre ce travail.
Afin d'être générale, la plate-forme de simulation doit intégrer les différents modèles (générateur, descriptif et comportemental) de contrôle du mouvement et des interactions d'objets dans une scène. Un système de simulation est constitué d'un certain nombre d'entités, dont l'état évolue au cours du temps, chaque entité possédant une fréquence propre de calcul. La plate-forme doit donc permettre la simulation, sur une même échelle temporelle, de plusieurs entités dont la synchronisation et les communications sont gérées par un noyau temps-réel. Les entités communiquent, entre elles, soit par flots de données, soit par événements.
L'étude a démarré par une analyse et une conception par objets en s'inspirant de la méthode OMT. L'architecture logique que nous proposons pour ce système est composée d'un contrôleur général, de blocs élémentaires et de mécanismes de synchronisation et de communication. Cette machine virtuelle pourra être distribuée sur un réseau de stations hétérogènes pour augmenter la puissance de calcul disponible ou pour profiter de ressources spécifiques telles que les accélérateurs graphiques.
Outre ce noyau d'exécution d'une simulation, nous devons offrir un outil de programmation des entités simulées (une bibliothèque de classes C++), l'objectif étant de rendre transparent (du point de vue de la programmation) au concepteur d'un module d'animation, la distribution de la simulation. Pour ce faire, le concepteur d'un module doit respecter un canevas de programmation (le plus simplifié possible) : une classe générique objet_de_simulation qu'il doit spécialiser. Il lui suffit de définir les entrées, sorties, paramètres de contrôle du module en utilisant des types prédéfinis et de définir la fonction de transfert (initialisation, pas de simulation, terminaison) associée à l'objet. Une classe de service a aussi été définie : il s'agit de la visualisation en temps-réel des résultats de la simulation. Pour définir une simulation, il suffit ensuite de décrire à l'aide d'un fichier de configuration les différents éléments la constituant :
Un exemple d'utilisation de la plateforme montre la simulation d'un parc de voitures Praxitèle évoluant dans un quartier de Rennes. Ce décor a été modélisé en collaboration avec l'École des Beaux Arts de Rennes.
Cette version de la plateforme Siames a été réalisée en C++, en utilisant la librairie PVM (Parallel Virtual Machine, logiciel qui permet de gérer un réseau de machines hétérogènes comme une unique machine parallèle), nous offrant ainsi une relative indépendance de l'architecture matérielle des machines d'exécution. Cette mise en oeuvre fournit un noyau capable de synchroniser l'exécution de processus ayant des fréquences propres différentes et de gérer trois types de communication entre ces processus (flot de données, événementiel et client-serveur).
L'intégration des différents modèles de contrôle du mouvement et des déformations (générateur, descriptif et comportemental) dans une même plate-forme nous permet de fournir pour chaque entité comportementale un environnement beaucoup plus réaliste.