P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle : Différence entre versions

De Wiki de Projets IMA
(Journal de Bord)
Ligne 260 : Ligne 260 :
  
 
Au delà d'une certaine pression, les fuites deviennent trop importantes pour un contrôle précis du dispositif. De ce fait, nous avons réfléchi à plusieurs solutions pour maintenir les tuyaux dans le prototype. Après concertation, nous avons décidé de boucher les cavités avec un disque de silicone et d'insérer en force les tuyaux afin qu'ils restent bloqués.
 
Au delà d'une certaine pression, les fuites deviennent trop importantes pour un contrôle précis du dispositif. De ce fait, nous avons réfléchi à plusieurs solutions pour maintenir les tuyaux dans le prototype. Après concertation, nous avons décidé de boucher les cavités avec un disque de silicone et d'insérer en force les tuyaux afin qu'ils restent bloqués.
 +
 +
Nous avons testé ce nouveau système d'étanchéité et les résultats sont satisfaisants. On peut injecter jusque deux fois la pression maximale déterminée auparavant. Cependant, la déformation du prototype réel et du modèle de SOFA ne sont pas similaires.

Version du 16 février 2015 à 08:59

Logo polytech.jpg

Charlotte BRICOUT & Nathan MARTIN

Élèves Ingénieurs à Polytech Lille

Projet de Fin d'Etudes (PFE)

Rapport intermédiaire: Fichier:-BRICOUT MARTIN--Rapport PFE.pdf

Contexte du projet de fin d'études

Logo inria.jpg


Dans le cadre d'un projet commun avec le King's College de Londres, l'équipe Shacra de l'INRIA de Lille va travailler pendant 2 ans sur un projet de robot déformable. L'objectif est de contrôler des robots non-rigides qui pourraient faire progresser la chirurgie non invasive. A terme, le laboratoire envisage de créer un endoscope pneumatique. Actuellement, les robots sont de types pneumatiques et le contrôle est effectué en emplissant ou vidant des volumes d'air. Le projet pourrait évoluer avec un contrôle hydraulique qui serait plus précis grâce à une mesure de l'eau injectée dans les cavités.


Description des missions à réaliser

Les objectifs du projet sont :

- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA

- Faire un prototype pneumatique simplifié de l'endoscope afin de valider le contrôle du robot par le biais d'une simulation informatique. Pour mener à bien le projet, une partie de contrôle bas-niveau des régulateurs de pression sera nécessaire

- Valider le modèle sur le robot développé au King's College de Londres

- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique

Matériel à disposition

Logo sofa.png

Le logiciel SOFA

SOFA est une plate-forme de recherche et développement dédiée aux simulations physiques interactives et en particulier à la simulation médicale. La plate-forme regroupe de nombreux algorithmes issus de domaines de recherche variés. Des modèles de nature différente peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.
Logo blender.png


Le logiciel Blender

Blender est un logiciel libre de modélisation, d’animation et de rendu en 3D. Il dispose de fonctions avancées de modélisation, de sculpture 3D, de texturage, d’animation 3D et de rendu. Le logiciel prend en charge diverses simulations physiques telles que les particules, les corps rigides, les corps souples et les fluides.

Logo gid.jpg



Le logiciel GID

GID est un logiciel adaptatif universel pré et post-processeur pour les simulations numériques. Il a été conçu pour couvrir tous les besoins en simulation numérique de pré à post-traitement: modélisation géométrique, définition efficace des données d'analyse, maillage, transfert de données à un logiciel d'analyse et visualisation des résultats numériques.



Logo Avidemux.png


Le logiciel Avidemux

Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.


Logo Rhino.jpg




Le logiciel Rhinocéros 3D

C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture.




Logo Arduino.png


Le logiciel Arduino

Le logiciel Arduino est un environnement de développement permettant d'écrire, de compiler et de téléverser du code sur le microcontrôleur Arduino. Notre code peut alors s'exécuter, indépendamment d'un ordinateur.



Journal de Bord

Semaine 1

Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet:

- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA

- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire


Lors de la première séance complète, nous avons pris en main Blender. Ce logiciel va nous permettre de modéliser un prototype simplifié de l'endoscope. Dans un premier temps, nous concevons un modèle aux dimensions indiquées dans une publication de l'équipe. Blender nous fournira un rendu 3D de l'endoscope et nous réaliserons le maillage du prototype avec le logiciel SOFA.


Publication du robot du King's College

