Mots clés : architecture de contrÔle,
contrÔle/commande, système embarqué, programmation synchrone,
vérification formelle, environnement de programmation,
temps-réel, système hybride .
Un des problèmes principaux de la programmation des
systèmes robotiques est d'aborder dans un cadre cohérent la
description de l'évolution dynamique des deux
composantes - continue et discrète - de ces
systèmes hybrides. Ceci nécessite d'intégrer différents
formalismes, trop souvent spécialisés dans un domaine précis
et déconnectés les uns des autres. Ainsi, l'étude des
architectures de contrÔle est primordiale pour
développer concepts et méthodes permettant de gérer la
complexité de la spécification et de l'analyse de la
globalité du système.
Un contrÔleur de robots doit être capable de traiter une
grande diversité d'actions, allant par exemple de la commande
d'une cellule flexible d'assemblage en milieu industriel au
contrÔle d'un véhicule autonome opérant en milieu hostile. La
diversité des applications potentielles en robotique et le
désir de mettre en oeuvre des algorithmes de commande
sophistiqués impliquent une ouverture du système de
programmation. D'un point de vue industriel, les contrÔleurs
actuels restent le plus souvent des machines fermées, dotées
d'un langage limité ne permettant pas d'exécuter des actions
complexes telles que des commandes référencées capteurs.
Outre leurs limitations fonctionnelles, ils ne permettent pas
de traiter correctement les aspects temps-réel sous-jacents à
toute application robotique, même simple.
L'architecture de contrÔle
ORCCAD [7,1] propose actuellement deux niveaux : le
niveau fonctionnel, où les aspects commande en temps
discrétisé sont prépondérants, et le niveau
contrÔle, qui gère principalement les aspects
réactifs. Au niveau fonctionnel, les actions élémentaires
sont définies sous forme de Tâches-Robot : ce concept
clé spécifie dans la même entité une partie algorithmique
(loi de commande) et une partie logique réactive. Il s'agit
d'un objet informatique hybride, à l'interface des aspects
temps continu et discret. En l'absence de modèles unifiés et
opérationnels des systèmes hybrides, cette approche permet de
cantonner l'interface temps continu/discret dans la coquille
réactive de la Tâche-Robot. Les actions élémentaires
exécutées par le robot sont réalisées par l'exécution
périodique d'une loi de commande en boucle fermée dont la
conception repose sur les techniques de l'automatique
classique comme la spécification par fonction de tâches
[6], la commande référencée capteurs ou encore
la commande instationnaire pour systèmes non holonomes. Cette
loi de commande est encapsulée dans un comportement
logique réactif rythmant son exécution à l'aide de signaux
typés (pré-conditions, exceptions et post-conditions)
constituant sa vue externe. Ce comportement réactif
est codé à l'aide du langage synchrone
ESTEREL, ce qui permet de bénéficier des
outils de vérification formelle associés
FC2TOOLS/ATG.
Au niveau contrÔle, les actions complexes sont spécifiées
sous la forme de Procédures-Robot par composition structurée
et hiérarchique de Tâches-Robot, manipulées par
l'intermédiaire de leur vue externe, et de traitements
d'exceptions. À la différence de ces dernières, les
Procédures-Robot n'ont pas de partie commande, autre que
celle des Tâches-Robot qui les composent. Nous pouvons ainsi
définir de faÇon cohérente et dans un même formalisme des
actions de complexité croissante, gérant les modes nominaux
d'une mission robotique complexe ainsi que les modes dégradés
dépendant des exceptions spécifiées et du contexte
d'exécution. Tous ces aspects logiques sont également
spécifiés en ESTEREL du niveau le plus haut
(mission) jusqu'aux appels système gérant l'exécution des
lois de commande, un soin tout particulier étant pris quant à
la gestion des transitions entre commandes successives. Ceci
nous permet d'effectuer a posteriori une
vérification formelle des programmes produits à un grand
niveau de détail.
La formalisation des structures manipulées présente de
nombreux avantages permettant la définition d'un
environnement de programmation cohérent et convivial
[SKE98] :
- ceci permet de concevoir des interfaces de
programmation adaptées à chaque type d'utilisateur du
système. Ainsi, l'automaticien chargé du développement
d'une Tâche-Robot peut en coder le comportement réactif
sans rien connaître à ESTEREL, la vue
externe de la Tâche-Robot étant générée automatiquement à
partir d'une fenêtre graphique. D'autre part, le concepteur
de mission ne code que la partie spécifique de son
application, l'essentiel du code source, et en particulier
celui permettant la connexion avec le système
d'exploitation sous-jacent, étant généré automatiquement de
faÇon totalement transparente ;
- l'identification de certaines propriétés génériques
d'un système ainsi structuré (vivacité, sûreté) permet
d'automatiser partiellement la génération de critères
abstraits facilitant ainsi l'utilisation des outils de
vérification ;
- le code temps-réel téléchargeable est automatiquement
généré à partir des spécifications de haut niveau.
De nombreux travaux restent cependant à réaliser et
certains problèmes restent ouverts :
- en tant qu'elle vise la conception de systèmes
embarqués temps-réel à sûreté critique, la génération de
code doit être améliorée afin de produire du code réparti
optimisé et tolérant aux pannes ;
- l'utilisation des méthodes de vérification formelle
actuelles reste difficile pour un non spécialiste du
domaine, notamment en ce qui concerne le diagnostic et
l'interprétation des résultats. Nous nous heurtons
également rapidement à des problèmes de taille d'automates
à vérifier, même si la méthodologie d'ORCCAD
permet d'effectuer une spécification et des vérifications
incrémentales. La prise en compte de contraintes
temporelles n'est pas actuellement réalisée ;
- enfin, il manque au niveau supérieur une couche
décisionnelle de type planification réactive,
permettant une éventuelle reprogrammation partielle de la
mission en cas de défaillance non spécifiée ou encore de
spécifier des missions complexes de faÇon conviviale en
évitant des fautes ou oublis de spécification. Nous fondons
de sérieux espoirs sur l'utilisation de techniques de
synthèse de contrÔleurs pour systèmes à événements
discrets, initialisés par Ramadge et Wonham [RW87],
pour construire ce niveau sur un formalisme mathématique
solide.
Nous proposons ainsi, dans un environnement cohérent, un
ensemble d'outils intégrés pour le support de ces méthodes et
concepts bien formalisés; ils permettent de programmer, de
valider et de générer du code, de manière transparente pour
l'utilisateur.