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


Contents

But et objet du document

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.

Terminologie

CD Couche décisionnelle
CI Couche interprétation
CBN Couche bas-niveau

Problématique

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
\includegraphics[width=\linewidth]{img/Vue-Reseau-3Elem}

Découpage en 3 couches

Figure 2: Découpage logiciel
\includegraphics[width=\linewidth]{img/Vue-3-Couches-Fois2}

Couche décisionnelle

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.

Couche interprétation

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 :

Couche bas niveau - Hardware

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 :

Couche bas niveau - Simulée

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
\includegraphics[width=\linewidth]{img/Vue-Taches}
Figure 4: Vue processus avec simulateur
\includegraphics[width=\linewidth]{img/Vue-Taches-Simu}

Communication inter-processus

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).

Interface couche décisionnelle - couche interprétation

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.

Interface couche interprétation - couche bas niveau

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.

Conséquences sur l'implémentation de la couche d'interprétation

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
\includegraphics[width=0.3\linewidth]{img/Vue-IPCCI}

Conséquences sur l'implémentation de la couche bas niveau

L'implémentation des processus de cette couche dépendra fortement du hardware sous-jacent.

Perspectives

Dans l'ordre décroissant de priorité :

About this document ...

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