Semaine 2

Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format ".obj" afin d'effectuer le maillage. Mailler une forme conçue par Conception Assistée par Ordinateur (CAO) signifie la modéliser géométriquement par des éléments finis tels que des tétraèdres dans notre cas. Le prototype modélisé sous Blender contient des cavités très fines rendant le processus de maillage impossible sur le logiciel SOFA. Le nombre de nœuds du prototype est trop important et nos machines ne supportent pas les calculs. Un nombre de tétraèdres moins important ne fait pas apparaître les cavités sur le prototype maillé (trop grande imprécision). Après plusieurs tentatives de maillage vaines issues de Blender, nous avons décidé de travailler avec le logiciel GID. L'avantage de ce logiciel est qu'il propose non seulement une modélisation du prototype mais aussi son maillage.


Semaine 3

Sur GID, on modélise le prototype du robot. Une fois le modèle terminé, nous réalisons un maillage avec un nombre de nœuds moins important qu'auparavant mais le prototype n'est pas maillé correctement. Si l'on augmente le nombre de nœuds et par conséquent, le nombre de tétraèdres, le logiciel ne supporte pas les calculs. Nous nous retrouvons donc en face du même problème qu'avec Blender. De ce fait, nous décidons de doubler les dimensions du prototype afin d'obtenir des cavités plus grandes et de soumettre le résultat à l'équipe du King's College.

Le prochain objectif est donc de prendre contact avec eux pour connaître les possibilités de modification du prototype qui permettraient un maillage correct du modèle.


Coupe transversale du prototype

Semaine 4

Après discussion avec le King's college, notre modèle est validé. Les dimensions retenues sont donc deux fois plus grandes que celles initialement prévues. Les cavités ont donc un diamètre de 3 mm pour une longueur de 100 mm. Le robot mesurera 110 mm et aura un diamètre extérieur de 34 mm.

A présent, notre travail se scinde en deux parties.

La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:

- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel

- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste

La seconde partie consiste à mettre en simulation le prototype exporté de GID au format ".msh". Ce fichier mesh contient les coordonnées des points et les éléments de l'objet maillé. A partir de ce mesh, on cherche à générer un fichier au format ".xml" afin que les données contenues dans le mesh soient exploitables dans une scène Sofa. Pour ce faire, on utilise un script existant qui génère le fichier souhaité. Enfin, on rédige un fichier ".scn" qui va permettre de mettre en mouvement le prototype modélisé auparavant. Ce fichier scène nous permet par exemple de régler la rigidité du silicone, ou encore de définir le remplissage des cavités.

A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.

Vue de profil à 3000 noeuds

Semaine 5

On souhaite valider notre modèle avec la technologie pneumatique. Pour ce faire, il est nécessaire de contrôler le prototype dans Sofa en pneumatique. Pour cela, on utilise le plug-in de Sofa SoftRobots. Sur notre modèle, on dessine des "BoxROI" qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre "BoxROI": une boîte permettant de fixer la base du robot déformable et trois boîtes pour sélectionner une cavité sur deux de notre modèle. En effet, il n'y aura que trois cavités sur les six de contrôlées. Une fois les tétraèdres des cavités sélectionnées par le biais des BoxROI, on récupère tous les triangles qui composent les cavités. Cette opération permet de sélectionner la surface au lieu du volume et nous permettra le contrôle par pression leur remplissage. Maintenant, il est nécessaire de fixer un point que l'on nommera "Goal" et un second point nommé "Effector". "Goal" est le point que va suivre le modèle."Effector" est un point du modèle qui cherchera à converger vers le "Goal". Une fois ces deux points définis, il nous reste à tester différentes pressions pour connaître la tolérance de notre système ainsi que plusieurs valeurs du module de Young pour avoir la rigidité souhaitée. Après plusieurs tests, on retiendra une pression maximale de 2MPa et un module de Young de 18MPa.


Semaine 6

Durant cette séance, nous avons rendu notre code fonctionnel en essayant de mettre en mouvement le robot dans notre scène. Celui-ci a un mouvement correct s'il parvient à converger vers le point demandé. Actuellement, la convergence est imparfaite.


Semaine 7 & 8

Pas de séance de projet allouée.


Semaine 9

Cette semaine, nous reprenons en main la scène SOFA afin de mettre en mouvement le robot. En parallèle, nous élaborons plusieurs modèles FEM afin de trouver le bon compromis entre le nombre de noeuds qui ne doit pas être trop important pour que le prototype soit fonctionnel et la géométrie qui doit restée fidèle à celle fixée auparavant.


Semaine 10

Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le "Goal" se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point "Goal" avec son centre outil ("Effector").

D'un autre côté, nous entamons les réflexions quant à la réalisation matérielle du robot. En effet, nous devons réaliser un moule aux dimensions précises afin de couler le silicone.

Semaine 11

Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:

- 6 tiges filetées pour créer des cavités

- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype

- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie

L'extrémité basse du robot sera fixée sur une plaque de PVC et la haute, sur une plaque de plexiglas afin de contrôler le remplissage. Les tiges filetées seront fixées à l'aide de boulons sur chaque extrémité. Le tube de cuivre sera rentré en force dans chaque place et sera ainsi immobile lors de la phase de coulage. Un "chapeau" en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.

