WISIRC: Architecture logicielle
Quentin Richard (qkdev@gna.org)
Matthieu Haefele (haefele@gna.org)
Christian Gagneraud (chgans@gna.org)
WISIRC Robotic association
http://wisirc.tuxfamily.org
L'objectif du document est de présenter l'architecture logicielle du projet Wisirc afin de permettre un développement parallèle au sein des différentes équipes du WISIRC.
| CD |
Couche décisionnelle |
| CI |
Couche interprétation |
| CBN |
Couche bas-niveau |
Le projet se décompose en un ensemble de processus intéragissant entre eux. Une partie de ces processus est embarquée sur un robot et doit contrôler un ensemble de dispositifs électroniques (capteurs, actionneurs). Une autre partie est composée de différents outils sur un PC hôte dans le but de simuler ou configurer les modules du robot.
Dans le projet, des choix ont été fait sur certains composants. On se donne un composant d'intelligence artificielle qui tournera sur le robot et qui devra envoyer des commandes et interroger un ensemble de cartes électroniques capteurs-actionneurs. Dans un but de développement et mise au point, l'IA devra pouvoir évoluer dans un simulateur qui émulera le comportement des cartes électroniques.
Comment faire communiquer l'IA avec soit le simulateur, soit les cartes électroniques de manière transparente ?
Ce document propose une architecture logicielle à 3 couches (cf figure 2).
Figure 1:
Architecture distribuée
|
|
Figure 2:
Découpage logiciel
|
|
Il faut considérer cette couche, en terme d'architecture logicielle, comme un client contrôlant un ensemble de serveurs; ces serveurs pouvant accepter des requêtes de demandes d'informations ou des requêtes de demandes d'actions. Cette couche est implémentée sous la forme d'un processus de contrôle (système expert). C'est un processus séquentiel ne pouvant pas être sollicité de manière asychrone.
Cette couche est un ensemble de serveurs au service de la couche décisionnelle, permettant d'implémenter une abstraction des informations en provenance du hardware et des ordres à destination du hardware.
Il y a une réponse asychrone aux sollicitations de la CD, et un fonctionnement séquentiel s'appuyant sur les services de la CBN.
Aujourd'hui, le découpage fonctionnel de cette couche est le suivant :
- Localisation du robot
- Perception
- Génération de trajectoires
- Actions spécifiques
Cette couche est un ensemble de serveurs dédiés à des fonctionnalités hardware (cartes électroniques). Ils sont capables de gérer la synchronisation et l'accès concurrent au hard. Ils offrent une certaine API à la CI.
Aujourd'hui, les capteur/actionneurs envisagés sont :
- Commande des moteurs
- Odométrie
- Capteurs de distances IR ou US
- Vision
- Capteurs/actionneurs spécifiques
Cette couche est implémentée sous la forme d'un processus de simulation qui permettra l'interfaçage avec la CI des fonctionnalités d'émulations des capteurs/actionneurs. Il implémente la même API que la CBN - Hard dans le but de permettre l'execution de la CD et la CI quelque soit la CBN (simulée ou hard).
Figure 3:
Vue processus sur cible
|
|
Figure 4:
Vue processus avec simulateur
|
|
Cette communication s'effectuera au moyen d'une librairie de communication commune à tous les processus devant communiquer. Cette librairie permettra une implémentation de la communication par ``pipe'' ou par ``socket''. Les ``pipes'' seront utilisés sur la cible embarquée, alors que les ``sockets'' permettront une architecture distribuée (Une machine hôte de simulation + une machine hôte CD, CI par exemple).
Toutes les requêtes sont à l'initiative de la CD. Ce sont des requêtes demandes d'informations ou des requêtes de demandes d'actions. Ces requêtes sont asychrone vu de la CI. Les algorithmes de mises à jour d'informations ou de traitement des ordres se font en tâche de fond. Par conséquent, les requêtes seront acquitées immédiatement par la CI en utilisant l'état actuel du processus d'interprétation.
Cette interface est constituée de plusieurs connections point à point (un processus CI adresse plusieurs processus CBN). Les requêtes CI-CBN sont des requêtes synchrones.
Chaque processus de la CI devra être multi-threadé : un thread socket asynchrone (com avec la CD) + 1 thread applicatif séquentiel (com avec CBN + traitement), cf figure 5.
Figure 5:
Implémentation d'un processus CI
|
|
L'implémentation des processus de cette couche dépendra fortement du hardware sous-jacent.
Dans l'ordre décroissant de priorité :
- Boot : lancement des différents processus, leur synchronisation et la configuration de leur communication.
- Gestion de alarmes (Températures moteurs, switch collision...)
- Supervision : modification d'architecture pour permettre une commandabilité et observabilité totale via un client de supervision. Possibilité de lancer des séquences de tests ...
- Système multi-agents : Remplacer la CD par un système multi-agents...
WISIRC: Architecture logicielle
This document was generated using the
LaTeX2HTML translator Version 2002-2-1 (1.70)
Copyright © 1993, 1994, 1995, 1996,
Nikos Drakos,
Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999,
Ross Moore,
Mathematics Department, Macquarie University, Sydney.
The command line arguments were:
latex2html -local_icons -split 0 -dir wisirc-architecture_logicielle_html-onefile -no_navigation wisirc-architecture_logicielle.tex
The translation was initiated by chgans on 2004-02-29
chgans
2004-02-29