Sous-sections
Mots clés : recalage, réalité
augmentée, intégration logicielle, temps réel, méthodes
formelles, architecture de contrÔle .
Résumé :
Lors du couplage de la phase pré-opératoire avec la
phase per-opératoire, il s'agit enfin d'intégrer au système
robotique les modèles et les plannings chirurgicaux
construits et élaborés aux étapes précédentes. Ce couplage
s'exerce sous la forme de superposition d'images par
incorporation en temps-réel des images en provenance de la
phase de planification.
Il faut ici fournir la méthodologie et les outils
nécessaires à l'intégration des différents composants
logiciels et matériels requis pour un fonctionnement en
temps réel dans un cadre clinique. L'utilisation de
méthodes formelles permettra de certifier la correction
d'un maximum de sous-systèmes.
Le corps du patient et les organes étant déformables, il
est nécessaire de calculer leur déformation, en utilisant
notamment les images endoscopiques. Ce recalage peut être
basé sur des primitives issues d'une image monoscopique
(recalage 2D/3D), ou sur une reconstruction locale 3D de la
surface observée par un endoscope stéréoscopique (recalage
2.5D/3D).
Les résultats de la modélisation et du recalage devront
alors être utilisés pour guider le chirurgien dans son geste,
par incrustation d'informations significatives pour celui-ci
dans les images endoscopiques. Ces informations pourront être
par exemple la localisation globale de l'endoscope par
rapport au réseau coronarien (dans le cas du pontage
cardiaque), et la position des artères présentes dans le
champ de vision. Le problème essentiel consiste à visualiser
dans des images instantanées un modèle recalé par rapport à
des images acquises auparavant, et donc à estimer le
mouvement 3D de l'endoscope et des organes entre ces deux
instants.
Concernant la phase de recalage temps réel pour une
application de réalité augmentée, les travaux en cours
s'intéressent plutÔt à la chirurgie du cerveau qu`à la
chirurgie cardiaque. La difficulté de la chirurgie cardiaque
réside essentiellement dans le fait que le déplacement des
organes entre la phase pré-opératoire et per-opératoire est
important, ce qui justifie l'utilisation de méthodes de
recalage pour mesurer ces déplacements. De plus, dans le cas
d'une opération à coeur battant, le coeur possède un
mouvement propre important, qu'il est nécessaire de mesurer
et de compenser.
Le développement de systèmes de robotique chirurgicale
repose essentiellement sur la mise en oeuvre de nombreux
algorithmes provenant de différents domaines de recherche
(automatique, vision, imagerie médicale, géométrie,
informatique temps-réel, reconnaissance de la parole, etc).
L'intégration de ces différents composants dans un cadre
informatique commun, par sa complexité et son hétérogénéité,
requiert l'utilisation de méthodes de génie logiciel comme,
par exemple, la définition d'une architecture de
programmation [9].
Aux considérations générales de génie logiciel viennent
s'ajouter des préoccupations essentielles de sécurité et de
fiabilité intrinsèques au domaine médical. En effet, bien que
la sécurité soit un souci générique en robotique, celle ci
prend une nouvelle dimension lorsque les robots doivent être
utilisés en contact et à proximité des humains, en manipulant
de surcroît des instruments chirurgicaux pouvant entraîner la
mort. La sécurité des patients ou du personnel médical au
bloc dépend de systèmes dont la conception et le
fonctionnement interne dépassent leur compétence initiale. Il
faut donc garantir que le système est fiable et qu'il répond
à leurs attentes en matière de fonctionnement et de
sécurité.
Pour satisfaire cette préoccupation, des procédures
légales de certification sont en cours d'utilisation par des
instances officielles comme la Communauté Européenne ou la
Food & Drug Administration pour garantir que les
différentes parties (matérielles et logicielles) des systèmes
robotiques sont conformes aux normes (par exemple la norme
IEC601) avant autorisation de
commercialisation.
À l'heure actuelle, la partie logicielle des quelques
robots médicaux proposés dans l'industrie est principalement
validée par tests. On réalise des
tests unitaires, où chaque sous-programme du logiciel est
testé indépendamment des tests d'intégration. Ceux-ci
examinent ensuite le bon fonctionnement de l'ensemble du
logiciel. Les tests de validation fonctionnelle permettent
eux de vérifier le bon fonctionnement en situation réelle,
lorsque le logiciel est connecté à la ressource physique
qu'il pilote, c'est-à-dire le système robotique et son
ensemble de capteurs. Malheureusement, ces tests ne
permettent pas d'affirmer qu'un logiciel est correct, car
seul un sous ensemble fini des exécutions possibles est
testé.
Pour garantir de manière plus exhaustive la sécurité
logicielle d'une application de robotique médicale, nous
proposons de continuer les développements autour de notre
méthodologie de programmation temps
réel, basée sur l'utilisation de méthodes
formelles[6]. L'introduction de ces méthodes qui
utilisent très largement des vérifications mathématiques est
totalement novatrice dans le contexte de la robotique
médicale.
Spécification et programmation
d'applications : un système de robotique médicale est
en lui-même un système complexe pour lequel la spécification
du contrÔle est un exercice délicat. Il est donc nécessaire
de structurer la partie logicielle dans une architecture de contrÔle. On souhaite
assurer que l'exécution temps réel des différents modules
informatiques est respectée et que le comportement de
l'application reste correct dans tous les modes de
fonctionnement, y compris en présence de pannes. Pour ce
faire, nous poursuivons les études déjà entreprises dans le
contexte d'ORCCAD [5].
Au delà des algorithmes de contrÔle du robot, son utilisation
dans notre contexte de chirurgie cardiaque robotisée devra
être adaptée pour permettre l'exécution temps réel de
nombreux algorithmes de vision et traitement d'images. Les
premiers résultats obtenus dans ce domaine [3]
seront approfondis. Le langage MAESTRO [10,4],
qui est dédié à la programmation de missions robotiques sera
également étendu dans ce contexte. L'objectif est de
permettre à un non informaticien de programmer, à un haut
niveau d'abstraction, la totalité de l'intervention, sans
avoir à se soucier des détails d'implémentation
sous-jacents.
Cette activité implique la définition, d'une part, des
entités manipulées (lois de commande, algorithmes de vision
et traitement d'image, de génération de trajectoires...), et,
d'autre part, de la sémantique et de la syntaxe des
primitives de manipulation de ces entités.
Validation : nous proposons
d'utiliser des méthodes formelles afin d'apporter
la preuve rigoureuse (car mathématique)
du bon fonctionnement des programmes avant leur
exécution. Actuellement, une partie seulement du
logiciel que nous proposons est validée de faÇon
formelle [4] et nous souhaitons étendre les
vérifications à l'ensemble du logiciel
de contrÔle.
Dans l'environnement de programmation
MAESTRO, certaines propriétés du comportement
global de l'application (logique d'enchaînement des
algorithmes) sont garanties à l'aide de vérifications par
méthodes comportementales. Cependant, la vérification
formelle des programmes obtenus est pour l'instant effectuée,
de faÇon classique, sur des automates finis. Nous étudierons
la possibilité d'effectuer des
diagnostics, c'est-à-dire d'interpréter les résultats
de la vérification formelle, afin d'éclairer l'utilisateur
sur les modifications à apporter au programme source
MAESTRO en cas d'erreur.
L'extension naturelle du système de vérification consiste
à prouver que chacun des algorithmes pris séparément ne
provoquera pas d'erreur d'exécution, par exemple de
dépassement de capacité de calcul sur des nombres réels
(division par zéro, validité des opérations mathématiques,
etc) ou de manipulation incohérente des variables. En nous
inspirant des travaux en cours pour la vérification du code
de micro-contrÔleurs embarqué dans des stimulateurs
cardiaques, nous prévoyons d'étudier l'adéquation du système
COQ en collaboration avec l'équipe
LOGICAL pour vérifier le code des différentes
actions mises en oeuvre lors de la réalisation d'une
application.
L'objectif est de rendre la programmation et la validation
des applications robotiques accessibles à des utilisateurs
non spécialistes des méthodes théoriques sous-jacentes et de
faciliter ainsi leur diffusion.