Vue de profil du prototype à 10 000 noeuds
Coupe transversale

Semaine 12

Nous avons conçu le moule et avons coulé du silicone "Dragon Skin" dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler. En parallèle, nous avons terminé les différents modèles en CAO et les soumettons à validation avant de faire l'implantation en simulation du modèle retenu.

Nous avons démoulé notre premier prototype physique mais nous constatons que les cavités ne sont pas parallèles entre elles. De ce fait, il est nécessaire de réitérer le processus de fabrication et de fixer d'avantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel.


Semaine 13

Nous avons crée une seconde scène SOFA qui intègre le modèle à 10 000 nœuds. Etant donné que celui-ci est particulièrement précis, il nous est impossible d'utiliser SOFA en temps réel pour évaluer les besoins en pression. De ce fait, nous devons programmer un enchaînement de mouvements qui seront exécutés par notre robot. Nous pourrons ainsi réaliser une série captures "step by step" de la position du robot sous SOFA. Enfin, nous réaliserons une vidéo qui récupérera toutes les images et qui reconstituera de manière fluide la trajectoire qu'aura pris le robot. Pour cela, nous utilisons le logiciel Avidemux qui est un logiciel libre disponible sous Ubuntu. Nous avions dans un premier temps essayé différents scripts shell mais nous avons rencontré différents problèmes quant aux formats des images ou à leurs tailles.

En parallèle, nous entamons un second cycle de fabrication en réutilisant le moule. Nous avons en effet améliorer le processus de coulage du silicone par rapport au premier essai.


Semaine 14

Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique. Celui-ci est constitué d'une carte arduino, d'une carte électronique, d'actionneurs et d'un compresseur pneumatique. Une fois les connexions établies entre les différents éléments de notre système, on connecte une poche en silicone pour débuter les tests en pression. On utilisera notre prototype une fois le programme arduino fonctionnel.


Semaine 15

Nous avons élaboré un programme arduino permettant d'envoyer une consigne de pression à une poche de silicone. Pour cela, nous sommes partis d'un programme existant non fonctionnel et nous l'avons retravaillé afin que l'erreur entre la consigne envoyée et la valeur appliquée soit la plus petite possible. Actuellement l'envoi est configurée pour fournir une unique consigne au lieu des trois désirées pour remplir les cavités. On constate également quelques oscillations à faible amplitude avant que la valeur se stabilise autour de la consigne.


Semaine 16

Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit OpenBeam Starter et nous avons réalisé une pièce en Conception Assistée par Ordinateur sur le logiciel Rhinoceros 3D. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. En parallèle, nous avons retravaillé le script sur le logiciel Avidemux. A ce stade, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme.

Vue en simulation du robot contrôlé par pression pneumatique


Semaine 17

Nous avons continué les tests en pression mais cette fois-ci sur le prototype directement. Pour le moment, on ne remplit que la première cavité et il nous faudra modifier le programme arduino afin d'envoyer une consigne sur chaque cavité à tour de rôle par exemple. Celui-ci admet une pression plus importante que les poches de silicone précédemment utilisées. On constate plusieurs fuite et nous allons devoir chercher des solutions pour les minimiser. Nous avons fabriqué un second prototype en silicone selon le même mode de fabrication. Ce robot va nous permettre de réaliser une seconde série de tests en pression afin de vérifier que chaque prototype tolère la même pression maximum et suit le même comportement.

Robot sur le socle

Nous avons connecté les 3 cavités du prototype à notre dispositif de contrôle. Ainsi, nous avons retravaillé notre programme arduino afin de gonfler une à une les cavités. Ainsi, on peut juger de l'étanchéité de chacune et obtenir un mouvement du prototype. La consigne est entrée dans le moniteur série d'arduino et elle est appliquée à une des cavités toutes les 2 secondes.

On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci "rebondit". Le silicone est donc trop mou et il est nécessaire de fabriquer un prototype en silicone plus dur. Précédemment, nous avions utilisé du silicone Ecoflex 00-30 qui est particulièrement flexible. On va passer sur un prototype en silicone Dragon Skin A10.

On remarque également un retard dans le programme arduino. En effet, pour chaque consigne envoyée, la pression d'air appliquée croît graduellement et n'est donc pas instantanément appliquée. Ce problème peut être issu de la boucle de contrôle dans le programme ou à une mauvaise gestion des pas de temps.


Semaine 18

Après analyse, nous avons déterminé les problèmes du programme Arduino et commencé à implémenter des solutions. La régulation est actuellement faite sur la première cavité uniquement. De ce fait, lors de l'envoi de consigne sur les deux autres cavités, l'erreur est très importante. Nous devons retravailler le code pour créer une régulation standard sur les trois cavités. On souhaite également changer le programme pour que l'envoi de consigne soit fait par interruption. Pour cela, on va utiliser la librairie "MsTimer2.h".

