Approche orientée composants pour systèmes autonomes
Approche orientée composants pour systèmes autonomes
Abstract— Les systèmes autonomes sont des systèmes com- garantir des propriétés essentielles (temporelles et de sûreté).
plexes qui reposent sur la coopération/interaction entre différents Pour faire face à la complexité de cette tâche, ces tech-
composants logiciels. Ces logiciels sont de types assez variés, avec niques sont appliquées à une description orientée composant
des contraintes de fonctionnement temporelles assez diverses.
L’ensemble doit cependant respecter les spécifications du concep- du système dont les propriétés globales sont satisfaites par
teur et garantir des contraintes de sûreté. Pour y parvenir, nous construction ou peuvent être déduites des propriétés de ses
proposons l’utilisation d’une approche orientée composants basée composants. De surcroı̂t, la description componentisée fournit
sur l’outil BIP, pour, dans un premier temps, le développement de une base pour la reconfiguration et l’évolutivité.
la couche fonctionnelle de systèmes autonomes (robots, satellites, Dans cet article, nous proposons l’utilisation d’une ap-
etc.), et plus tard, envisager d’étendre cette méthodologie vers
la couche décisionnelle. Cette approche vient naturellement proche orientée composants basée sur l’outil BIP [2], pour
compléter l’approche modulaire de GenoM jusqu’alors utilisée le développement de la couche fonctionnelle de systèmes
pour développer la couche fonctionnelle de l’architecture LAAS. autonomes (robots, satellites, etc.) en prenant comme exemple
Elle permet de mettre en place des systèmes robustes et sûrs en la couche fonctionnelle de l’architecture du LAAS[1]. Au delà
produisant un contrôleur d’exécution correct par construction, et de cette première étape, nous envisageons de propager cette
en fournissant un modèle formel qui peut être utilisé avec divers
outils de vérification et de validation. méthodologie vers la couche décisionnelle.
Cette approche vient naturellement compléter l’approche
I. I NTRODUCTION modulaire de GenoM jusqu’alors utilisée pour développer la
L’ingénierie système repose sur l’idée qu’un système com- couche fonctionnelle de l’architecture LAAS. Elle permet de
plexe est construit en assemblant des composants. D’où le mettre en place des systèmes robustes et sûrs en produisant
principe de la conception orientée composant qui prévoit que un contrôleur d’exécution correct par construction, et en
les grands systèmes sont conçus à partir de systèmes plus fournissant un model formel qui peut être utilisé avec divers
simples. Cette approche confère, entre autres, des avantages outils de vérification et de validation.
de réutilisation, d’analyse et validation modulaires, reconfigu- Dans la suite, nous allons commencer par une présentation
rabilité, contrôlabilité, etc. sommaire de l’architecture robotique déployée au LAAS (dans
Les systèmes autonomes sont des systèmes complexes qui la Section II) et de l’outil de développement de systèmes temps
reposent sur la coopération/interaction entre différents compo- réel BIP conçu à VERIMAG (dans la Section III). Ensuite,
sants logiciels. Ces logiciels sont de types assez variés, avec nous allons présenter le principe d’intégration GenoM / BIP
des contraintes de fonctionnement temporelles assez diverses. qui fera l’objet de la Section IV, et enfin, vérifier ces résultats
L’ensemble doit cependant respecter les spécifications du dans la Section V.
concepteur et garantir des contraintes de sûreté.
II. L’A RCHITECTURE DU LAAS
Une des principales limites de l’état de l’art actuel est
l’absence d’un paradigme (modèle) unifié pour la description A. Présentation
et l’analyse des flux d’information entre les composants. Un Une architecture spécialement dédiée au développement de
tel paradigme permettrait aux concepteurs et développeurs systèmes pour robots autonomes a été développée au LAAS. Il
système de formuler des solutions basées sur des concepts s’agit d’une architecture générale (cf. Figure 1) permettant de
tangibles, bien fondés et organisés plutôt que d’utiliser des décomposer un système en trois niveaux ayant des propriétés
mécanismes de coordination dispersés tels que les sémaphores, temporelles et des représentations différentes. Ces niveaux sont
les moniteurs, l’envoi de messages, les appels à distance, les organisés comme suit :
protocoles, etc. Le niveau décisionnel : À ce niveau, sont déployés des
Les concepteurs de systèmes complexes, tels que les robots outils de supervision, en l’occurrence open-PRS [7], et de
autonomes, ont besoin de techniques d’analyse évolutives pour planification, comme le planificateur symbolique IXTET
Decisionnal level fonctionnalité en question du robot. Chaque module propose
Procedural Planner and un ensemble de services actionnables par une requête client
executive temporal executive
(open-PRS) (IxTeT) (ordre émanent de la couche décisionnelle).
Antenna control
NDD Speed Control Task
poster
Platine
Posters interface
Aspect Obs
Functional
Control IDS
Science IDS
Laser
Camera Im. RFLEX Pos Scan
RF Execution Tasks
functional
poster
activities
Simulator
GAZEBO Fig. 2. Schéma générique d’un module GenoM.
abort/_
Un composant atomique (exemple : Figure 4) contient un
events :
input / output ensemble d’états de contrôle et des transitions entre eux. Ces
END
dernières définissent le comportement du composant et sont
Fig. 3. Execution automaton of an activity.
franchissables par des ports utilisés pour la synchronisation in-
ter composants. Il est possible de définir une garde (condition)
1) Exemple illustratif de couche fonctionnelle: La sur la transition ( x>0 dans l’exemple) ainsi qu’un traitement
méthodologie GenoM veut que chaque fonctionnalité du (du code C/C++ comme y := f(x)) à faire si la transition est
robot soit encapsulée dans un module. Toutefois, certaines franchie.
fonctionnalités, telle la navigation, sont assez complexes au
point d’être assurées par un ensemble de modules.
%&'#($
Comme exemple d’exécution, nous nous somme intéressés à
DALA, un iRobot ATRV, et plus précisément aux modules
$$+,$
impliqués dans la navigation tel qu’illustré plus haut dans
!"#$
+,$ !"#$
Figure 1. -./01$
Le module sick : Il s’agit du module qui gère le capteur (23)405$
laser. Il produit entre autres des mesures cartésiennes
relatives au repère du robot ou au repère d’origine cor-
respondant aux segments perçus. )"**$
Le module aspect : Il utilise le poster de sick pour dresser
une carte des obstacles avoisinant le robot.
Fig. 4. Exemple de composant atomique
Le module ndd : Ce module se charge d’assurer la naviga-
tion en évitant les obstacles pour atteindre une position
but. Pour ce faire, il récupère la position actuelle dans
B. Connecteurs et “Interaction”
le poster Pos de pom ainsi que la carte d’obstacle le
poster Obs d’aspect . En sortie, il fournit le poster Speed Si l’on considère les composants (atomiques ou composés)
contenant une consigne en vitesse. comme des blocs, les connecteurs permettent de les assembler
Le module rflex : C’est le module qui assure la locomotion afin d’obtenir un système entier. Un connecteur est un en-
du robot en asservissant les roues sur la consigne en vi- semble de ports des composants pouvant interagir. Une interac-
tesse produite par ndd . En sortie, il donne une indication tion (d’un connecteur) est, quant à elle, un sous ensemble des
de position relative au déplacement du robot (position ports de ce premier. On peut la considérer comme une instance
odométrique améliorée par la mesure du gyroscope). du connecteur. Un mécanisme de typage des ports est utilisé
essentiellement pour distinguer deux types de synchronisation
III. L’ OUTIL DE VERIMAG : BIP comme illustré dans Figure 5. À savoir, la synchronisation
BIP [2] (Behavior, Interaction and Priorities) est une plate- forte dite rendez-vous (cf. Figure 5-a), et la synchronisation
forme logicielle pour la modélisation de composants temps faible dite broadcast (cf. Figure 5-b) identifiée par un triangle
réel hétérogènes. BIP considère le modèle d’un compo- sur le port complet.
sant comme une superposition de trois couches. La couche
inférieure modélise le comportement (B pour behavior) du C. Politique d’ordonnancement et “Priority”
composant sous forme d’un ensemble de transitions. Au Dans le cas où, sur un port, plusieurs connecteurs sont
dessus, s’ajoute la description des interactions (I) entre ces définis et qu’il se trouve que plus qu’une interaction est
transitions via des connecteurs. Enfin, la couche supérieure possible, ce conflit est traité par la définition de priorités
correspond à un ensemble de règles de priorités (P) traduisant affectées aux connecteurs. Ainsi, il est possible de filtrer les
la politique d’ordonnancement des interactions. interactions à exécuter parmi celles possibles.
!"# !%# !'# !"# !%# !'# contrôle, de l’exécution en les gérant dans des sous com-
posants séparés (cf Figure 7) appelés respectivement Service
$"# &"# &%# $"# &"# &%# Controler (à gauche de la figure) et Activity (à sa droite).
Nous avons essayé de faire en sorte que le modèle BIP de
service soit le plus fidèle possible à l’automate générique de
(#)#*+,-+./0123# 4#/#561(-7(3!# GenoM. Cette démarche de dissociation nous permet d’appli-
quer la nouvelle structure et la lier à celle de GenoM, entre
Fig. 5. les connecteurs et les deux types de synchronisations. autres, via les bibliothèques de codels existants (cf. II-B).
Il est à noter que les transitions ”control”, ”error”, ”start”,
”end”, ”fail” et ”inter” du Service Controler s’accompagnent
IV. I NT ÉGRATION GenoM / BIP d’une modification de la variable interne ”status” et d’infor-
mations sur l’état d’exécution de l’activité.
A. Componentisation de la partie générique et structurelle
d’un module GenoM 27831# 134@@63# @61(121?0# 01231# 65;# <24=# 45163# 6:6>#
Nous avons vu, dans la Section II-B, que la couche fonc- >85138=# 27831# 134@@63# @61(121?0# 01231# 65;# <24=# 45163# 6:6>#
0121?0#
tionnelle de l’architecture du LAAS respecte une approche @61(121?0# 63383# @61(121?0# >85138=#
01231# 6:6>#
modulaire telle qu’un module correspond au schéma générique 134@@63#
01231# 01231#
$%&$'# (%)'%# 65;# 65;# 65;#
décrit dans Figure 2. Dans cette approche de componenti- $%&$'# (.$$/#
!"## <24=# <24=#
sation, nous présentons dans Figure 6 le modèle BIP d’un <24=# $0121?0%&'&()# !"#<24=#
45163# 01231# 45163# 45163#
module GenoM, suivant ce formalisme de décomposition de la 65;# 45163# 2783196:#
2783196:# 2783196:# )*+'%#
couche fonctionnelle : )*+'%# 27831# $,$-#
@61(121?0#
Functional level : := (Module)+ 2783196:#
@61(121?0#
Module : := (Service)+ . (Execution Task)+ . (Pos-
ter)+
Service : := (Service Controler) . (Activity) Fig. 7. Modèle BIP d’un service GenoM.
Execution Task : := (Timer)+ . (Scheduler Activity)
Où le ”+” veut dire que le composant contient au moins
une sinon plusieurs occurrences du sous-composant, et le ”.” B. Componentisation de NDD
traduit la composition de plusieurs sous-composants. Nous avons modélisé en BIP le module ndd responsable
Par ailleurs, le Scheduleur Activity va ordonnancer le lan- de la navigation. Comme le montre Figure 8, il contient
cement des Activities des services relatifs à la task Execution une tâche d’exécution qui gère cinq services dont un ser-
en question. Dans un service, nous avons voulu séparer le vice Permanent et des posters (représentés par un composant
générique poster). La tâche d’exécution (cf Figure 9) se
réveille périodiquement synchronisée par un sous composant
Timer. À chaque période, elle déclenche le service Permanent
!"#$%&"'()*+#),"#' !"#$%&"'()*+#),"#' et elle permet aux services de s’exécuter grâce à leurs inter-
actions.
Grâce au formalisme BIP, il est possible de modéliser
-&.$%+/' -&.$%+/' des relations assez complexes à définir. À titre d’exemple,
le déclenchement du service Stop provoque l’interruption du
!"#$%&"' !"#$%&"'
déplacement qui se traduit par le "abort" du service
GoTo si ce dernier est en court d’exécution. Cette opération
0)1+"#' correspond à connecteur de type broadcast entre la tâche
5%8"#' !&9":4,"#'-&.$%+/' d’exécution et le port (notation port :service) trigger :Stop,
23"&4.)*'5617' et un autre connecteur de type broadcast entre ce premier
0)1+"#' connecteur et le port abort :Goto.
Par ailleurs, une autre propriété doit toujours être vérifiée, à
5%8"#' !&9":4,"#'-&.$%+/' savoir qu’un déplacement ne doit se faire que s’il est précédé
0)1+"#' par un SetParams et un SetSpeed qui initialisent cor-
23"&4.)*'5617'
rectement le module, d’où le connecteur entre trigger :GoTo,
getStatus :SetParams et getStatus :SetSpeed.
À partir de ce modèle, la chaı̂ne d’outil de BIP génère le
code que ”BIP Engine” pourra exécuter. Ce code contient des
appels aux codels contenus dans des bibliothèques initialement
Fig. 6. La componentisation d’un module GenoM développées pour GenoM afin d’exécuter les activités du robot.
SetParams Init SetSpeed GoTo Stop
NDD
SetParams SetSpeed
trigger getStatus abort
start exec end fail inter start exec end fail inter
Stop
start exec end fail inter
Init
start exec end fail inter
a b c d GoTo
e
Execution Task start exec end fail inter
f
g
Poster Permanent
read start exec end fail inter
Poster
a b c d
Control Task
!"#$%&'()*+,-)
e
a b c d
trigger
a b e
trigger c
f
f
trigger d
g
g g
f e
Timer
Le code généré pour ndd a été intégré et exécuté dans l’envi- à utiliser les invariants générés automatiquement pour prouver
ronnement du robot DALA du LAAS. Il convient de souligner la non-satisfiabilité des prédicats caractérisant les blocages
que cette simulation, ayant pour particularité l’hétérogénéité de globaux. Deux types d’invariants sont générés : (i) Les inva-
la couche fonctionnelle (des modules GenoM et BIP), met en riants de composants qui sur-approximent l’ensemble d’états
évidence la compatibilité GenoM/BIP ainsi que la compatibilité atteignables de ces derniers, et (ii) les invariants d’interaction
module BIP/couche décisionnelle. Cela renforce l’objectif de qui sont les contraintes sur les états des composants liées aux
l’approche qui cherche s’adjoindre et compléter l’approche interactions.
GenoM. Les invariants d’interaction sont obtenus par le calcul des
“traps”, des abstractions des états finis du système vérifié. La
V. V ÉRIFICATION méthode est implémentée dans l’outil D-Finder[3], qui prend
Les Outils de BIP, ainsi que d’autres outils de vérification comme entrées des programmes BIP et applique les stratégies
génériques, permettent, outre l’exploration exhaustive de l’es- prouvées pour éliminer des blocages potentiels par calcul
pace des états du système, la détection des deadlocks potentiels d’invariants de plus en plus forts. Au cour de la vérification du
et la vérification de certaines propriétés dans le modèle du système modélisé par cet outil, aucun blocage n’a été trouvé,
robot. d’où ce système est deadlock-free.