En parallèle du contrôle pneumatique, nous travaillons sur la simulation. Celle-ci n'était pas jouée en temps réel à cause du trop grand nombre de noeuds qui composent le maillage du prototype. Pour palier à ce problème, nous avons réalisé en CAO sur le logiciel Rhinoceros 3D un prototype que l'on extrait en '.obj'. Ainsi, le maillage est réalisé automatiquement et il est donc moins précis. Afin d'éviter un maillage trop grossier des cavités, on les extrait en 'obj' séparément.


Vue de dessus et vue en perspective du prototype sur Rhino


Dans notre scène SOFA, on insère par conséquent 4 fichiers "objet" correspondants aux trois cavités et au prototype global. Finalement, on obtient une simulation temps réel adéquate pour la prochaine étape du projet : l'interfaçage. Actuellement, le robot modélisé se déforme pour atteindre un point sous le contrôle de la souris. L'objectif principal du projet est que le prototype réel subisse les mêmes déformations simultanément. Pour cela, nous devons engager une communication entre la simulation informatique et la carte arduino qui contrôle le dispositif pneumatique.

Simulation Temps réel

Nous avons fabriqué un premier prototype en silicone Dragon Skin mais celui-ci étant très visqueux, nous ne sommes pas parvenus à combler tout le moule en moins de 45 minutes ce qui correspond au temps de séchage du silicone. Nous avons dû réitérer le processus de fabrication en injectant avec deux seringues à la fois pour que le remplissage se fasse plus rapidement. Nous avons ensuite couler par dessus du silicone afin de boucher les cavités pour que le prototype soit opérationnel pour les nouveaux tests en pression.


Nous avons débuté les tests en pression avec le prototype plus rigide. On a sensiblement augmenté la gamme de pression à injecter pour avoir une déformation conséquente du robot. Cependant, la déformation n'est pas optimale à cause des fuites, une fois que la pression injectée est grande. De ce fait, il nous faut concevoir une pièce qui limitera les fuites. Cette pièce sera conçue pour maintenir le câble d'injection dans les cavités dans pour autant les déformer. Il sera donc nécessaire de la concevoir très précisément en CAO.


Dans la simulation informatique SOFA, nous utilisons le plug-in "SoftRobot" qui permet notamment de contrôler le robot modélisé par injection d'air. Par ailleurs, le plug-in n'est pas configuré pour la communication série entre la simulation et une carte arduino pour le contrôle pneumatique. Jusqu'ici, l'envoi de données entre SOFA et Arduino était exploité pour le contrôle de servomoteur. De ce fait, nous avons mis à jour le plug-in afin que celui-ci permette l'échange de données dont nous avons besoin.


En parallèle, nous avons élaboré un nouveau programme arduino, chargé de la communication avec la plate-forme logicielle SOFA. Celui-ci établi la connexion série, traite les données issues de la simulation et les envoie au dispositif de contrôle.


Semaine 19

Nous avons commencé les tests liés à l'interfaçage. Dans un premier temps, nous avons constaté quelques problèmes dans les programmes du plug-in SoftRobot que nous avons modifié. Une fois les erreurs résolues, on constate que la communication série est fonctionnelle bien que certains paramètres de la simulation sont à ajuster :

  • Le module de Young qui régit la rigidité du robot
  • Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.
  • Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino

En ce qui concerne le module de Young, des essais mécaniques ont été réalisés sur le silicone Dragon Skin que nous avons utilisé. De ce fait, on connaît déjà le module de Young qui est de 150 000 Pa. Pour le coefficient de Poisson, on le fixe à 0.4 car au dessus de ce seuil, la simulation diverge et en dessous, on perd en précision. Enfin, il est nécessaire d'ajuster la simulation par rapport à la réalité. Une fois les coefficients précédents définis, on ajuste dans la scène SOFA, la pression maximale à injecter par rapport à celle relative au contrôle pneumatique. Ainsi, la déformation dans la simulation est fidèle à la déformation réelle du robot.

Au delà d'une certaine pression, les fuites deviennent trop importantes pour un contrôle précis du dispositif. De ce fait, nous avons réfléchi à plusieurs solutions pour maintenir les tuyaux dans le prototype. Après concertation, nous avons décidé de boucher les cavités avec un disque de silicone et d'insérer en force les tuyaux afin qu'ils restent bloqués.

Nous avons testé ce nouveau système d'étanchéité et les résultats sont satisfaisants. On peut injecter jusque deux fois la pression maximale déterminée auparavant. Cependant, la déformation du prototype réel et du modèle de SOFA ne sont pas similaires.