<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nmartin1</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nmartin1"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Nmartin1"/>
		<updated>2026-05-13T19:15:17Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=17735</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=17735"/>
				<updated>2015-02-24T12:14:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapports finaux&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P1 Modélisation et commande de l'auto-ignition d'un moteur HCCI]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Moulé Alexandre / Taché Clément &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Anne-Lise Gehin / Jean-Yves Dieulot &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier:Rapport decembre moule tache.pdf]]  &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier: RapportFinPFE.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P5 Filtrage des indicateurs numériques de diagnostic]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; ZIOU Ismaïl / HAMZAOUI Oussama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_Z.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE ZIOU HAMZAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P6 Gestion des flux thermiques du bâtiment Polytech]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;Florian Royer / Zohour Assaieb &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Belkacem Ould Bouamama &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_Royer_Assaieb.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; [[Fichier:Rapport_Final_PFE_ProjetP6.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P7 Utilisation d'un Robot Nao pour les enfants autistes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rodriguez Loïc/Ismaïl Tahry&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Projetpfenaomi.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE RodriguezTahry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport decembre PFE pilulier mercier pinet.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport PFE Pinet Mercier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_MiSoutenance_DESPREZ_HADDAOUI.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:RapportFinal_Desprez-Haddaoui.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Intermédiaire_PFE_GAPAS_Rose_Tixier.pdf]]&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P12 Automatiser à l'aide d'une interface LabView la procédure de mesure de conductivité électrique d'un alternateur à griffes]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Hugo FONDU &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Abdelkader Benabou &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:rapport_presoutenance.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P13 Construction d'un support motorisé pour la réalisation des essais de décharges électrostatique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; JEBBARI Zineb / BEKRAOUI Oumaima &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Nathalie Rolland &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapportJebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:rapport-final-jebbek.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P19 Contrôle et synchronisation d'instruments en microscopie]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Simon Duthoit&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Samuel Hym &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:RapportPFESimonDuthoit.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[ Fichier:ProjetBLE 1 pdf.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_Yanmaz_Chalono2.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 Bis Prototypage d'interactions localisées et contextualisées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Olivier Tailliez&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Vantroys / Yvan Peter &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier: PFE_Olivier_Tailliez.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P22 Google Glass en logistique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémy Gondry / Vincent Meunier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_intermediaire_Gondry_Meunier.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_final_PFE_Meunier_Gondry.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_PFE_P24_Deltombe.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P25 SmartMeter]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas Ederlé / Sylvain Fossaert&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Guillaume Renault / Xavier Redon / Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportFossaertEderle.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportEderleFossaert.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P26 Vehicule Electrique ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Smain Labdouni / Adnane Jaoui &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Arnaud Chielens / Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:RAPPORT_VE_DEC.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_pfe_Jaoui_Labdouni_Fevrier.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P27 Controle Direct de Puissance d'un Convertisseur Matriciel ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Quentin Pesqueux / Nicolas Alexandre &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Philippe Delarue &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:PFE_IMA5_MATRIX_CONVERTER_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  [[Fichier:Rapport_PFE_Alexandre_Pesqueux.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:-BRICOUT MARTIN--Rapport PFE.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport PFE VF.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P33 Ligthing contactless / &amp;quot;wireless&amp;quot;]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benjamin Lafit &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Boé &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Benjamin_Lafit.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_Final_Benjamin_Lafit.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P35 Hack-a-Wii : Emulation de wiimote pour rendre la Wii accessibles aux personnes handicapées ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Fabien Violier &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P37 Creation d'un composant d'audit des accès cache mémoire sur un microprocesseur LEON3 simulé en FPGA ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérôme Vaessen &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Julien Cartigny / Pierrick Buret &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_VAESSEN_presoutenance.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_PFE_P37_VAESSEN_finale.pdf‎]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P44 Création d'un systeme domotique sans fil ]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Benoit MALIAR / Thomas MAURICE&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierrick BURET / Thomas VANTROYS  &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:RapportMaliarMauriceDecembre.pdf]] &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; [[Fichier:Rapport_final_Maliar_Maurice.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P57 CHRU Lille : Smart Picking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu Bossennec / Florian Caron&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Gwénaëlle Maton / Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[P58 Transformation des spectateurs d’un concert en afficheur géant interactif]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Hautecoeur Mélanie &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; Alexandre Boé / Thomas Vantroys &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;[[Fichier : PFE_Rapport_Hautecoeur_Melanie.pdf‎]]&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_projet_intermediaire_GERIER_LY.pdf]]‎&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;[[Fichier:Rapport_projet_GERIER_LY.pdf]]&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Rapport_PFE_VF.pdf&amp;diff=17733</id>
		<title>Fichier:Rapport PFE VF.pdf</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Rapport_PFE_VF.pdf&amp;diff=17733"/>
				<updated>2015-02-24T12:12:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17304</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17304"/>
				<updated>2015-02-20T11:18:14Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone Ecoflex 00-30 dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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é 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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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. La pièce est destinée à maintenir verticalement le robot et à le fixer au socle. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. Côté logiciel, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme (Voir figure ci-dessous). Le simulation n'est donc pas représentative du comportement du robot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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é. Notre robot 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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 au clavier et elle est appliquée à chacune des cavités à tour de rôle toutes les 2 secondes.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
D'autre part, la pièce a été imprimée et nous obtenons le système suivant: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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û modifier le processus de fabrication pour que le remplissage se fasse plus rapidement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite 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 sans pour autant les déformer. Il sera donc nécessaire de la concevoir très précisément en CAO. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17303</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17303"/>
				<updated>2015-02-20T11:13:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone Ecoflex 00-30 dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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é 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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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. La pièce est destinée à maintenir verticalement le robot et à le fixer au socle. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. Côté logiciel, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme (Voir figure ci-dessous). Le simulation n'est donc pas représentative du comportement du robot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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é. Notre robot 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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 au clavier et elle est appliquée à chacune des cavités à tour de rôle toutes les 2 secondes.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
D'autre part, la pièce a été imprimée et nous obtenons le système suivant: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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û modifier le processus de fabrication pour que le remplissage se fasse plus rapidement. &lt;br /&gt;
Pour palier aux problèmes d'étanchéité, nous avons boucher les deux extrémités du cylindre avec du silicone. Nous viendrons ensuite percer et introduire en force les câbles. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons ensuite 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 sans pour autant les déformer. Il sera donc nécessaire de la concevoir très précisément en CAO. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17302</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17302"/>
				<updated>2015-02-20T11:03:16Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone Ecoflex 00-30 dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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é 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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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. La pièce est destinée à maintenir verticalement le robot et à le fixer au socle. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. Côté logiciel, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme (Voir figure ci-dessous). Le simulation n'est donc pas représentative du comportement du robot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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é. Notre robot 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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 au clavier et elle est appliquée à chacune des cavités à tour de rôle toutes les 2 secondes.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
D'autre part, la pièce a été imprimée et nous obtenons le système suivant: &lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17301</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17301"/>
				<updated>2015-02-20T11:01:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone Ecoflex 00-30 dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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é 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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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. La pièce est destinée à maintenir verticalement le robot et à le fixer au socle. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. Côté logiciel, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme (Voir figure ci-dessous). Le simulation n'est donc pas représentative du comportement du robot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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é. Notre robot 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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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 au clavier et elle est appliquée à chacune des cavités à tour de rôle toutes les 2 secondes.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17300</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17300"/>
				<updated>2015-02-20T11:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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é 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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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. La pièce est destinée à maintenir verticalement le robot et à le fixer au socle. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. Côté logiciel, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme (Voir figure ci-dessous). Le simulation n'est donc pas représentative du comportement du robot.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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é. Notre robot 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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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 au clavier et elle est appliquée à chacune des cavités à tour de rôle toutes les 2 secondes.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17299</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17299"/>
				<updated>2015-02-20T10:49:08Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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. La pièce est destinée à maintenir verticalement le robot et à le fixer au socle. Il nous reste à imprimer la pièce par le biais d'une imprimante 3D. Côté logiciel, la vidéo obtenue n'est pas satisfaisante. En effet, on constate que le gonflement des cavités n'est pas uniforme (Voir figure ci-dessous).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17298</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17298"/>
				<updated>2015-02-20T10:46:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
Celui-ci est constitué d'une carte arduino, d'une carte électronique, de distributeurs 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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 ne se stabilise autour de la consigne.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17297</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17297"/>
				<updated>2015-02-20T10:41:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;palais&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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 davantage les extrémités afin que celles-ci n'aient aucun degré de liberté. Ainsi, le nouveau prototype devrait être opérationnel. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17294</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17294"/>
				<updated>2015-02-20T10:36:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17292</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17292"/>
				<updated>2015-02-20T10:32:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 2600 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17290</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17290"/>
				<updated>2015-02-20T10:24:21Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Ressources à disposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception Assistée par Ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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 sur l'Arduino, indépendamment d'un ordinateur.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17289</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17289"/>
				<updated>2015-02-20T10:22:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Ressources à disposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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 natures différentes peuvent être combinés de façon à produire des simulations complexes qui restent compatibles avec des temps de calcul optimaux.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17288</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17288"/>
				<updated>2015-02-20T10:21:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Matériel à disposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
* Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
* Mettre en place une simulation SOFA&lt;br /&gt;
&lt;br /&gt;
* 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&lt;br /&gt;
&lt;br /&gt;
* Réaliser le contrôle pneumatique du prototype&lt;br /&gt;
&lt;br /&gt;
* Mettre à jour le plug-in SOFA pour la communication série entre la simulation informatique et le prototype relié au dispositif de contrôle pneumatique&lt;br /&gt;
&lt;br /&gt;
* Interfacer la simulation avec le prototype réel. C’est-à-dire permettre le contrôle du robot par le bais de la simulation informatique&lt;br /&gt;
&lt;br /&gt;
* Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Ressources à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simu sofa.png|400px|thumb|center|Version finale de la simulation sur SOFA]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;br /&gt;
&lt;br /&gt;
==Conclusion==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tous les objectifs du projet ont été atteints et nous avons pu présenter nos résultats au centre de recherche du King's College qui en est satisfait. Actuellement, nous sommes capables de commander un robot déformable, mis en mouvement par un dispositif pneumatique, par le biais d'une simulation informatique. On peut le commander directement par le biais de l'interface graphique de la plate-forme logicielle SOFA en utilisant le pointeur de la souris. On peut également définir une trajectoire qui sera lue au démarrage de la simulation.&lt;br /&gt;
&lt;br /&gt;
Le projet va pouvoir évoluer avec un contrôle hydraulique qui se substituera à la commande pneumatique. Il sera nécessaire de revoir les proportions du prototype afin que celui-ci soit conforme aux dimensions d'un endoscope. Il faudra également changer sa composition pour permettre son utilisation en chirurgie non-invasive.&lt;br /&gt;
&lt;br /&gt;
A travers ce projet, nous avons progressé en programmation C++ sur les logiciels Arduino et SOFA. De plus, nous avons appréhendé les grands principes de fonctionnement de la simulation numérique appliquée aux robots déformables. Nous avons également découvert le fonctionnement d'un dispositif de contrôle pneumatique et l'avons pris en main. Nous avons expérimenté plusieurs processus de fabrication de prototype en silicone. Enfin, nous avons progressé en Conception Assistée par Ordinateur en modélisant le prototype sur différents logiciels.&lt;br /&gt;
&lt;br /&gt;
Ce projet est une belle opportunité pour travailler sur un projet conséquent, réparti dans le temps. Cela nous permet, par ailleurs, de sortir du cadre de Polytech Lille pour travailler dans une autre structure et d'être intégrés à une équipe.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17155</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17155"/>
				<updated>2015-02-18T15:17:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcul pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car une explication théorique sera disponible.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont très satisfaits de l'avancée coté Français.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17151</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=17151"/>
				<updated>2015-02-18T15:03:44Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans la simulation informatique SOFA, nous utilisons le plug-in &amp;quot;SoftRobot&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 19'''&lt;br /&gt;
&lt;br /&gt;
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 : &lt;br /&gt;
&lt;br /&gt;
*Le module de Young qui régit la rigidité du robot&lt;br /&gt;
*Le coefficient de Poisson qui permet de caractériser la contraction de la matière perpendiculairement à la direction de l'effort appliqué.&lt;br /&gt;
*Le coefficient d'ajustement des valeurs entre la simulation et le programme arduino&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 20'''&lt;br /&gt;
&lt;br /&gt;
La déformation du prototype réel et du modèle de SOFA ne sont pas similaires. On remarque, en effet, que le modèle ne se courbe pas mais suit une déformation linéaire. Ce constat a mis en évidence le fait que le modèle ne possède pas suffisamment de sections et de points sur sa longueur pour se déformer correctement. Une fois ce problème résolu, la simulation est opérationnelle. &lt;br /&gt;
&lt;br /&gt;
Nous devons réaliser une vidéo afin de l'envoyer au King's College. De ce fait, on décide de rédiger un script Shell qui décrit automatiquement une trajectoire pour le modèle. Ce script génère un fichier d'extension '.ws' qui sera automatiquement lu et exécuté lorsque la scène SOFA est jouée.&lt;br /&gt;
&lt;br /&gt;
En parallèle, on débute l'étude de faisabilité pour la migration technologique de pneumatique à hydraulique.Après concertation avec l'équipe, nous décidons d'expliquer entièrement le processus de calcule pour le contrôle pneumatique et hydraulique ainsi que la différence entre les deux systèmes. Grace à notre rapport, la migration sera plus simple car il sera disponible une explication théorique.&lt;br /&gt;
&lt;br /&gt;
La vidéo du dispositif en fonctionnement est appréciée des Anglais, ils sont contents de l'avancée coté Français.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=16386</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=16386"/>
				<updated>2015-02-04T10:31:23Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Matériel à disposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|left]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|left]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit X 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=16385</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=16385"/>
				<updated>2015-02-04T10:28:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Matériel à disposition */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|100px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_gid.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Avidemux.png|100px|thumb|right]] &lt;br /&gt;
'''Le logiciel Avidemux'''&lt;br /&gt;
&lt;br /&gt;
Avidemux est un logiciel libre de montage vidéo linéaire, pour les systèmes d'exploitation GNU/Linux, MacOS X et Windows.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Rhino.jpg|100px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Rhinocéros 3D'''&lt;br /&gt;
&lt;br /&gt;
C'est un logiciel de Conception assistée par ordinateur utilisé par exemple dans le milieu du design industriel ou de de l'architecture. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Logo_Arduino.png|100px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Arduino'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Figures robot.JPG|400px|thumb|center|Publication du robot du King's College]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|200px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|400px|thumb|center|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit X 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|300px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 17'''&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Robot1.jpg|250px|thumb|center|Robot sur le socle]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
On constate que le silicone utilisé n'est pas adéquate car à chaque mouvement du prototype, celui-ci &amp;quot;rebondit&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 18'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;MsTimer2.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue dessus perspective.JPG|750px|thumb|center|Vue de dessus et vue en perspective du prototype sur Rhino]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans notre scène SOFA, on insère par conséquent 4 fichiers &amp;quot;objet&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Simulation1.jpg|350px|thumb|center|Simulation Temps réel]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logo_Avidemux.png&amp;diff=16384</id>
		<title>Fichier:Logo Avidemux.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logo_Avidemux.png&amp;diff=16384"/>
				<updated>2015-02-04T10:21:02Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logo_Arduino.png&amp;diff=16383</id>
		<title>Fichier:Logo Arduino.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logo_Arduino.png&amp;diff=16383"/>
				<updated>2015-02-04T10:19:37Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logo_Rhino.jpg&amp;diff=16382</id>
		<title>Fichier:Logo Rhino.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Logo_Rhino.jpg&amp;diff=16382"/>
				<updated>2015-02-04T10:09:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15770</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15770"/>
				<updated>2015-01-28T13:49:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_gid.jpg|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|150px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|150px|thumb|right|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit X 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|600px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15769</id>
		<title>Fichier:Simu cylinder.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15769"/>
				<updated>2015-01-28T13:48:34Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : a téléversé une nouvelle version de « Fichier:Simu cylinder.png » : Vue en simulation du robot contrôlé par pression pneumatique.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15754</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15754"/>
				<updated>2015-01-28T09:46:16Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_gid.jpg|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|150px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|150px|thumb|right|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit X 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png|900px|thumb|center|Vue en simulation du robot contrôlé par pression pneumatique]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15753</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15753"/>
				<updated>2015-01-28T09:43:22Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_gid.jpg|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|150px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|150px|thumb|right|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit X 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu_cylinder.png]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15752</id>
		<title>Fichier:Simu cylinder.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15752"/>
				<updated>2015-01-28T09:42:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : a téléversé une nouvelle version de « Fichier:Simu cylinder.png » : Version du 28 janvier 2015 à 09:41 rétablie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15751</id>
		<title>Fichier:Simu cylinder.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15751"/>
				<updated>2015-01-28T09:41:43Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : a téléversé une nouvelle version de « Fichier:Simu cylinder.png »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15750</id>
		<title>Fichier:Simu cylinder.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Simu_cylinder.png&amp;diff=15750"/>
				<updated>2015-01-28T09:41:00Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15749</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15749"/>
				<updated>2015-01-28T09:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
Rapport intermédiaire:&lt;br /&gt;
[[Fichier:-BRICOUT_MARTIN--Rapport_PFE.pdf]]&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_gid.jpg|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|150px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|150px|thumb|right|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 14'''&lt;br /&gt;
&lt;br /&gt;
Nous avons finalisé notre prototype et il est actuellement fonctionnel. On commence alors à prendre en main le dispositif de contrôle pneumatique.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 15'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 16'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu un socle pour maintenir notre prototype. Pour cela, nous avons utilisé un kit X 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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:simu.png]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15042</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15042"/>
				<updated>2014-12-15T09:49:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_gid.jpg|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|150px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|150px|thumb|right|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15041</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=15041"/>
				<updated>2014-12-15T09:44:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Fichier:Logo_polytech.jpg‎‎|200px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
[[Fichier:Logo_inria.jpg‎‎|180px|thumb|left]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
[[Fichier:Logo_sofa.png‎|150px|thumb|right]]&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_blender.png|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.[[Fichier:Logo_gid.jpg|50px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; 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.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Vue_coupe.JPG‎‎|150px|thumb|right|Coupe transversale du prototype]]&lt;br /&gt;
[[Fichier:Profil_3000n.JPG|150px|thumb|right|Vue de profil à 3000 noeuds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (entre 2000 et 3000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 10000 et 11000 noeuds) et obtenir un modèle réaliste&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
A la fin de cette semaine, nous avons conçu un premier modèle à 2600 noeuds.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Nous avons à présent acheté le matériel et avons élaborer une stratégie de fabrication du moule. Pour cela, nous avons acheté:&lt;br /&gt;
&lt;br /&gt;
- 6 tiges filetées pour créer des cavités&lt;br /&gt;
&lt;br /&gt;
- 1 tube en PVC d'un diamètre intérieur de 34 mm pour donner une forme cylindrique au prototype&lt;br /&gt;
&lt;br /&gt;
- 1 tube en cuivre d'un diamètre extérieur de 16 mm pour creuser la géométrie&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Profil_10000n.JPG|150px|thumb|right|Vue de profil du prototype à 10 000 noeuds]]&lt;br /&gt;
[[Fichier:Face_10000n.JPG|150px|thumb|right|Coupe transversale]]&lt;br /&gt;
'''Semaine 12'''&lt;br /&gt;
&lt;br /&gt;
Nous avons conçu le moule et avons coulé du silicone &amp;quot;Dragon Skin&amp;quot; dans celui-ci. Nous avons laissé sécher environ 3 heures avant de démouler.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 13'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;step by step&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14861</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14861"/>
				<updated>2014-12-03T13:21:32Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
	&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; afin d'effectuer le maillage. Obtenir un maillage d'une forme conçu par CAO, signifie diviser cette forme en plusieurs autres formes (généralement des triangles ou des tétraèdres). Le but est de mettre en mouvement le tout, ce qui est impossible avec un objet plein. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
Sur GID, il est nécessaire de modéliser à nouveau le prototype du robot. Une fois le modèle terminé, nous réalisons un maillage avec un nombre de nœuds moins importants 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. &lt;br /&gt;
&lt;br /&gt;
Le prochain objectif est donc de prendre contact avec l'équipe du King's College pour connaître les possibilités de modification du prototype qui permettraient un maillage correct du modèle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le King's college, notre modèle est validé. Par ailleurs, nous avons décidé de multiplier par deux les dimensions du robot afin de faciliter la conception du prototype physique. En effet, le diamètre du robot cylindrique n'est que de 16 mm et sa longueur est de 10 cm.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (environ 2000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 5000 et 6000 noeuds) et obtenir une simulation réaliste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous reprenons en main la scène SOFA afin de mettre en mouvement le robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
D'un autre côté, nous entamons les réflexions quant à la réalisation matérielle du robot. Nous concevons également la maquette de coulage du robot. Il faut en effet pouvoir couler le silicone, le faire sécher et le démouler pour obtenir notre robot.&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Le matériel est maintenant acheté et la maquette pour réaliser le robot conçue. Nous prévoyons d'utiliser un tuyau en PVC de diamètre intérieur 34 cm, 6 tiges filetées pour créer les cavités, un tube en cuivre pour creuser le cylindre. Le tout fixé entre deux planches de bois. Les différents tubes seront ainsi immobiles lors de la phase de coulage et de séchage. Un &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;br /&gt;
&lt;br /&gt;
'''Semaine 12'''&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14821</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14821"/>
				<updated>2014-11-26T14:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
	&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; afin d'effectuer le maillage. Obtenir un maillage d'une forme conçu par CAO, signifie diviser cette forme en plusieurs autres formes (généralement des triangles ou des tétraèdres). Le but est de mettre en mouvement le tout, ce qui est impossible avec un objet plein. &lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
Sur GID, il est nécessaire de modéliser à nouveau le prototype du robot. Une fois le modèle terminé, nous réalisons un maillage avec un nombre de nœuds moins importants 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. &lt;br /&gt;
&lt;br /&gt;
Le prochain objectif est donc de prendre contact avec l'équipe du King's College pour connaître les possibilités de modification du prototype qui permettraient un maillage correct du modèle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le King's college, notre modèle est validé. Par ailleurs, nous avons décidé de multiplier par deux les dimensions du robot afin de faciliter la conception du prototype physique. En effet, le diamètre du robot cylindrique n'est que de 16 mm et sa longueur est de 10 cm.&lt;br /&gt;
&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (environ 2000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 5000 et 6000 noeuds) et obtenir une simulation réaliste&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on crée quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
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é.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous reprenons en main la scène SOFA afin de mettre en mouvement le robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
D'un autre côté, nous entamons les réflexions quant à la réalisation matérielle du robot. Nous concevons également la maquette de coulage du robot. Il faut en effet pouvoir couler le silicone, le faire sécher et le démouler pour obtenir notre robot.&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Le matériel est maintenant acheté et la maquette pour réaliser le robot conçue. Nous prévoyons d'utiliser un tuyau en PVC de diamètre intérieur 34 cm, 6 tiges filetées pour créer les cavités, un tube en cuivre pour creuser le cylindre. Le tout fixé entre deux planches de bois. Les différents tubes seront ainsi immobiles lors de la phase de coulage et de séchage. Un &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14820</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14820"/>
				<updated>2014-11-26T14:17:01Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
	&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; afin d'effectuer le maillage. 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é. Après plusieurs tentatives de maillage vaines avec SOFA, nous avons décidé de travailler avec le logiciel GID. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
Sur GID, il est nécessaire de modéliser à nouveau le prototype du robot. Une fois le modèle terminé, nous réalisons un maillage avec un nombre de nœuds moins importants 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. &lt;br /&gt;
&lt;br /&gt;
Le prochain objectif est de prendre contact avec l'équipe du King's College pour connaître les possibilités de modification du prototype qui permettraient un maillage correct du modèle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le King's college, notre modèle est validé. Par ailleurs, nous avons décidé de multiplier par deux les dimensions du robot afin de faciliter la conception du prototype physique. En effet, le diamètre du robot cylindrique est de 16 mm et sa longueur est de 10 cm.&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 5000 et 6000 noeuds)&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (environ 2000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; qui va permettre de mettre en mouvement le prototype modélisé auparavant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on créé quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons rendu notre code fonctionnel en essayant de mettre en mouvement le robot de notre scène. Celui-ci a un mouvement correct s'il parvient à converger vers le point demandé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
&lt;br /&gt;
Cette semaine, nous reprenons en main la scène SOFA afin de mettre en mouvement le robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
D'un autre côté, nous entamons les réflexions quant à la réalisation matérielle du robot. Nous concevons également la maquette de coulage du robot. Il faut en effet pouvoir couler le silicone, le faire sécher et le démouler pour obtenir notre robot.&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
&lt;br /&gt;
Le matériel est maintenant acheté et la maquette pour réaliser le robot conçue. Nous prévoyons d'utiliser un tuyau en PVC de diamètre intérieur 34 cm, 6 tiges filetées pour créer les cavités, un tube en cuivre pour creuser le cylindre. Le tout fixé entre deux planches de bois. Les différents tubes seront ainsi immobiles lors de la phase de coulage et de séchage. Un &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14819</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=14819"/>
				<updated>2014-11-26T14:16:21Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Journal de Bord */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Contexte du projet de fin d'études==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Description des missions à réaliser==&lt;br /&gt;
&lt;br /&gt;
Les objectifs du projet sont :&lt;br /&gt;
&lt;br /&gt;
- Développer un modèle FEM (Finite Element Method) du robot sur la plateforme logicielle SOFA &lt;br /&gt;
&lt;br /&gt;
- 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&lt;br /&gt;
&lt;br /&gt;
- Valider le modèle sur le robot développé au King's College de Londres &lt;br /&gt;
&lt;br /&gt;
- Faire une étude de faisabilité pour passer de la technologie pneumatique à hydraulique&lt;br /&gt;
	&lt;br /&gt;
==Matériel à disposition==&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel SOFA'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel Blender'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Le logiciel GID'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Pour démarrer notre projet, nous avons commencé par élaborer un environnement de travail complet: &lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis Polytech : Installation sur nos machines personnelles des logiciels Blender et SOFA&lt;br /&gt;
&lt;br /&gt;
- Pour travailler depuis l'INRIA : Etablissement d'une convention et obtention des accès au bâtiment du laboratoire &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;br /&gt;
&lt;br /&gt;
Une fois le robot entièrement modélisé sur Blender, on génère un modèle sous le format &amp;quot;.obj&amp;quot; afin d'effectuer le maillage. 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é. Après plusieurs tentatives de maillage vaines avec SOFA, nous avons décidé de travailler avec le logiciel GID. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 3''' &lt;br /&gt;
&lt;br /&gt;
Sur GID, il est nécessaire de modéliser à nouveau le prototype du robot. Une fois le modèle terminé, nous réalisons un maillage avec un nombre de nœuds moins importants 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. &lt;br /&gt;
&lt;br /&gt;
Le prochain objectif est de prendre contact avec l'équipe du King's College pour connaître les possibilités de modification du prototype qui permettraient un maillage correct du modèle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 4'''&lt;br /&gt;
&lt;br /&gt;
Après discussion avec le King's college, notre modèle est validé. Par ailleurs, nous avons décidé de multiplier par deux les dimensions du robot afin de faciliter la conception du prototype physique. En effet, le diamètre du robot cylindrique est de 16 mm et sa longueur est de 10 cm.&lt;br /&gt;
A présent, notre travail se scinde en deux parties.&lt;br /&gt;
&lt;br /&gt;
La première partie consiste à modéliser deux prototypes sur GID avec des nombres d'éléments différents:&lt;br /&gt;
&lt;br /&gt;
- un modèle précis pour évaluer les besoins en pression (entre 5000 et 6000 noeuds)&lt;br /&gt;
&lt;br /&gt;
- un modèle allégé (environ 2000 nœuds) pour que la simulation avec SOFA soit fluide et temps réel&lt;br /&gt;
&lt;br /&gt;
La seconde partie consiste à mettre en simulation le prototype exporté de GID au format &amp;quot;.msh&amp;quot;. 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 &amp;quot;.xml&amp;quot; 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 &amp;quot;.scn&amp;quot; qui va permettre de mettre en mouvement le prototype modélisé auparavant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 5'''&lt;br /&gt;
&lt;br /&gt;
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 &amp;quot;BoxROI&amp;quot; qui sont des boîtes permettant de sélectionner les tétraèdres d'un volume. Ici, on créé quatre &amp;quot;BoxROI&amp;quot;: 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 &amp;quot;Goal&amp;quot; et un second point nommé &amp;quot;Effector&amp;quot;. &amp;quot;Goal&amp;quot; est le point que va suivre le modèle.&amp;quot;Effector&amp;quot; est un point du modèle qui cherchera à converger vers le &amp;quot;Goal&amp;quot;. 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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 6'''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons rendu notre code fonctionnel en essayant de mettre en mouvement le robot de notre scène. Celui-ci a un mouvement correct s'il parvient à converger vers le point demandé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 7 &amp;amp; 8'''&lt;br /&gt;
&lt;br /&gt;
Pas de séance de projet allouée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 9'''&lt;br /&gt;
Cette semaine, nous reprenons en main la scène SOFA afin de mettre en mouvement le robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 10'''&lt;br /&gt;
Nous parvenons maintenant à simuler notre robot cylindrique en temps réel. Lorsque le &amp;quot;Goal&amp;quot; se déplace, notre robot va, par injection d'air dans ses cavités, essayer d'atteindre le point &amp;quot;Goal&amp;quot; avec son centre outil (&amp;quot;Effector&amp;quot;). &lt;br /&gt;
&lt;br /&gt;
D'un autre côté, nous entamons les réflexions quant à la réalisation matérielle du robot. Nous concevons également la maquette de coulage du robot. Il faut en effet pouvoir couler le silicone, le faire sécher et le démouler pour obtenir notre robot.&lt;br /&gt;
&lt;br /&gt;
'''Semaine 11'''&lt;br /&gt;
Le matériel est maintenant acheté et la maquette pour réaliser le robot conçue. Nous prévoyons d'utiliser un tuyau en PVC de diamètre intérieur 34cm, 6 tiges filetées pour créer les cavités, un tube en cuivre pour creuser le cylindre. Le tout fixé entre deux planches de bois. Les différents tubes seront ainsi immobiles lors de la phase de coulage et de séchage. Un &amp;quot;chapeau&amp;quot; en silicone sera ensuite coulé et soudé à une extrémité du robot pour assurer l'étanchéité des cavités.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13988</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13988"/>
				<updated>2014-09-28T19:20:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs à Polytech Lille&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Nous avons réglé les problèmes dits logistiques:&lt;br /&gt;
&lt;br /&gt;
- Installation des logiciels nécessaires au travail sur machines personnelles - Blender, SOFA&lt;br /&gt;
&lt;br /&gt;
- Rédaction des conventions et obtentions des accès au laboratoire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prise en main de Blender afin de modéliser une première version du robot déformable cylindrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13987</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13987"/>
				<updated>2014-09-28T19:19:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Nous avons réglé les problèmes dits logistiques:&lt;br /&gt;
&lt;br /&gt;
- Installation des logiciels nécessaires au travail sur machines personnelles - Blender, SOFA&lt;br /&gt;
&lt;br /&gt;
- Rédaction des conventions et obtentions des accès au laboratoire&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Prise en main de Blender afin de modéliser une première version du robot déformable cylindrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13986</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13986"/>
				<updated>2014-09-28T19:17:53Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
Élèves Ingénieurs&lt;br /&gt;
&lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;br /&gt;
&lt;br /&gt;
==Journal de Bord==&lt;br /&gt;
&lt;br /&gt;
'''Semaine 1'''&lt;br /&gt;
&lt;br /&gt;
Nous avons réglé les problèmes dits logistiques:&lt;br /&gt;
- Installation des logiciels nécessaires au travail sur machines personnelles - Blender, SOFA&lt;br /&gt;
- Rédaction des conventions et obtentions des accès au laboratoire&lt;br /&gt;
&lt;br /&gt;
Prise en main de Blender afin de modéliser une première version du robot déformable cylindrique.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Semaine 2'''&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13985</id>
		<title>P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le&amp;diff=13985"/>
				<updated>2014-09-28T19:10:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : Page créée avec « Charlotte BRICOUT &amp;amp; Nathan MARTIN Elèves Ingénieurs  Projet de Fin d'Etudes (PFE) »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT &amp;amp; Nathan MARTIN&lt;br /&gt;
Elèves Ingénieurs &lt;br /&gt;
Projet de Fin d'Etudes (PFE)&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=13984</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=13984"/>
				<updated>2014-09-28T19:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=13983</id>
		<title>Projets IMA5 2014/2015</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projets_IMA5_2014/2015&amp;diff=13983"/>
				<updated>2014-09-28T19:03:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Merci de référencer vos pages de projets ici. Merci aussi d'uniformiser vos formats que ce soit en regardant la présentation des projets déjà créés ou en allant modifier le format des précédents si votre façon de faire vous semble la meilleure. Dans tous les cas un minimum de communication entre les binômes est conseillée.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Projet&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Elèves&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Encadrant Ecole&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;th&amp;gt;Rapport décembre&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P8 Pilulier]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre Mercier / Emile Pinet&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS / Alexandre BOE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P9 Agenda pour personnes non lectrices]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Cédric DESPREZ &amp;amp; Soufiane HADDAOUI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS/Laurent Grisoni &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P11 Détecteur d'obstacles pour fauteuils électriques]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Geoffrey ROSE / Marjorie TIXIER &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; GAPAS / Blaise Conrard &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P21 balise Bluetooth Low Energy]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Kévin CHALONO / Armagan YAMNAZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P24 Robot de surveillance domestique]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Sébastien DELTOMBE &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Xavier Redon &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P45 Aide à la navigation d'un véhicule autonome]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Pierre APPERCÉ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P46 Simulation Temps Réel d'un Environnement de Robots Autonomes Logisticiens]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Valentin VERGEZ&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Rochdi MERZOUKI &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
 &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P59 Assistance globale pour aide au parking]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Mathieu GERIER / Céline LY &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Alexandre BOE / Thomas VANTROYS &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
 &amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;[[P28 	Modélisation d'un robot chirurgical déformable pour la simulation et le contrôle]]&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Charlotte BRICOUT / Nathan MARTIN &amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt; Jérémie DEQUIDT&amp;lt;/td&amp;gt;&lt;br /&gt;
    &amp;lt;td&amp;gt;&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=12479</id>
		<title>Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=12479"/>
				<updated>2014-04-19T09:34:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Charlotte BRICOUT&lt;br /&gt;
&lt;br /&gt;
Nathan MARTIN&lt;br /&gt;
&lt;br /&gt;
IMA4 - Polytech Lille&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique à Polytech Lille, nous allons réaliser un projet permettant de piloter et surveiller un véhicule autonome à travers un cockpit de conduite. Ce projet est dans la continuité du projet européen InTraDE (Intelligent Transportation for Dynamic Environment), consistant au transport autonome d'un fret. Notre projet sera encadré par Rochdi MERZOUKI et Xavier REDON. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Rob.jpg|400px|thumb|center|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Résumé du projet:'''&lt;br /&gt;
&lt;br /&gt;
Nous souhaitons relier le cockpit de conduite de Polytech Lille à un véhicule autonome Robucar. Le cockpit qui fonctionne sous le logiciel de simulation temps réel SCANeR Studio, communiquera directement en WiFi avec le Robucar. Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio afin de créer un environnement pour la simulation. Ensuite, nous élaborerons un scénario dans lequel nous intégrerons un véhicule de type Robucar, pouvant être piloté par une API (Application Programming Interface) que nous programmerons sur le PC supervision du cockpit de conduite.&lt;br /&gt;
L'objectif de ce projet est de récupérer la vitesse et l'angle de braquage des roues du Robucar et de les envoyer au PC Supervision où ils seront récupérés par une API. L’envoie de ces consignes se fera par le biais d’un serveur UDP. L’API, constituant un client pour le serveur, prendra en charge l'application des consignes reçues au cockpit de conduite et au modèle dynamique Robucar de la simulation. &lt;br /&gt;
De ce fait, nous verrons évoluer le Robucar en temps réel dans la simulation et simultanément, le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements &lt;br /&gt;
du volant dans le cockpit. Cette application est utile pour la surveillance mais aussi pour le guidage d’un véhicule.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:resume.PNG|900px|thumb|center|Schéma de principe]]&lt;br /&gt;
&lt;br /&gt;
== Matériel à disposition ==&lt;br /&gt;
[[Fichier:Cockpit.jpg|170px|thumb|right|Cockpit de conduite]]&lt;br /&gt;
&lt;br /&gt;
Pour notre projet nous avons à disposition:&lt;br /&gt;
&lt;br /&gt;
- un véhicule Robucar muni d'un PC intégré et d'une carte d'acquisition DSPACE (en C002)&lt;br /&gt;
&lt;br /&gt;
- les logiciels permettant sa conduite, à savoir Matlab, Simulink et Control Desk&lt;br /&gt;
&lt;br /&gt;
- un PC supervision (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Cockpit de simulation (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Accès au logiciel de simulation SCANeR Studio (en C002)&lt;br /&gt;
&lt;br /&gt;
Nous travaillerons sur le logiciel de développement Microsoft Visual Studio 2005 pour programmer le serveur et l'API.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description des outils à disposition ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:scaner.png|370px|thumb|right|Logiciel de simulation Temps Réel SCANeR Studio]]&lt;br /&gt;
&lt;br /&gt;
===SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou &lt;br /&gt;
de contrôle d'un véhicule (voiture, poids lourd, cycliste, 2 roues etc). &lt;br /&gt;
Il permet la représentation d'un environnement, modélisé en 3D dans le logiciel, auquel un ou plusieurs véhicules sont intégrés. &lt;br /&gt;
Les véhicules simulés sont de différents types et on s'intéressera pour notre application aux véhicules &amp;quot;simples&amp;quot; et &amp;quot;Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Selon leur type, les véhicules sont contrôlés par différentes API dans SCANeR Studio:&lt;br /&gt;
&lt;br /&gt;
- automatiquement par la simulation : API TRAFFIC, c'est le cas des véhicules de type simple.&lt;br /&gt;
&lt;br /&gt;
- à l'aide d'un élément extérieur tel qu'un cockpit de simulation ou un véhicule réel : API Modelhandler, c'est le cas des véhicules de type Advanced.&lt;br /&gt;
&lt;br /&gt;
Le logiciel comporte 5 modes permettant de réaliser une simulation:&lt;br /&gt;
&lt;br /&gt;
-	Terrain : permet de modéliser un environnement&lt;br /&gt;
&lt;br /&gt;
-	Véhicule : permet de sélectionner, de créer ou d’importer un véhicule dans la simulation&lt;br /&gt;
&lt;br /&gt;
-	Scénario : permet d’établir un scénario avec un Terrain et des Véhicules et de choisir les API&lt;br /&gt;
&lt;br /&gt;
-	Simulation : permet de simuler le Scénario en Temps réel&lt;br /&gt;
&lt;br /&gt;
-	Analyse : permet de récupérer des données de la simulation&lt;br /&gt;
&lt;br /&gt;
Pour réaliser notre simulation, nous commençons par créer un terrain représentant le parking de Polytech Lille. C'est dans le mode &lt;br /&gt;
scénario que nous choisissons les véhicules à intégrer à la simulation. Ici, nous avons intégré un véhicule Robucar (de type véhicule &amp;quot;Advanced&amp;quot;) et on intègre éventuellement des véhicules simples. Dans le mode simulation, nous choisissons les API qui seront actives. &lt;br /&gt;
Ici, les API indispensables sont &amp;quot;Modelhandler&amp;quot; et l'API que nous avons développé pour lire les consignes envoyées par le serveur et &lt;br /&gt;
les appliquer dans la simulation. Les deux API vont s'échanger des données par le biais de canaux : les Export Channels. Notre API &lt;br /&gt;
enverra donc une consigne de vitesse et d'angle de braquage des roues sur des Export Channels, définis par un nom ou un numéro, afin &lt;br /&gt;
que ModelHandler puissent lire ces informations.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Le véhicule ROBUCAR===&lt;br /&gt;
[[Fichier:robucar.jpg|290px|thumb|right|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le Robucar est un véhicule automatique &amp;quot;intelligent&amp;quot;, autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directionnelles pilotables séparément. &lt;br /&gt;
Il y a donc deux paramètres de commande pour chaque roue : l'orientation et la vitesse de rotation). Le véhicule est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données sur d'ordinateur intégré est rendu possible par la librairie CLIB. Celle-ci permet, en effet, de récupérer les données acquise par la DSPACE.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de notre projet, nous considérons que seules les roues avant du véhicule sont directionnelles. Nous appliquerons donc la même consigne de vitesse et de braquage aux deux roues avant.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Création d'un Serveur UDP===&lt;br /&gt;
&lt;br /&gt;
Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. C'est donc sur l'aspect temps réel de la simulation que nous souhaitons mettre l'accent. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque Windows Sockets 2 (« Winsock2 »). &lt;br /&gt;
Le RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme de pilotage correspondant à celui sur MATLAB. Une interface apparaît et nous pouvons alors accès à un poste de pilotage pour diriger le véhicule (cf figure ci-dessous). Lors de la conduite, des valeurs de consignes de la vitesse moyenne et l’angle de braquage &lt;br /&gt;
des roues sont récupérées par le serveur grâce à la bibliothèque «clib32». Le serveur implémente une structure de données contenant les deux valeurs et forme avec celles-ci un paquet à envoyer au client. Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant les consignes de vitesse et de braquage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:pilotage.PNG|500px|thumb|center|Poste de pilotage sur dSPACE ControlDesk]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Journal de bord==&lt;br /&gt;
&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
[[Fichier:Parking.png|300px|thumb|right|Parking Polytech Lille modélisé]]&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. &lt;br /&gt;
De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel. Pour créer des routes identiques à celles du parking,&lt;br /&gt;
on utilise une image satellite de celui-ci et on calque les routes créées sur la photo. Pour chacune des routes, on définit le sens de circulation et le mode de priorité.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio. Pour le tester, nous créons un scénario mettant en scène plusieurs véhicules de type &amp;quot;simple&amp;quot; qui sont pilotés automatiquement par le logiciel grâce à l'API Traffic. Nous lançons ainsi la simulation &lt;br /&gt;
et observons le comportement des véhicules sur les routes que nous avons conçu pour s'assurer du bon paramétrage de chacune des parcelles de routes.&lt;br /&gt;
&lt;br /&gt;
Résultats des simulations sur le terrain:&lt;br /&gt;
&lt;br /&gt;
- Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal&lt;br /&gt;
&lt;br /&gt;
- Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.&lt;br /&gt;
&lt;br /&gt;
Les virages étaient modélisés en &amp;quot;Polyline&amp;quot; ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples.&lt;br /&gt;
Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
La prochaine étape est la conception de deux programmes: un serveur UDP qui sera lancé sur le PC du Robucar et une API client, lancé sur le PC &lt;br /&gt;
supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. Pour débuter, nous décidons de réaliser une API simple qui affiche la vitesse d'un véhicule de type &amp;quot;simple&amp;quot;. On débute alors la&lt;br /&gt;
conception de cette API.&lt;br /&gt;
&lt;br /&gt;
En première partie de séance, nous nous entretenons avec le doctorant Vincent Coelen pour faire un point sur les API. On évoquera entre autre les points suivants:&lt;br /&gt;
&lt;br /&gt;
- comprendre l'utilisation des canaux (EXPORT CHANNEL)&lt;br /&gt;
&lt;br /&gt;
- mettre à disposition la documentation nécessaire pour les utiliser &lt;br /&gt;
&lt;br /&gt;
- comment transformer un projet C++ en une API qui évoluera dans le logiciel&lt;br /&gt;
&lt;br /&gt;
Nous nous entretenons également avec M. Merzouki pour définir plus précisément le cahier des charges. Les points abordés sont les suivants:&lt;br /&gt;
&lt;br /&gt;
- Programmation d'un Serveur UDP sur l'ordinateur intégré au Robucar pour communiquer en WIFI avec une API Client&lt;br /&gt;
&lt;br /&gt;
- Programmation d'une API Client à implanter sur le logiciel SCANeR du PC Supervision&lt;br /&gt;
&lt;br /&gt;
- Conception d'une seconde API permettant d'envoyer des consignes de vitesse et de braquage dans la simulation&lt;br /&gt;
&lt;br /&gt;
- Fusion de ces deux dernières API&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous commençons à prendre en main l'utilisation des sockets en C++ pour le serveur UDP et l'API Client. Nous utiliserons les sources suivantes:&lt;br /&gt;
&lt;br /&gt;
[http://www.frameip.com/entete-udp/ Frampeip: Serveur en mode non connecté]&lt;br /&gt;
&lt;br /&gt;
[http://rex.plil.fr/Enseignement/Reseau/Reseau.IMA4sc/reseau.html Cours IMASC : Programmation Réseau]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html Linux: Tutoriel sur les Serveurs]&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
Nous commençons à nous focaliser sur le fonctionnement du Robucar. Vincent Coelen nous explique comment fonctionne la DSPACE et comment utiliser un programme MATLAB pour récupérer des données du véhicule tels que la vitesse, l'angle de braquage, la position de la boîte de vitesse etc. On découvre aussi le fonctionnement du Cockpit en utilisant une API déjà fonctionnelle permettant d'envoyer des commandes &lt;br /&gt;
à celui-ci depuis la simulation. L'API Cockpit est implantée sur le logiciel SCANeR du PC Supervision. Nous utiliserons cette API par la suite&lt;br /&gt;
car notre API enverra les consignes de vitesse et d'angle braquage à ModelHandler et l'API Cockpit lira ces valeurs par le biais des Export Channels sur ModelHandler.&lt;br /&gt;
&lt;br /&gt;
Nous continuons la programmation du serveur UDP et de l'API Client et nous réalisons les premiers tests du serveur:&lt;br /&gt;
&lt;br /&gt;
- On met le PC Supervision et le PC du Robucar sur le même réseau&lt;br /&gt;
&lt;br /&gt;
- On essaie de se &amp;quot;pinger&amp;quot; l'un l'autre pour vérifier la connexion entre les deux ordinateurs: la connexion est ouverte&lt;br /&gt;
&lt;br /&gt;
Problème rencontré:&lt;br /&gt;
&lt;br /&gt;
Les codes du serveur et du client ne compilent pas car il manque des librairies. Nous renseignons les librairies manquantes et corrigeons les erreurs de compilation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5 ===&lt;br /&gt;
&lt;br /&gt;
Nous réorganisons les codes du serveur et du client avec l'aide de M. Redon. Le serveur et l'API Client ne fonctionnent actuellement pas.&lt;br /&gt;
Afin d'accéder aux données de la DSPACE, il nous faut utiliser un Parser, programmé par un doctorant ayant travaillé sur le Robucar auparavant. Ce parser prend en paramètre les noms des variables dans le programme Simulink et nous renvoie leur nom système correspondant, exploitable en C++. Pour cela, il faut indiquer au parser le chemin (path) et le nom exact des variables dans Simulink. Dans le serveur UDP, on récupère donc&lt;br /&gt;
grâce à la librairie Clib les valeurs de la vitesse et l'angle de braquage des roues du Robucar.&lt;br /&gt;
&lt;br /&gt;
Après une série de débogages, le serveur UDP est fonctionnel. Les échanges de paquets entre les deux PC connectés se font rapidement. Grâce à un compteur dans le programme du Serveur, on constate que beaucoup de paquets sont perdus mais ceci ne devrait pas poser trop de problèmes dans&lt;br /&gt;
la simulation, dans la mesure ou le débit d'émission de paquets est rapide.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
On débute la programmation de la seconde API permettant d'envoyer des données à la simulation. Pour ce faire, on doit prendre en main l'écriture sur les EXPORT CHANNELS. &lt;br /&gt;
En effet, ils permettent d'échanger des informations entre les différentes API. Ici, on cherche à échanger des données entre notre API et &lt;br /&gt;
l'API ModelHandler qui pilote le modèle Robucar dans la simulation. On va donc renseigner les cases mémoires de la vitesse et de l'angle de braquage des roues dans lesquelles Modelhandler lis ces informations pour les envoyer sur le modèle de la simulation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
&lt;br /&gt;
On continue et termine rapidement la programmation de l'API. On réalise les premiers tests de celle-ci dans Scaner Studio. Pour ce faire, on charge notre terrain (parking de Polytech Lille), on ajoute un scénario qui dans notre cas est l'ajout d'un véhicule de type Advanced piloté par Modelhandler. On ajoute ensuite une API en utilisant le fichier .exe généré par notre projet sur Visual Studio. Enfin, on sélectionne notre API et l'API ModelHandler dans le mode simulation.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:api.PNG|900px|thumb|center|Sélection des API]]&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
&lt;br /&gt;
- Problème dans les héritages des dépendances supplémentaires du projet dans Microsoft Visual Studio: on doit ajouter certaines librairies supplémentaires &lt;br /&gt;
&lt;br /&gt;
- l'API bloque la simulation bien qu'elle compile correctement indépendamment de la simulation. A première vue, ce problème serait dû à une &lt;br /&gt;
erreur de segmentation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
&lt;br /&gt;
L'API envoyant des données fixes à SCANeR Studio est fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résolus sont :&lt;br /&gt;
&lt;br /&gt;
- Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double). Cette erreur de format occasionnait&lt;br /&gt;
une erreur de segmentation&lt;br /&gt;
&lt;br /&gt;
- Il est nécessaire de démarrer le moteur en fixant la variable &amp;quot;IgnitionKey&amp;quot; à 3 ce qui correspond à moteur en marche (Engine Start)&lt;br /&gt;
&lt;br /&gt;
- Il est préférable d'écrire sur la variable &amp;quot;TimeOfUpdate&amp;quot; pour &amp;quot;synchroniser&amp;quot; l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz&lt;br /&gt;
&lt;br /&gt;
- On mettra également la boîte de vitesse à 1 (GearBox)&lt;br /&gt;
&lt;br /&gt;
Les commandes envoyées sur les canaux sont :&lt;br /&gt;
&lt;br /&gt;
 Com_setDoubleData(CabToModelOutput,&amp;quot;Accelerator&amp;quot;, OutputData.accelerator);&lt;br /&gt;
 Com_setDoubleData(CabToSteeringOutput,&amp;quot;SteeringWheel&amp;quot;,OutputData.vehiculewheelangle);&lt;br /&gt;
 Com_setShortData(CabToModelOutput, &amp;quot;GearBoxAutoMode&amp;quot;, 0);&lt;br /&gt;
 Com_setShortData(CabToModelOutput, &amp;quot;WantedGear&amp;quot;, 1);&lt;br /&gt;
 Com_setShortData(CabToModelOutput, &amp;quot;IgnitionKey&amp;quot;, 3);&lt;br /&gt;
 Com_setDoubleData(CabToModelOutput, &amp;quot;TimeOfUpdate&amp;quot;,Process_GetTime());&lt;br /&gt;
&lt;br /&gt;
On impose 0 sur “GearBoxAutoMode” pour gérer la boîte de vitesse manuellement.&lt;br /&gt;
&lt;br /&gt;
On impose 3 sur “IgnitionKey” pour démarrer le moteur (Start Engine)&lt;br /&gt;
&lt;br /&gt;
On impose 1 sur “WantedGear” pour démarrer en vitesse numéro 1&lt;br /&gt;
&lt;br /&gt;
Nous commençons à fusionner l'API client et cette API.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9===&lt;br /&gt;
&lt;br /&gt;
Les deux API sont fusionnées et nous commençons les tests de notre nouvelle API. Nous l'ajoutons à SCANeR et celle-ci devient rapidement fonctionnelle. Cependant, nous rencontrons des problèmes avec la connexion WIFI qui n'est pas fiable et qui coupe très souvent. En effet, nous avons dans un premier temps créé un réseau ad hoc. Ce type de réseau est facile et rapide à mettre en place mais sa fiabilité reste limitée. &lt;br /&gt;
Il y a des pertes de données et de connexion assez fréquentes. De plus, La bande passante est limitée. Un problème subsiste donc, le temps de latence entre l'envoi des consignes et l'application de celles-ci au modèle de SCANeR Studio est très important. En d'autres mots, les déplacements du Robucar ne sont pas fiables dans la simulation. Nous avons donc poursuivi les tests en connectant le Robucar et le PC Supervision par Ethernet. La connexion est plus stable mais le cahier des charges nous impose une communication WIFI. Nous nous sommes donc&lt;br /&gt;
procurés un routeur que nous avons configuré pour établir une connexion entre les deux PC. La connexion est alors stable et les échanges de &lt;br /&gt;
paquets se font rapidement. On conservera donc cette configuration pour la suite des tests.&lt;br /&gt;
 &lt;br /&gt;
Après une nouvelle phase de tests, nous constatons que l'angle de braquage des roues dans la simulation n'est pas correct. Le Robucar fourni un angle compris entre 2242 (angle de 30° à gauche) et 3002 (angle de 30° à droite). De ce fait, le déplacement tout droit correspond à une valeur de 2622. Dans la simulation, la direction tout droit correspond à zéro. Pour tourner à gauche, on veut un angle en radian positif et pour tourner à droite un angle négatif. Dans la mesure où la variation de l’angle en fonction de la position du volant est sensible, on choisit un intervalle I ∈[2600;2670] pour aller tout droit. Le calcul de l’angle pour tourner à gauche ou à droite est réalisé selon une règle de 3. &lt;br /&gt;
Nous avons également réajusté la vitesse du véhicule dans la simulation. En effet, la consigne de vitesse envoyée par le Robucar représente la moyenne des vitesses des roues avant et arrière. Or les roues arrière ont une vitesse plus faible que les roues avant. De ce fait, nous avons calculé un coefficient permettant d’ajuster la vitesse uniquement selon la vitesse des roues avant. Ici, ce coefficient vaut 1,34.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 10===&lt;br /&gt;
&lt;br /&gt;
Une fois les paramètres réajustés, les mouvements du modèle dans SCANeR sont relativement précis et on peut maintenant surveiller le véhicule&lt;br /&gt;
lors de son déplacement selon plusieurs points de vue (Top View, Driver View etc).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Driver_view.PNG|500px|thumb|center|Driver View dans la simulation]]&lt;br /&gt;
&lt;br /&gt;
Malheureusement, le cockpit de conduite n'est plus à Polytech Lille depuis plusieurs semaines et ne pouvons donc pas tester le système complet&lt;br /&gt;
avec le Robucar, le PC supervision et le cockpit de conduite. L'API cockpit étant fonctionnelle, le système dans sa globalité devrait fonctionner sans problème.&lt;br /&gt;
&lt;br /&gt;
=== Bilan de fin de projet ===&lt;br /&gt;
&lt;br /&gt;
Ce projet nous a permis d'appréhender les notions de serveur et de client, jamais étudiées jusqu'ici. Ces nouvelles notions ont soulevé plusieurs&lt;br /&gt;
problèmes tels que le débit d'émission et la fiabilité du réseau entre les deux composantes du système. Nous avons pris en main SCANeR Studio en utilisant chacun des modes pour créer une simulation complète. En parallèle, nous avons pu comprendre le fonctionnement des API ainsi que les liens internes entre celles-ci.&lt;br /&gt;
&lt;br /&gt;
En utilisant un cockpit de conduite tel que celui de la salle C002 à Polytech Lille, la surveillance d’un véhicule est possible à courte distance. En effet, la connectivité actuelle ne permet pas la communication entre le cockpit (ou le PC supervision ici) et le Robucar. Par ailleurs, si on pallie à ce problème, on pourrait imaginer le guidage du véhicule dans des zones confinées où la perception d’obstacles et la détection de collision par le conducteur est difficile. On pourrait également utiliser le télémètre laser pour la détection d’obstacles et envoyer, de la même façon, les informations à l’opérateur sur le cockpit de simulation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rendus du projet ==&lt;br /&gt;
&lt;br /&gt;
Rapport de projet: [[Fichier:-BRICOUT_MARTIN-_Rapport_projet_IMA4.pdf‎]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Logiciel_SCANeR&amp;diff=12478</id>
		<title>Logiciel SCANeR</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Logiciel_SCANeR&amp;diff=12478"/>
				<updated>2014-04-19T07:45:15Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : Annulation des modifications 12477 de Nmartin1 (discussion)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECTION [[Guidage et Surveillance d'un train de véhicule à travers un Cockpit de conduite]]&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Logiciel_SCANeR&amp;diff=12477</id>
		<title>Logiciel SCANeR</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Logiciel_SCANeR&amp;diff=12477"/>
				<updated>2014-04-19T07:43:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : Page blanchie&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11097</id>
		<title>Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11097"/>
				<updated>2014-04-10T07:31:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Semaine 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique, nous allons réaliser un projet permettant de piloter et surveiller&lt;br /&gt;
un véhicule autonome à travers un cockpit de conduite. Ce projet sera encadré par Rochdi MERZOUKI et Xavier REDON.&lt;br /&gt;
&lt;br /&gt;
'''Résumé du projet:'''&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet InTraDE, transport autonome du fret, nous souhaitons relier le cockpit de conduite de la salle C002 à un véhicule mobile RobuCar.&lt;br /&gt;
Pour cela, le cockpit qui fonctionne sous le simulateur de dynamique du véhicule SCANeR Studio, communiquera directement via le réseau WiFi avec un véhicule autonome Robucar. &lt;br /&gt;
Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio. Ensuite, nous intégrerons à ce terrain un véhicule Robucar déjà modélisé. &lt;br /&gt;
Nous élaborerons alors un scénario dans SCANeR mettant en scène plusieurs véhicules, pilotés automatiquement par SCANeR et le Robucar, piloté par une API (Application Programming Interface)&lt;br /&gt;
sur le PC supervision. L'objectif de ce projet est de récupérer, par le biais d'une première API, des consignes de vitesse et d'angle de braquage des roues imposées au Robucar (par le biais d'un programme MATLAB déjà opérationnel) et&lt;br /&gt;
de les envoyer au PC Supervision où ils seront récupérées par une seconde API. Celle-ci prendra en charge l'acheminement de ces données vers le cockpit et la simulation sur les channels adéquates pour que l'API (ModelHandler) qui contrôle le véhicule simulé prenne en compte ces consignes et les applique au modèle dynamique. De ce fait, nous verrons évoluer en temps réel le Robucar dans la simulation et simultanément,&lt;br /&gt;
le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements du volant dans le cockpit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pour aller plus loin'''&lt;br /&gt;
&lt;br /&gt;
On pourra également télé-opérer le véhicule réel à tout moment, c'est à dire le piloter via le cockpit. La manipulation pourra éventuellement être réalisée avec deux Robucars.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matériel à disposition ==&lt;br /&gt;
&lt;br /&gt;
Pour notre projet nous avons à disposition:&lt;br /&gt;
&lt;br /&gt;
- un véhicule Robucar muni d'un PC intégré et d'une carte d'acquisition DSPACE (en C002)&lt;br /&gt;
&lt;br /&gt;
- les logiciels permettant sa conduite, à savoir Matlab, Simulink et Control Desk&lt;br /&gt;
&lt;br /&gt;
- un PC supervision (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Cockpit de simulation (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Accès au logiciel de simulation SCANeR Studio (en C002)&lt;br /&gt;
&lt;br /&gt;
Nous travaillerons sur le logiciel de développement Microsoft Visual Studio 2005.&lt;br /&gt;
&lt;br /&gt;
== Définition des outils à disposition ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:scaner.png|370px|thumb|right|Logiciel de simulation Temps Réel SCANeR Studio]]&lt;br /&gt;
&lt;br /&gt;
===SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou de contrôle d'un véhicule (voiture, poids lourd, cycliste, piéton). &lt;br /&gt;
Il permet la représentation d'un environnement, modélisé en 3D par le logiciel, auquel un ou plusieurs véhicules sont intégrés. &lt;br /&gt;
Les véhicules simulés sont de différents types et on s'intéressera pour notre application aux véhicules &amp;quot;simples&amp;quot; et &amp;quot;Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Selon leur type, les véhicules sont contrôlés par différentes API (Application Programming Interface) dans SCANeR Studio:&lt;br /&gt;
&lt;br /&gt;
- automatiquement par la simulation : API TRAFFIC. C'est le cas des véhicules de type simples.&lt;br /&gt;
&lt;br /&gt;
- à l'aide d'un élément extérieur tel qu'un cockpit de simulation ou un véhicule réel : API Modelhandler. C'est le cas des véhicule de type Advanced.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une simulation, il faut un terrain et un scenario. C'est dans le mode scenario que nous choisissons les véhicules à mettre en place dans la simulation. Ici, nous modéliserons le Parking de Polytech Lille puis nous y intégrerons le Robucar (de type véhicule &amp;quot;Advanced&amp;quot;) et éventuellement des véhicules simples. Nous choisissons également les API qui seront actives. Ici, les API indispensables sont Modelhandler et l'API que nous avons développé pour lire les consignes envoyées par le serveur et les appliquer dans la simulation. Les deux API vont s'échanger des données par le biais de canaux : les Export Channels. Notre API enverra donc une consigne de vitesse et d'angle de braquage des roues sur des Export Channels définis précisément afin que ModelHandler puissent les informations.&lt;br /&gt;
&lt;br /&gt;
===Le véhicule ROBUCAR===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robucar.jpg|350px|thumb|right|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
Le Robucar est un véhicule automatique &amp;quot;intelligent&amp;quot;, autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directionnelles pilotables séparément. &lt;br /&gt;
Il y a donc deux paramètres de commande pour chaque roue : l'orientation et la vitesse de rotation). Le véhicule est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données sur d'ordinateur intégré est rendu possible par la librairie CLIB. Celle-ci permet, en effet, de récupérer les données acquise par la DSPACE.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de notre projet, nous considérons que seules les roues avants du véhicule sont directionnelles. Nous appliquerons donc la même consigne de vitesse et de braquage aux deux roues avant.&lt;br /&gt;
&lt;br /&gt;
===Création d'un Serveur UDP===&lt;br /&gt;
&lt;br /&gt;
Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque Windows Sockets 2 (« Winsock2 »). &lt;br /&gt;
Le RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme correspondant à celui sur MATLAB. Une interface apparaît et nous pouvons alors piloter le véhicule. Lors de la conduite, des valeurs de consignes pour la vitesse moyenne et l’angle de braquage des roues sont donc récupérées dans l’API Serveur grâce à la bibliothèque « clib32 ». Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant une consigne de vitesse et de braquage.&lt;br /&gt;
&lt;br /&gt;
==Journal de bord==&lt;br /&gt;
&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
[[Fichier:Parking.png|300px|thumb|right|Parking Polytech Lille modélisé]]&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. &lt;br /&gt;
De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène un Robucar qui est de type &amp;quot;vehicle Advanced&amp;quot; &lt;br /&gt;
et plusieurs véhicules de type &amp;quot;vehicle simple&amp;quot; qui seront pilotés automatiquement par le logiciel. Le Robucar est piloté par l'API ModelHandler et nous pouvons donc dès à présent tester la fonctionnalité&lt;br /&gt;
de notre terrain.&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène, dans un premier temps, uniquement des véhicules de type &amp;quot;vehicle simple&amp;quot;. Ces véhicules sont pilotés automatiquement par le logiciel, ce qui nous permet de nous concentrer sur notre terrain. Nous pouvons ainsi dès à présent tester sa fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Résultats des simulations sur le terrain:&lt;br /&gt;
&lt;br /&gt;
- Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal&lt;br /&gt;
&lt;br /&gt;
- Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.&lt;br /&gt;
&lt;br /&gt;
Les virages étaient modélisés en &amp;quot;Polyline&amp;quot; ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples.&lt;br /&gt;
Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
La prochaine étape est la conception de deux API: un serveur UDP qui sera lancé sur la Robucar et un client, lancé sur le PC de supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. On décide de réaliser une API simple qui affiche la vitesse d'un véhicule de type simple. On débute alors la conception de cette API.&lt;br /&gt;
&lt;br /&gt;
En première partie de séance, nous nous entretenons avec le doctorant Vincent Coelen pour faire un point sur les API. On évoquera entre autre les points suivants:&lt;br /&gt;
&lt;br /&gt;
- comprendre l'utilisation des canaux (EXPORT CHANNEL)&lt;br /&gt;
&lt;br /&gt;
- mettre à disposition la documentation nécessaire pour les utiliser &lt;br /&gt;
&lt;br /&gt;
- comment transformer un projet C++ en une API qui évoluera dans le logiciel&lt;br /&gt;
&lt;br /&gt;
Nous nous entretenons également avec M. Merzouki pour définir plus précisément le cahier des charges. Les points abordés sont les suivants:&lt;br /&gt;
&lt;br /&gt;
- Programmation d'un Serveur UDP sur l'ordinateur intégré au Robucar pour communiquer en WIFI avec une API Client&lt;br /&gt;
&lt;br /&gt;
- Programmation d'une API Client à implanter sur le logiciel SCANeR du PC Supervision&lt;br /&gt;
&lt;br /&gt;
- Conception d'une seconde API permettant d'envoyer des consignes de vitesse et de braquage dans la simulation&lt;br /&gt;
&lt;br /&gt;
- Fusion de ces deux dernières API&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous commençons à prendre en main l'utilisation des sockets en C++ pour le serveur UDP et l'API Client. Nous utiliserons les sources suivantes:&lt;br /&gt;
&lt;br /&gt;
[http://www.frameip.com/entete-udp/ Frampeip: Serveur en mode non connecté]&lt;br /&gt;
&lt;br /&gt;
[http://rex.plil.fr/Enseignement/Reseau/Reseau.IMA4sc/reseau.html Cours IMASC : Programmation Réseau]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html Linux: Tutoriel sur les Serveurs]&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
Nous commençons à nous focaliser sur le fonctionnement du Robucar. Vincent nous explique comment marche la DSPACE et comment utiliser un programme MATLAB pour récupérer des données du véhicule &lt;br /&gt;
tels que la vitesse, l'angle de braquage, la position de la boîte de vitesse etc. On découvre aussi le fonctionnement du Cockpit en utilisant une API déjà fonctionnelle permettant d'envoyer des commandes &lt;br /&gt;
au cockpit depuis la simulation. Cette API est implantée sur le logiciel SCANeR du PC Supervision.&lt;br /&gt;
Nous continuons la programmation du serveur UDP de l'API Client. &lt;br /&gt;
&lt;br /&gt;
Les Premiers tests du serveur:&lt;br /&gt;
&lt;br /&gt;
- On met le PC Supervision et le PC du Robucar sur le même réseau&lt;br /&gt;
&lt;br /&gt;
- On essaie de se &amp;quot;pinger&amp;quot; l'un l'autre pour vérifier la connexion entre les deux ordinateurs&lt;br /&gt;
&lt;br /&gt;
Problème rencontré:&lt;br /&gt;
Les codes du serveur et du client ne compilent pas car il manque des librairies. Nous renseignons les librairies manquantes et corrigeons les erreurs de compilation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5 ===&lt;br /&gt;
&lt;br /&gt;
Nous réorganisons les codes du serveur et du client avec l'aide de M. Redon. Le serveur et l'API Client ne fonctionne actuellement pas.&lt;br /&gt;
Afin d'accéder aux données de la DSPACE, il nous faut utiliser un Parser, programmé par un doctorant ayant travaillé sur le Robucar auparavant. Ce parser prend en paramètre les noms des&lt;br /&gt;
variables dans le programme Simulink et nous renvoie leur nom système correspondant, exploitable en C++. Pour cela, il faut indiquer au parser le chemin (path) et le nom exact des variables dans Simulink.&lt;br /&gt;
Dans le serveur UDP, on récupère donc grâce à la librairie Clib les valeurs de la vitesse et l'angle de braquage des roues du Robucar.&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
Le serveur UDP est fonctionnel. Les échanges de paquets entre les deux PC connectés se font rapidement. Grâce à un compteur dans le programme du Serveur, on constate que beaucoup de paquets&lt;br /&gt;
sont perdus mais ceci ne devrait pas poser trop de problèmes dans la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
&lt;br /&gt;
On débute la programmation de la seconde API permettant d'envoyer des données à la simulation. Pour ce faire, on doit prendre en main l'écriture sur les EXPORT CHANNELS. &lt;br /&gt;
En effet, ils permettent d'échanger des informations entre les différentes API. Ici, on cherche à échanger des données entre cette API et l'API ModelHandler qui pilote le modèle&lt;br /&gt;
(Robucar dans la simulation). On va donc renseigner les cases mémoires de la vitesse et de l'angle de braquage des roues dans lesquelles Modelhandler lis ces informations pour les&lt;br /&gt;
envoyer sur le modèle de la simulation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
&lt;br /&gt;
On continue la programmation de l'API elle est terminée rapidement. On réalise les premiers tests de l'API dans Scaner Studio. Pour ce faire, on charge notre terrain (parking de Polytech Lille),&lt;br /&gt;
on ajoute un scénario qui dans notre cas est l'ajout d'un véhicule de type Advanced piloté par Modelhandler. On ajoute ensuite une API en utilisant le fichier .exe généré par notre projet sur Visual Studio.&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
&lt;br /&gt;
- Problème dans les héritages des dépendances supplémentaires du projet dans Microsoft Visual Studio: on doit ajouter certaines librairies supplémentaires &lt;br /&gt;
&lt;br /&gt;
- l'API bloque la simulation bien qu'elle compile correctement indépendamment de la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
&lt;br /&gt;
L'API envoyant des données fixes à SCANeR Studio est fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résolus sont :&lt;br /&gt;
&lt;br /&gt;
- Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double)&lt;br /&gt;
&lt;br /&gt;
- Il est nécessaire de démarrer le moteur en fixant la variable &amp;quot;IgnitionKey&amp;quot; à 3 ce qui correspond à moteur en marche (Engine Start)&lt;br /&gt;
&lt;br /&gt;
- Il est préférable d'écrire sur la variable &amp;quot;TimeOfUpdate&amp;quot; pour &amp;quot;synchroniser&amp;quot; l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz&lt;br /&gt;
&lt;br /&gt;
- On mettra également la boîte de vitesse à 1 (GearBox)&lt;br /&gt;
&lt;br /&gt;
Nous commençons à fusionner l'API client et cette API.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 10===&lt;br /&gt;
&lt;br /&gt;
Les deux API sont fusionnées et nous commençons les tests de notre nouvelle API. Nous l'ajoutons à SCANeR et celle-ci devient rapidement fonctionnelle. Cependant, nous rencontrons des problèmes avec la connexion WIFI qui n'est pas fiable et qui coupe très souvent. En effet, nous avons dans un premier temps créé un réseau ad hoc. Ce type de réseau est facile et rapide à mettre en place mais sa fiabilité reste limitée. Il y a des pertes de données et de connexion assez fréquentes. De plus, La bande passante est limitée. Un problème subsiste donc, le temps de latence entre l'envoi des consignes et l'application de celles-ci au modèle de SCANeR Studio est très important. En d'autres mots, les déplacements du Robucar ne sont pas fiables sur la simulation. Nous avons donc poursuivi les tests en connectant le Robucar et le PC Supervision par Ethernet. Cependant, le cahier des charges nous impose une communication WIFI. Nous nous sommes procuré un routeur que nous avons configuré pour établir une connexion entre les deux appareils. &lt;br /&gt;
Après une nouvelle phase de tests, nous constatons que l'angle de braquage des roues dans la simulation n'est pas correct. On multipliera la consigne reçue par un coefficient pour ajuster la valeur car l'angle de consigne doit être en radian alors que le cockpit envoie un entier autour de 2600. Ces réglages, nous obtenons un résultats satisfaisant en terme de rapidité de réponse de la simulation par rapport au véhicule réel.&lt;br /&gt;
Par manque de temps, le parking de Polytech Lille utilisé pour jouer la simulation restera d'une apparence des plus basiques.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11096</id>
		<title>Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11096"/>
				<updated>2014-04-10T07:26:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique, nous allons réaliser un projet permettant de piloter et surveiller&lt;br /&gt;
un véhicule autonome à travers un cockpit de conduite. Ce projet sera encadré par Rochdi MERZOUKI et Xavier REDON.&lt;br /&gt;
&lt;br /&gt;
'''Résumé du projet:'''&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet InTraDE, transport autonome du fret, nous souhaitons relier le cockpit de conduite de la salle C002 à un véhicule mobile RobuCar.&lt;br /&gt;
Pour cela, le cockpit qui fonctionne sous le simulateur de dynamique du véhicule SCANeR Studio, communiquera directement via le réseau WiFi avec un véhicule autonome Robucar. &lt;br /&gt;
Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio. Ensuite, nous intégrerons à ce terrain un véhicule Robucar déjà modélisé. &lt;br /&gt;
Nous élaborerons alors un scénario dans SCANeR mettant en scène plusieurs véhicules, pilotés automatiquement par SCANeR et le Robucar, piloté par une API (Application Programming Interface)&lt;br /&gt;
sur le PC supervision. L'objectif de ce projet est de récupérer, par le biais d'une première API, des consignes de vitesse et d'angle de braquage des roues imposées au Robucar (par le biais d'un programme MATLAB déjà opérationnel) et&lt;br /&gt;
de les envoyer au PC Supervision où ils seront récupérées par une seconde API. Celle-ci prendra en charge l'acheminement de ces données vers le cockpit et la simulation sur les channels adéquates pour que l'API (ModelHandler) qui contrôle le véhicule simulé prenne en compte ces consignes et les applique au modèle dynamique. De ce fait, nous verrons évoluer en temps réel le Robucar dans la simulation et simultanément,&lt;br /&gt;
le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements du volant dans le cockpit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pour aller plus loin'''&lt;br /&gt;
&lt;br /&gt;
On pourra également télé-opérer le véhicule réel à tout moment, c'est à dire le piloter via le cockpit. La manipulation pourra éventuellement être réalisée avec deux Robucars.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matériel à disposition ==&lt;br /&gt;
&lt;br /&gt;
Pour notre projet nous avons à disposition:&lt;br /&gt;
&lt;br /&gt;
- un véhicule Robucar muni d'un PC intégré et d'une carte d'acquisition DSPACE (en C002)&lt;br /&gt;
&lt;br /&gt;
- les logiciels permettant sa conduite, à savoir Matlab, Simulink et Control Desk&lt;br /&gt;
&lt;br /&gt;
- un PC supervision (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Cockpit de simulation (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Accès au logiciel de simulation SCANeR Studio (en C002)&lt;br /&gt;
&lt;br /&gt;
Nous travaillerons sur le logiciel de développement Microsoft Visual Studio 2005.&lt;br /&gt;
&lt;br /&gt;
== Définition des outils à disposition ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:scaner.png|370px|thumb|right|Logiciel de simulation Temps Réel SCANeR Studio]]&lt;br /&gt;
&lt;br /&gt;
===SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou de contrôle d'un véhicule (voiture, poids lourd, cycliste, piéton). &lt;br /&gt;
Il permet la représentation d'un environnement, modélisé en 3D par le logiciel, auquel un ou plusieurs véhicules sont intégrés. &lt;br /&gt;
Les véhicules simulés sont de différents types et on s'intéressera pour notre application aux véhicules &amp;quot;simples&amp;quot; et &amp;quot;Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Selon leur type, les véhicules sont contrôlés par différentes API (Application Programming Interface) dans SCANeR Studio:&lt;br /&gt;
&lt;br /&gt;
- automatiquement par la simulation : API TRAFFIC. C'est le cas des véhicules de type simples.&lt;br /&gt;
&lt;br /&gt;
- à l'aide d'un élément extérieur tel qu'un cockpit de simulation ou un véhicule réel : API Modelhandler. C'est le cas des véhicule de type Advanced.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une simulation, il faut un terrain et un scenario. C'est dans le mode scenario que nous choisissons les véhicules à mettre en place dans la simulation. Ici, nous modéliserons le Parking de Polytech Lille puis nous y intégrerons le Robucar (de type véhicule &amp;quot;Advanced&amp;quot;) et éventuellement des véhicules simples. Nous choisissons également les API qui seront actives. Ici, les API indispensables sont Modelhandler et l'API que nous avons développé pour lire les consignes envoyées par le serveur et les appliquer dans la simulation. Les deux API vont s'échanger des données par le biais de canaux : les Export Channels. Notre API enverra donc une consigne de vitesse et d'angle de braquage des roues sur des Export Channels définis précisément afin que ModelHandler puissent les informations.&lt;br /&gt;
&lt;br /&gt;
===Le véhicule ROBUCAR===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robucar.jpg|350px|thumb|right|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
Le Robucar est un véhicule automatique &amp;quot;intelligent&amp;quot;, autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directionnelles pilotables séparément. &lt;br /&gt;
Il y a donc deux paramètres de commande pour chaque roue : l'orientation et la vitesse de rotation). Le véhicule est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données sur d'ordinateur intégré est rendu possible par la librairie CLIB. Celle-ci permet, en effet, de récupérer les données acquise par la DSPACE.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de notre projet, nous considérons que seules les roues avants du véhicule sont directionnelles. Nous appliquerons donc la même consigne de vitesse et de braquage aux deux roues avant.&lt;br /&gt;
&lt;br /&gt;
===Création d'un Serveur UDP===&lt;br /&gt;
&lt;br /&gt;
Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque Windows Sockets 2 (« Winsock2 »). &lt;br /&gt;
Le RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme correspondant à celui sur MATLAB. Une interface apparaît et nous pouvons alors piloter le véhicule. Lors de la conduite, des valeurs de consignes pour la vitesse moyenne et l’angle de braquage des roues sont donc récupérées dans l’API Serveur grâce à la bibliothèque « clib32 ». Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant une consigne de vitesse et de braquage.&lt;br /&gt;
&lt;br /&gt;
==Journal de bord==&lt;br /&gt;
&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
[[Fichier:Parking.png|300px|thumb|right|Parking Polytech Lille modélisé]]&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. &lt;br /&gt;
De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène un Robucar qui est de type &amp;quot;vehicle Advanced&amp;quot; &lt;br /&gt;
et plusieurs véhicules de type &amp;quot;vehicle simple&amp;quot; qui seront pilotés automatiquement par le logiciel. Le Robucar est piloté par l'API ModelHandler et nous pouvons donc dès à présent tester la fonctionnalité&lt;br /&gt;
de notre terrain.&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène, dans un premier temps, uniquement des véhicules de type &amp;quot;vehicle simple&amp;quot;. Ces véhicules sont pilotés automatiquement par le logiciel, ce qui nous permet de nous concentrer sur notre terrain. Nous pouvons ainsi dès à présent tester sa fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Résultats des simulations sur le terrain:&lt;br /&gt;
&lt;br /&gt;
- Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal&lt;br /&gt;
&lt;br /&gt;
- Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.&lt;br /&gt;
&lt;br /&gt;
Les virages étaient modélisés en &amp;quot;Polyline&amp;quot; ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples.&lt;br /&gt;
Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
La prochaine étape est la conception de deux API: un serveur UDP qui sera lancé sur la Robucar et un client, lancé sur le PC de supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. On décide de réaliser une API simple qui affiche la vitesse d'un véhicule de type simple. On débute alors la conception de cette API.&lt;br /&gt;
&lt;br /&gt;
En première partie de séance, nous nous entretenons avec le doctorant Vincent Coelen pour faire un point sur les API. On évoquera entre autre les points suivants:&lt;br /&gt;
&lt;br /&gt;
- comprendre l'utilisation des canaux (EXPORT CHANNEL)&lt;br /&gt;
&lt;br /&gt;
- mettre à disposition la documentation nécessaire pour les utiliser &lt;br /&gt;
&lt;br /&gt;
- comment transformer un projet C++ en une API qui évoluera dans le logiciel&lt;br /&gt;
&lt;br /&gt;
Nous nous entretenons également avec M. Merzouki pour définir plus précisément le cahier des charges. Les points abordés sont les suivants:&lt;br /&gt;
&lt;br /&gt;
- Programmation d'un Serveur UDP sur l'ordinateur intégré au Robucar pour communiquer en WIFI avec une API Client&lt;br /&gt;
&lt;br /&gt;
- Programmation d'une API Client à implanter sur le logiciel SCANeR du PC Supervision&lt;br /&gt;
&lt;br /&gt;
- Conception d'une seconde API permettant d'envoyer des consignes de vitesse et de braquage dans la simulation&lt;br /&gt;
&lt;br /&gt;
- Fusion de ces deux dernières API&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous commençons à prendre en main l'utilisation des sockets en C++ pour le serveur UDP et l'API Client. Nous utiliserons les sources suivantes:&lt;br /&gt;
&lt;br /&gt;
[http://www.frameip.com/entete-udp/ Frampeip: Serveur en mode non connecté]&lt;br /&gt;
&lt;br /&gt;
[http://rex.plil.fr/Enseignement/Reseau/Reseau.IMA4sc/reseau.html Cours IMASC : Programmation Réseau]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html Linux: Tutoriel sur les Serveurs]&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
Nous commençons à nous focaliser sur le fonctionnement du Robucar. Vincent nous explique comment marche la DSPACE et comment utiliser un programme MATLAB pour récupérer des données du véhicule &lt;br /&gt;
tels que la vitesse, l'angle de braquage, la position de la boîte de vitesse etc. On découvre aussi le fonctionnement du Cockpit en utilisant une API déjà fonctionnelle permettant d'envoyer des commandes &lt;br /&gt;
au cockpit depuis la simulation. Cette API est implantée sur le logiciel SCANeR du PC Supervision.&lt;br /&gt;
Nous continuons la programmation du serveur UDP de l'API Client. &lt;br /&gt;
&lt;br /&gt;
Les Premiers tests du serveur:&lt;br /&gt;
&lt;br /&gt;
- On met le PC Supervision et le PC du Robucar sur le même réseau&lt;br /&gt;
&lt;br /&gt;
- On essaie de se &amp;quot;pinger&amp;quot; l'un l'autre pour vérifier la connexion entre les deux ordinateurs&lt;br /&gt;
&lt;br /&gt;
Problème rencontré:&lt;br /&gt;
Les codes du serveur et du client ne compilent pas car il manque des librairies. Nous renseignons les librairies manquantes et corrigeons les erreurs de compilation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5 ===&lt;br /&gt;
&lt;br /&gt;
Nous réorganisons les codes du serveur et du client avec l'aide de M. Redon. Le serveur et l'API Client ne fonctionne actuellement pas.&lt;br /&gt;
Afin d'accéder aux données de la DSPACE, il nous faut utiliser un Parser, programmé par un doctorant ayant travaillé sur le Robucar auparavant. Ce parser prend en paramètre les noms des&lt;br /&gt;
variables dans le programme Simulink et nous renvoie leur nom système correspondant, exploitable en C++. Pour cela, il faut indiquer au parser le chemin (path) et le nom exact des variables dans Simulink.&lt;br /&gt;
Dans le serveur UDP, on récupère donc grâce à la librairie Clib les valeurs de la vitesse et l'angle de braquage des roues du Robucar. &lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
Le serveur UDP est fonctionnel. Les échanges de paquets entre les deux PC connectés se font rapidement. Grâce à un compteur dans le programme du Serveur, on constate que beaucoup de paquets&lt;br /&gt;
sont perdus mais ceci ne devrait pas poser trop de problèmes dans la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
&lt;br /&gt;
On débute la programmation de la seconde API permettant d'envoyer des données à la simulation. Pour ce faire, on doit prendre en main l'écriture sur les EXPORT CHANNELS. &lt;br /&gt;
En effet, ils permettent d'échanger des informations entre les différentes API. Ici, on cherche à échanger des données entre cette API et l'API ModelHandler qui pilote le modèle&lt;br /&gt;
(Robucar dans la simulation). On va donc renseigner les cases mémoires de la vitesse et de l'angle de braquage des roues dans lesquelles Modelhandler lis ces informations pour les&lt;br /&gt;
envoyer sur le modèle de la simulation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
&lt;br /&gt;
On continue la programmation de l'API elle est terminée rapidement. On réalise les premiers tests de l'API dans Scaner Studio. Pour ce faire, on charge notre terrain (parking de Polytech Lille),&lt;br /&gt;
on ajoute un scénario qui dans notre cas est l'ajout d'un véhicule de type Advanced piloté par Modelhandler. On ajoute ensuite une API en utilisant le fichier .exe généré par notre projet sur Visual Studio.&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
&lt;br /&gt;
- Problème dans les héritages des dépendances supplémentaires du projet dans Microsoft Visual Studio: on doit ajouter certaines librairies supplémentaires &lt;br /&gt;
&lt;br /&gt;
- l'API bloque la simulation bien qu'elle compile correctement indépendamment de la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
&lt;br /&gt;
L'API envoyant des données fixes à SCANeR Studio est fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résolus sont :&lt;br /&gt;
&lt;br /&gt;
- Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double)&lt;br /&gt;
&lt;br /&gt;
- Il est nécessaire de démarrer le moteur en fixant la variable &amp;quot;IgnitionKey&amp;quot; à 3 ce qui correspond à moteur en marche (Engine Start)&lt;br /&gt;
&lt;br /&gt;
- Il est préférable d'écrire sur la variable &amp;quot;TimeOfUpdate&amp;quot; pour &amp;quot;synchroniser&amp;quot; l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz&lt;br /&gt;
&lt;br /&gt;
- On mettra également la boîte de vitesse à 1 (GearBox)&lt;br /&gt;
&lt;br /&gt;
Nous commençons à fusionner l'API client et cette API.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 10===&lt;br /&gt;
&lt;br /&gt;
Les deux API sont fusionnées et nous commençons les tests de notre nouvelle API. Nous l'ajoutons à SCANeR et celle-ci devient rapidement fonctionnelle. Cependant, nous rencontrons des problèmes avec la connexion WIFI qui n'est pas fiable et qui coupe très souvent. En effet, nous avons dans un premier temps créé un réseau ad hoc. Ce type de réseau est facile et rapide à mettre en place mais sa fiabilité reste limitée. Il y a des pertes de données et de connexion assez fréquentes. De plus, La bande passante est limitée. Un problème subsiste donc, le temps de latence entre l'envoi des consignes et l'application de celles-ci au modèle de SCANeR Studio est très important. En d'autres mots, les déplacements du Robucar ne sont pas fiables sur la simulation. Nous avons donc poursuivi les tests en connectant le Robucar et le PC Supervision par Ethernet. Cependant, le cahier des charges nous impose une communication WIFI. Nous nous sommes procuré un routeur que nous avons configuré pour établir une connexion entre les deux appareils. &lt;br /&gt;
Après une nouvelle phase de tests, nous constatons que l'angle de braquage des roues dans la simulation n'est pas correct. On multipliera la consigne reçue par un coefficient pour ajuster la valeur car l'angle de consigne doit être en radian alors que le cockpit envoie un entier autour de 2600. Ces réglages, nous obtenons un résultats satisfaisant en terme de rapidité de réponse de la simulation par rapport au véhicule réel.&lt;br /&gt;
Par manque de temps, le parking de Polytech Lille utilisé pour jouer la simulation restera d'une apparence des plus basiques.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11095</id>
		<title>Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11095"/>
				<updated>2014-04-10T07:22:41Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Semaine 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique, nous allons réaliser un projet permettant de piloter et surveiller&lt;br /&gt;
un véhicule autonome à travers un cockpit de conduite. Ce projet sera encadré par Rochdi MERZOUKI et Xavier REDON.&lt;br /&gt;
&lt;br /&gt;
'''Résumé du projet:'''&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet InTraDE, transport autonome du fret, nous souhaitons relier le cockpit de conduite de la salle C002 à un véhicule mobile RobuCar.&lt;br /&gt;
Pour cela, le cockpit qui fonctionne sous le simulateur de dynamique du véhicule SCANeR Studio, communiquera directement via le réseau WiFi avec un véhicule autonome Robucar. &lt;br /&gt;
Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio. Ensuite, nous intégrerons à ce terrain un véhicule Robucar déjà modélisé. &lt;br /&gt;
Nous élaborerons alors un scénario dans SCANeR mettant en scène plusieurs véhicules, pilotés automatiquement par SCANeR et le Robucar, piloté par une API (Application Programming Interface)&lt;br /&gt;
sur le PC supervision. L'objectif de ce projet est de récupérer, par le biais d'une première API, des consignes de vitesse et d'angle de braquage des roues imposées au Robucar (par le biais d'un programme MATLAB déjà opérationnel) et&lt;br /&gt;
de les envoyer au PC Supervision où ils seront récupérées par une seconde API. Celle-ci prendra en charge l'acheminement de ces données vers le cockpit et la simulation sur les channels adéquates pour que l'API (ModelHandler) qui contrôle le véhicule simulé prenne en compte ces consignes et les applique au modèle dynamique. De ce fait, nous verrons évoluer en temps réel le Robucar dans la simulation et simultanément,&lt;br /&gt;
le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements du volant dans le cockpit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pour aller plus loin'''&lt;br /&gt;
&lt;br /&gt;
On pourra également télé-opérer le véhicule réel à tout moment, c'est à dire le piloter via le cockpit. La manipulation pourra éventuellement être réalisée avec deux Robucars.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matériel à disposition ==&lt;br /&gt;
&lt;br /&gt;
Pour notre projet nous avons à disposition:&lt;br /&gt;
&lt;br /&gt;
- un véhicule Robucar muni d'un PC intégré et d'une carte d'acquisition DSPACE (en C002)&lt;br /&gt;
&lt;br /&gt;
- les logiciels permettant sa conduite, à savoir Matlab, Simulink et Control Desk&lt;br /&gt;
&lt;br /&gt;
- un PC supervision (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Cockpit de simulation (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Accès au logiciel de simulation SCANeR Studio (en C002)&lt;br /&gt;
&lt;br /&gt;
Nous travaillerons sur le logiciel de développement Microsoft Visual Studio 2005.&lt;br /&gt;
&lt;br /&gt;
== Définition des outils à disposition ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:scaner.png|370px|thumb|right|Logiciel de simulation Temps Réel SCANeR Studio]]&lt;br /&gt;
&lt;br /&gt;
===SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou de contrôle d'un véhicule (voiture, poids lourd, cycliste, piéton). &lt;br /&gt;
Il permet la représentation d'un environnement, modélisé en 3D par le logiciel, auquel un ou plusieurs véhicules sont intégrés. &lt;br /&gt;
Les véhicules simulés sont de différents types et on s'intéressera pour notre application aux véhicules &amp;quot;simples&amp;quot; et &amp;quot;Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Selon leur type, les véhicules sont contrôlés par différentes API (Application Programming Interface) dans SCANeR Studio:&lt;br /&gt;
&lt;br /&gt;
- automatiquement par la simulation : API TRAFFIC. C'est le cas des véhicules de type simples.&lt;br /&gt;
&lt;br /&gt;
- à l'aide d'un élément extérieur tel qu'un cockpit de simulation ou un véhicule réel : API Modelhandler. C'est le cas des véhicule de type Advanced.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une simulation, il faut un terrain et un scenario. C'est dans le mode scenario que nous choisissons les véhicules à mettre en place dans la simulation. Ici, nous modéliserons le Parking de Polytech Lille puis nous y intégrerons le Robucar (de type véhicule &amp;quot;Advanced&amp;quot;) et éventuellement des véhicules simples. Nous choisissons également les API qui seront actives. Ici, les API indispensables sont Modelhandler et l'API que nous avons développé pour lire les consignes envoyées par le serveur et les appliquer dans la simulation. Les deux API vont s'échanger des données par le biais de canaux : les Export Channels. Notre API enverra donc une consigne de vitesse et d'angle de braquage des roues sur des Export Channels définis précisément afin que ModelHandler puissent les informations.&lt;br /&gt;
&lt;br /&gt;
===Le véhicule ROBUCAR===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robucar.jpg|350px|thumb|right|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
Le Robucar est un véhicule automatique &amp;quot;intelligent&amp;quot;, autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directionnelles pilotables séparément. &lt;br /&gt;
Il y a donc deux paramètres de commande pour chaque roue : l'orientation et la vitesse de rotation). Le véhicule est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données sur d'ordinateur intégré est rendu possible par la librairie CLIB. Celle-ci permet, en effet, de récupérer les données acquise par la DSPACE.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de notre projet, nous considérons que seules les roues avants du véhicule sont directionnelles. Nous appliquerons donc la même consigne de vitesse et de braquage aux deux roues avant.&lt;br /&gt;
&lt;br /&gt;
===Création d'un Serveur UDP===&lt;br /&gt;
&lt;br /&gt;
Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque Windows Sockets 2 (« Winsock2 »). &lt;br /&gt;
Le RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme correspondant à celui sur MATLAB. Une interface apparaît et nous pouvons alors piloter le véhicule. Lors de la conduite, des valeurs de consignes pour la vitesse moyenne et l’angle de braquage des roues sont donc récupérées dans l’API Serveur grâce à la bibliothèque « clib32 ». Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant une consigne de vitesse et de braquage.&lt;br /&gt;
&lt;br /&gt;
==Journal de bord==&lt;br /&gt;
&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
[[Fichier:Parking.png|300px|thumb|right|Parking Polytech Lille modélisé]]&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. &lt;br /&gt;
De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène un Robucar qui est de type &amp;quot;vehicle Advanced&amp;quot; &lt;br /&gt;
et plusieurs véhicules de type &amp;quot;vehicle simple&amp;quot; qui seront pilotés automatiquement par le logiciel. Le Robucar est piloté par l'API ModelHandler et nous pouvons donc dès à présent tester la fonctionnalité&lt;br /&gt;
de notre terrain.&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène, dans un premier temps, uniquement des véhicules de type &amp;quot;vehicle simple&amp;quot;. Ces véhicules sont pilotés automatiquement par le logiciel, ce qui nous permet de nous concentrer sur notre terrain. Nous pouvons ainsi dès à présent tester sa fonctionnalité.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Résultats des simulations sur le terrain:&lt;br /&gt;
&lt;br /&gt;
- Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal&lt;br /&gt;
&lt;br /&gt;
- Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.&lt;br /&gt;
&lt;br /&gt;
Les virages étaient modélisés en &amp;quot;Polyline&amp;quot; ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples.&lt;br /&gt;
Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
La prochaine étape est la conception de deux API: un serveur UDP qui sera lancé sur la Robucar et un client, lancé sur le PC de supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. On décide de réaliser une API simple qui affiche la vitesse d'un véhicule de type simple. On débute alors la conception de cette API.&lt;br /&gt;
&lt;br /&gt;
En première partie de séance, nous nous entretenons avec le doctorant Vincent XX pour faire un point sur les API. On évoquera entre autre les points suivants:&lt;br /&gt;
&lt;br /&gt;
- comprendre l'utilisation des canaux (EXPORT CHANNEL)&lt;br /&gt;
&lt;br /&gt;
- mettre à disposition la documentation nécessaire pour les utiliser &lt;br /&gt;
&lt;br /&gt;
- comment transformer un projet C++ en une API qui évoluera dans le logiciel&lt;br /&gt;
&lt;br /&gt;
Nous entretiendrons également avec M. Merzouki pour définir plus précisément le cahier des charges. Les points abordés sont les suivants:&lt;br /&gt;
&lt;br /&gt;
- Programmation d'un Serveur UDP sur l'ordinateur intégré au Robucar pour communiquer en WIFI avec une API Client&lt;br /&gt;
&lt;br /&gt;
- Programmation d'une API Client à implanter sur le logiciel SCANeR du PC Supervision&lt;br /&gt;
&lt;br /&gt;
- Conception d'une seconde API permettant d'envoyer des consignes de vitesse et de braquage dans la simulation&lt;br /&gt;
&lt;br /&gt;
- Fusion de ces deux API&lt;br /&gt;
&lt;br /&gt;
En seconde partie de séance, nous commençons à prendre en main l'utilisation des sockets en C++ pour le serveur UDP et l'API Client. Nous utiliserons les sources suivantes:&lt;br /&gt;
&lt;br /&gt;
[http://www.frameip.com/entete-udp/ Frampeip: Serveur en mode non connecté]&lt;br /&gt;
&lt;br /&gt;
[http://rex.plil.fr/Enseignement/Reseau/Reseau.IMA4sc/reseau.html Cours IMASC : Programmation Réseau]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html Linux: Tutoriel sur les Serveurs]&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
Nous commençons à nous focaliser sur le fonctionnement du Robucar. Vincent nous explique comment marche la DSPACE et comment utiliser un programme MATLAB pour récupérer des données du véhicule &lt;br /&gt;
tels que la vitesse, l'angle de braquage, la position de la boîte de vitesse etc. On découvre aussi le fonctionnement du Cockpit en utilisant une API déjà fonctionnelle permettant d'envoyer des commandes &lt;br /&gt;
au cockpit depuis la simulation. Cette API est implantée sur le logiciel SCANeR du PC Supervision.&lt;br /&gt;
Nous continuons la programmation du serveur UDP de l'API Client. &lt;br /&gt;
&lt;br /&gt;
Les Premiers tests du serveur:&lt;br /&gt;
&lt;br /&gt;
- On met le PC Supervision et le PC du Robucar sur le même réseau&lt;br /&gt;
&lt;br /&gt;
- On essaie de se &amp;quot;pinger&amp;quot; l'un l'autre pour vérifier la connexion entre les deux ordinateurs&lt;br /&gt;
&lt;br /&gt;
Problème rencontré:&lt;br /&gt;
Les codes du serveur et du client ne compilent pas car il manque des librairies. Nous renseignons les librairies manquantes et corrigeons les erreurs de compilation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5 ===&lt;br /&gt;
&lt;br /&gt;
Nous réorganisons les codes du serveur et du client avec l'aide de M. Redon. Le serveur et l'API Client ne fonctionne actuellement pas.&lt;br /&gt;
Afin d'accéder aux données de la DSPACE, il nous faut utiliser un Parser, programmé par un doctorant ayant travaillé sur le Robucar auparavant. Ce parser prend en paramètre les noms des&lt;br /&gt;
variables dans le programme Simulink et nous renvoie leur nom système correspondant, exploitable en C++. Pour cela, il faut indiquer au parser le chemin (path) et le nom exact des variables dans Simulink.&lt;br /&gt;
Dans le serveur UDP, on récupère donc grâce à la librairie Clib les valeurs de la vitesse et l'angle de braquage des roues du Robucar. &lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
Le serveur UDP est fonctionnel. Les échanges de paquets entre les deux PC connectés se font rapidement. Grâce à un compteur dans le programme du Serveur, on constate que beaucoup de paquets&lt;br /&gt;
sont perdus mais ceci ne devrait pas poser trop de problèmes dans la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
&lt;br /&gt;
On débute la programmation de la seconde API permettant d'envoyer des données à la simulation. Pour ce faire, on doit prendre en main l'écriture sur les EXPORT CHANNELS. &lt;br /&gt;
En effet, ils permettent d'échanger des informations entre les différentes API. Ici, on cherche à échanger des données entre cette API et l'API ModelHandler qui pilote le modèle&lt;br /&gt;
(Robucar dans la simulation). On va donc renseigner les cases mémoires de la vitesse et de l'angle de braquage des roues dans lesquelles Modelhandler lis ces informations pour les&lt;br /&gt;
envoyer sur le modèle de la simulation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
&lt;br /&gt;
On continue la programmation de l'API elle est terminée rapidement. On réalise les premiers tests de l'API dans Scaner Studio. Pour ce faire, on charge notre terrain (parking de Polytech Lille),&lt;br /&gt;
on ajoute un scénario qui dans notre cas est l'ajout d'un véhicule de type Advanced piloté par Modelhandler. On ajoute ensuite une API en utilisant le fichier .exe généré par notre projet sur Visual Studio.&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
&lt;br /&gt;
- Problème dans les héritages des dépendances supplémentaires du projet dans Microsoft Visual Studio: on doit ajouter certaines librairies supplémentaires &lt;br /&gt;
&lt;br /&gt;
- l'API bloque la simulation bien qu'elle compile correctement indépendamment de la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
&lt;br /&gt;
L'API envoyant des données fixes à SCANeR Studio est fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résolus sont :&lt;br /&gt;
&lt;br /&gt;
- Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double)&lt;br /&gt;
&lt;br /&gt;
- Il est nécessaire de démarrer le moteur en fixant la variable &amp;quot;IgnitionKey&amp;quot; à 3 ce qui correspond à moteur en marche (Engine Start)&lt;br /&gt;
&lt;br /&gt;
- Il est préférable d'écrire sur la variable &amp;quot;TimeOfUpdate&amp;quot; pour &amp;quot;synchroniser&amp;quot; l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz&lt;br /&gt;
&lt;br /&gt;
- On mettra également la boîte de vitesse à 1 (GearBox)&lt;br /&gt;
&lt;br /&gt;
Nous commençons à fusionner l'API client et cette API.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 10===&lt;br /&gt;
&lt;br /&gt;
Les deux API sont fusionnées et nous commençons les tests de notre nouvelle API. Nous l'ajoutons à SCANeR et celle-ci devient rapidement fonctionnelle. Cependant, nous rencontrons des problèmes avec la connexion WIFI qui n'est pas fiable et qui coupe très souvent. En effet, nous avons dans un premier temps créé un réseau ad hoc. Ce type de réseau est facile et rapide à mettre en place mais sa fiabilité reste limitée. Il y a des pertes de données et de connexion assez fréquentes. De plus, La bande passante est limitée. Un problème subsiste donc, le temps de latence entre l'envoi des consignes et l'application de celles-ci au modèle de SCANeR Studio est très important. En d'autres mots, les déplacements du Robucar ne sont pas fiables sur la simulation. Nous avons donc poursuivi les tests en connectant le Robucar et le PC Supervision par Ethernet. Cependant, le cahier des charges nous impose une communication WIFI. Nous nous sommes procuré un routeur que nous avons configuré pour établir une connexion entre les deux appareils. &lt;br /&gt;
Après une nouvelle phase de tests, nous constatons que l'angle de braquage des roues dans la simulation n'est pas correct. On multipliera la consigne reçue par un coefficient pour ajuster la valeur car l'angle de consigne doit être en radian alors que le cockpit envoie un entier autour de 2600. Ces réglages, nous obtenons un résultats satisfaisant en terme de rapidité de réponse de la simulation par rapport au véhicule réel.&lt;br /&gt;
Par manque de temps, le parking de Polytech Lille utilisé pour jouer la simulation restera d'une apparence des plus basiques.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11094</id>
		<title>Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11094"/>
				<updated>2014-04-10T07:21:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : /* Semaine 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique, nous allons réaliser un projet permettant de piloter et surveiller&lt;br /&gt;
un véhicule autonome à travers un cockpit de conduite. Ce projet sera encadré par Rochdi MERZOUKI et Xavier REDON.&lt;br /&gt;
&lt;br /&gt;
'''Résumé du projet:'''&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet InTraDE, transport autonome du fret, nous souhaitons relier le cockpit de conduite de la salle C002 à un véhicule mobile RobuCar.&lt;br /&gt;
Pour cela, le cockpit qui fonctionne sous le simulateur de dynamique du véhicule SCANeR Studio, communiquera directement via le réseau WiFi avec un véhicule autonome Robucar. &lt;br /&gt;
Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio. Ensuite, nous intégrerons à ce terrain un véhicule Robucar déjà modélisé. &lt;br /&gt;
Nous élaborerons alors un scénario dans SCANeR mettant en scène plusieurs véhicules, pilotés automatiquement par SCANeR et le Robucar, piloté par une API (Application Programming Interface)&lt;br /&gt;
sur le PC supervision. L'objectif de ce projet est de récupérer, par le biais d'une première API, des consignes de vitesse et d'angle de braquage des roues imposées au Robucar (par le biais d'un programme MATLAB déjà opérationnel) et&lt;br /&gt;
de les envoyer au PC Supervision où ils seront récupérées par une seconde API. Celle-ci prendra en charge l'acheminement de ces données vers le cockpit et la simulation sur les channels adéquates pour que l'API (ModelHandler) qui contrôle le véhicule simulé prenne en compte ces consignes et les applique au modèle dynamique. De ce fait, nous verrons évoluer en temps réel le Robucar dans la simulation et simultanément,&lt;br /&gt;
le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements du volant dans le cockpit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pour aller plus loin'''&lt;br /&gt;
&lt;br /&gt;
On pourra également télé-opérer le véhicule réel à tout moment, c'est à dire le piloter via le cockpit. La manipulation pourra éventuellement être réalisée avec deux Robucars.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matériel à disposition ==&lt;br /&gt;
&lt;br /&gt;
Pour notre projet nous avons à disposition:&lt;br /&gt;
&lt;br /&gt;
- un véhicule Robucar muni d'un PC intégré et d'une carte d'acquisition DSPACE (en C002)&lt;br /&gt;
&lt;br /&gt;
- les logiciels permettant sa conduite, à savoir Matlab, Simulink et Control Desk&lt;br /&gt;
&lt;br /&gt;
- un PC supervision (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Cockpit de simulation (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Accès au logiciel de simulation SCANeR Studio (en C002)&lt;br /&gt;
&lt;br /&gt;
Nous travaillerons sur le logiciel de développement Microsoft Visual Studio 2005.&lt;br /&gt;
&lt;br /&gt;
== Définition des outils à disposition ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:scaner.png|370px|thumb|right|Logiciel de simulation Temps Réel SCANeR Studio]]&lt;br /&gt;
&lt;br /&gt;
===SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou de contrôle d'un véhicule (voiture, poids lourd, cycliste, piéton). &lt;br /&gt;
Il permet la représentation d'un environnement, modélisé en 3D par le logiciel, auquel un ou plusieurs véhicules sont intégrés. &lt;br /&gt;
Les véhicules simulés sont de différents types et on s'intéressera pour notre application aux véhicules &amp;quot;simples&amp;quot; et &amp;quot;Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Selon leur type, les véhicules sont contrôlés par différentes API (Application Programming Interface) dans SCANeR Studio:&lt;br /&gt;
&lt;br /&gt;
- automatiquement par la simulation : API TRAFFIC. C'est le cas des véhicules de type simples.&lt;br /&gt;
&lt;br /&gt;
- à l'aide d'un élément extérieur tel qu'un cockpit de simulation ou un véhicule réel : API Modelhandler. C'est le cas des véhicule de type Advanced.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une simulation, il faut un terrain et un scenario. C'est dans le mode scenario que nous choisissons les véhicules à mettre en place dans la simulation. Ici, nous modéliserons le Parking de Polytech Lille puis nous y intégrerons le Robucar (de type véhicule &amp;quot;Advanced&amp;quot;) et éventuellement des véhicules simples. Nous choisissons également les API qui seront actives. Ici, les API indispensables sont Modelhandler et l'API que nous avons développé pour lire les consignes envoyées par le serveur et les appliquer dans la simulation. Les deux API vont s'échanger des données par le biais de canaux : les Export Channels. Notre API enverra donc une consigne de vitesse et d'angle de braquage des roues sur des Export Channels définis précisément afin que ModelHandler puissent les informations.&lt;br /&gt;
&lt;br /&gt;
===Le véhicule ROBUCAR===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robucar.jpg|350px|thumb|right|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
Le Robucar est un véhicule automatique &amp;quot;intelligent&amp;quot;, autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directionnelles pilotables séparément. &lt;br /&gt;
Il y a donc deux paramètres de commande pour chaque roue : l'orientation et la vitesse de rotation). Le véhicule est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données sur d'ordinateur intégré est rendu possible par la librairie CLIB. Celle-ci permet, en effet, de récupérer les données acquise par la DSPACE.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de notre projet, nous considérons que seules les roues avants du véhicule sont directionnelles. Nous appliquerons donc la même consigne de vitesse et de braquage aux deux roues avant.&lt;br /&gt;
&lt;br /&gt;
===Création d'un Serveur UDP===&lt;br /&gt;
&lt;br /&gt;
Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque Windows Sockets 2 (« Winsock2 »). &lt;br /&gt;
Le RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme correspondant à celui sur MATLAB. Une interface apparaît et nous pouvons alors piloter le véhicule. Lors de la conduite, des valeurs de consignes pour la vitesse moyenne et l’angle de braquage des roues sont donc récupérées dans l’API Serveur grâce à la bibliothèque « clib32 ». Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant une consigne de vitesse et de braquage.&lt;br /&gt;
&lt;br /&gt;
==Journal de bord==&lt;br /&gt;
&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
[[Fichier:Parking.png|300px|thumb|right|Parking Polytech Lille modélisé]]&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. &lt;br /&gt;
De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène un Robucar qui est de type &amp;quot;vehicle Advanced&amp;quot; &lt;br /&gt;
et plusieurs véhicules de type &amp;quot;vehicle simple&amp;quot; qui seront pilotés automatiquement par le logiciel. Le Robucar est piloté par l'API ModelHandler et nous pouvons donc dès à présent tester la fonctionnalité&lt;br /&gt;
de notre terrain.&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène, dans un premier temps, uniquement des véhicules de type &amp;quot;vehicle simple&amp;quot; qui seront pilotés automatiquement par le logiciel. Nous pouvons ainsi dès à présent tester la fonctionnalité&lt;br /&gt;
de notre terrain.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Résultats des simulations sur le terrain:&lt;br /&gt;
&lt;br /&gt;
- Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal&lt;br /&gt;
&lt;br /&gt;
- Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.&lt;br /&gt;
&lt;br /&gt;
Les virages étaient modélisés en &amp;quot;Polyline&amp;quot; ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples.&lt;br /&gt;
Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
La prochaine étape est la conception de deux API: un serveur UDP qui sera lancé sur la Robucar et un client, lancé sur le PC de supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. On décide de réaliser une API simple qui affiche la vitesse d'un véhicule de type simple. On débute alors la conception de cette API.&lt;br /&gt;
&lt;br /&gt;
En première partie de séance, nous nous entretenons avec le doctorant Vincent XX pour faire un point sur les API. On évoquera entre autre les points suivants:&lt;br /&gt;
&lt;br /&gt;
- comprendre l'utilisation des canaux (EXPORT CHANNEL)&lt;br /&gt;
&lt;br /&gt;
- mettre à disposition la documentation nécessaire pour les utiliser &lt;br /&gt;
&lt;br /&gt;
- comment transformer un projet C++ en une API qui évoluera dans le logiciel&lt;br /&gt;
&lt;br /&gt;
Nous entretiendrons également avec M. Merzouki pour définir plus précisément le cahier des charges. Les points abordés sont les suivants:&lt;br /&gt;
&lt;br /&gt;
- Programmation d'un Serveur UDP sur l'ordinateur intégré au Robucar pour communiquer en WIFI avec une API Client&lt;br /&gt;
&lt;br /&gt;
- Programmation d'une API Client à implanter sur le logiciel SCANeR du PC Supervision&lt;br /&gt;
&lt;br /&gt;
- Conception d'une seconde API permettant d'envoyer des consignes de vitesse et de braquage dans la simulation&lt;br /&gt;
&lt;br /&gt;
- Fusion de ces deux API&lt;br /&gt;
&lt;br /&gt;
En seconde partie de séance, nous commençons à prendre en main l'utilisation des sockets en C++ pour le serveur UDP et l'API Client. Nous utiliserons les sources suivantes:&lt;br /&gt;
&lt;br /&gt;
[http://www.frameip.com/entete-udp/ Frampeip: Serveur en mode non connecté]&lt;br /&gt;
&lt;br /&gt;
[http://rex.plil.fr/Enseignement/Reseau/Reseau.IMA4sc/reseau.html Cours IMASC : Programmation Réseau]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html Linux: Tutoriel sur les Serveurs]&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
Nous commençons à nous focaliser sur le fonctionnement du Robucar. Vincent nous explique comment marche la DSPACE et comment utiliser un programme MATLAB pour récupérer des données du véhicule &lt;br /&gt;
tels que la vitesse, l'angle de braquage, la position de la boîte de vitesse etc. On découvre aussi le fonctionnement du Cockpit en utilisant une API déjà fonctionnelle permettant d'envoyer des commandes &lt;br /&gt;
au cockpit depuis la simulation. Cette API est implantée sur le logiciel SCANeR du PC Supervision.&lt;br /&gt;
Nous continuons la programmation du serveur UDP de l'API Client. &lt;br /&gt;
&lt;br /&gt;
Les Premiers tests du serveur:&lt;br /&gt;
&lt;br /&gt;
- On met le PC Supervision et le PC du Robucar sur le même réseau&lt;br /&gt;
&lt;br /&gt;
- On essaie de se &amp;quot;pinger&amp;quot; l'un l'autre pour vérifier la connexion entre les deux ordinateurs&lt;br /&gt;
&lt;br /&gt;
Problème rencontré:&lt;br /&gt;
Les codes du serveur et du client ne compilent pas car il manque des librairies. Nous renseignons les librairies manquantes et corrigeons les erreurs de compilation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5 ===&lt;br /&gt;
&lt;br /&gt;
Nous réorganisons les codes du serveur et du client avec l'aide de M. Redon. Le serveur et l'API Client ne fonctionne actuellement pas.&lt;br /&gt;
Afin d'accéder aux données de la DSPACE, il nous faut utiliser un Parser, programmé par un doctorant ayant travaillé sur le Robucar auparavant. Ce parser prend en paramètre les noms des&lt;br /&gt;
variables dans le programme Simulink et nous renvoie leur nom système correspondant, exploitable en C++. Pour cela, il faut indiquer au parser le chemin (path) et le nom exact des variables dans Simulink.&lt;br /&gt;
Dans le serveur UDP, on récupère donc grâce à la librairie Clib les valeurs de la vitesse et l'angle de braquage des roues du Robucar. &lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
Le serveur UDP est fonctionnel. Les échanges de paquets entre les deux PC connectés se font rapidement. Grâce à un compteur dans le programme du Serveur, on constate que beaucoup de paquets&lt;br /&gt;
sont perdus mais ceci ne devrait pas poser trop de problèmes dans la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
&lt;br /&gt;
On débute la programmation de la seconde API permettant d'envoyer des données à la simulation. Pour ce faire, on doit prendre en main l'écriture sur les EXPORT CHANNELS. &lt;br /&gt;
En effet, ils permettent d'échanger des informations entre les différentes API. Ici, on cherche à échanger des données entre cette API et l'API ModelHandler qui pilote le modèle&lt;br /&gt;
(Robucar dans la simulation). On va donc renseigner les cases mémoires de la vitesse et de l'angle de braquage des roues dans lesquelles Modelhandler lis ces informations pour les&lt;br /&gt;
envoyer sur le modèle de la simulation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
&lt;br /&gt;
On continue la programmation de l'API elle est terminée rapidement. On réalise les premiers tests de l'API dans Scaner Studio. Pour ce faire, on charge notre terrain (parking de Polytech Lille),&lt;br /&gt;
on ajoute un scénario qui dans notre cas est l'ajout d'un véhicule de type Advanced piloté par Modelhandler. On ajoute ensuite une API en utilisant le fichier .exe généré par notre projet sur Visual Studio.&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
&lt;br /&gt;
- Problème dans les héritages des dépendances supplémentaires du projet dans Microsoft Visual Studio: on doit ajouter certaines librairies supplémentaires &lt;br /&gt;
&lt;br /&gt;
- l'API bloque la simulation bien qu'elle compile correctement indépendamment de la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
&lt;br /&gt;
L'API envoyant des données fixes à SCANeR Studio est fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résolus sont :&lt;br /&gt;
&lt;br /&gt;
- Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double)&lt;br /&gt;
&lt;br /&gt;
- Il est nécessaire de démarrer le moteur en fixant la variable &amp;quot;IgnitionKey&amp;quot; à 3 ce qui correspond à moteur en marche (Engine Start)&lt;br /&gt;
&lt;br /&gt;
- Il est préférable d'écrire sur la variable &amp;quot;TimeOfUpdate&amp;quot; pour &amp;quot;synchroniser&amp;quot; l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz&lt;br /&gt;
&lt;br /&gt;
- On mettra également la boîte de vitesse à 1 (GearBox)&lt;br /&gt;
&lt;br /&gt;
Nous commençons à fusionner l'API client et cette API.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 10===&lt;br /&gt;
&lt;br /&gt;
Les deux API sont fusionnées et nous commençons les tests de notre nouvelle API. Nous l'ajoutons à SCANeR et celle-ci devient rapidement fonctionnelle. Cependant, nous rencontrons des problèmes avec la connexion WIFI qui n'est pas fiable et qui coupe très souvent. En effet, nous avons dans un premier temps créé un réseau ad hoc. Ce type de réseau est facile et rapide à mettre en place mais sa fiabilité reste limitée. Il y a des pertes de données et de connexion assez fréquentes. De plus, La bande passante est limitée. Un problème subsiste donc, le temps de latence entre l'envoi des consignes et l'application de celles-ci au modèle de SCANeR Studio est très important. En d'autres mots, les déplacements du Robucar ne sont pas fiables sur la simulation. Nous avons donc poursuivi les tests en connectant le Robucar et le PC Supervision par Ethernet. Cependant, le cahier des charges nous impose une communication WIFI. Nous nous sommes procuré un routeur que nous avons configuré pour établir une connexion entre les deux appareils. &lt;br /&gt;
Après une nouvelle phase de tests, nous constatons que l'angle de braquage des roues dans la simulation n'est pas correct. On multipliera la consigne reçue par un coefficient pour ajuster la valeur car l'angle de consigne doit être en radian alors que le cockpit envoie un entier autour de 2600. Ces réglages, nous obtenons un résultats satisfaisant en terme de rapidité de réponse de la simulation par rapport au véhicule réel.&lt;br /&gt;
Par manque de temps, le parking de Polytech Lille utilisé pour jouer la simulation restera d'une apparence des plus basiques.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11093</id>
		<title>Guidage et Surveillance d'un véhicule à travers un Cockpit de conduite</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Guidage_et_Surveillance_d%27un_v%C3%A9hicule_%C3%A0_travers_un_Cockpit_de_conduite&amp;diff=11093"/>
				<updated>2014-04-10T07:18:03Z</updated>
		
		<summary type="html">&lt;p&gt;Nmartin1 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Dans le cadre de la quatrième année au sein de la spécialité Informatique-Microélectronique-Automatique, nous allons réaliser un projet permettant de piloter et surveiller&lt;br /&gt;
un véhicule autonome à travers un cockpit de conduite. Ce projet sera encadré par Rochdi MERZOUKI et Xavier REDON.&lt;br /&gt;
&lt;br /&gt;
'''Résumé du projet:'''&lt;br /&gt;
&lt;br /&gt;
Dans le cadre du projet InTraDE, transport autonome du fret, nous souhaitons relier le cockpit de conduite de la salle C002 à un véhicule mobile RobuCar.&lt;br /&gt;
Pour cela, le cockpit qui fonctionne sous le simulateur de dynamique du véhicule SCANeR Studio, communiquera directement via le réseau WiFi avec un véhicule autonome Robucar. &lt;br /&gt;
Tout d'abord, nous modéliserons le parking de Polytech Lille sur le logiciel SCANeR Studio. Ensuite, nous intégrerons à ce terrain un véhicule Robucar déjà modélisé. &lt;br /&gt;
Nous élaborerons alors un scénario dans SCANeR mettant en scène plusieurs véhicules, pilotés automatiquement par SCANeR et le Robucar, piloté par une API (Application Programming Interface)&lt;br /&gt;
sur le PC supervision. L'objectif de ce projet est de récupérer, par le biais d'une première API, des consignes de vitesse et d'angle de braquage des roues imposées au Robucar (par le biais d'un programme MATLAB déjà opérationnel) et&lt;br /&gt;
de les envoyer au PC Supervision où ils seront récupérées par une seconde API. Celle-ci prendra en charge l'acheminement de ces données vers le cockpit et la simulation sur les channels adéquates pour que l'API (ModelHandler) qui contrôle le véhicule simulé prenne en compte ces consignes et les applique au modèle dynamique. De ce fait, nous verrons évoluer en temps réel le Robucar dans la simulation et simultanément,&lt;br /&gt;
le volant du cockpit suivra les mouvements du véhicule réel. L'utilisateur pourra ainsi suivre le déplacement de la Robucar dans la simulation et observer, parallèlement, les mouvements du volant dans le cockpit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pour aller plus loin'''&lt;br /&gt;
&lt;br /&gt;
On pourra également télé-opérer le véhicule réel à tout moment, c'est à dire le piloter via le cockpit. La manipulation pourra éventuellement être réalisée avec deux Robucars.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Matériel à disposition ==&lt;br /&gt;
&lt;br /&gt;
Pour notre projet nous avons à disposition:&lt;br /&gt;
&lt;br /&gt;
- un véhicule Robucar muni d'un PC intégré et d'une carte d'acquisition DSPACE (en C002)&lt;br /&gt;
&lt;br /&gt;
- les logiciels permettant sa conduite, à savoir Matlab, Simulink et Control Desk&lt;br /&gt;
&lt;br /&gt;
- un PC supervision (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Cockpit de simulation (en C002)&lt;br /&gt;
&lt;br /&gt;
- un Accès au logiciel de simulation SCANeR Studio (en C002)&lt;br /&gt;
&lt;br /&gt;
Nous travaillerons sur le logiciel de développement Microsoft Visual Studio 2005.&lt;br /&gt;
&lt;br /&gt;
== Définition des outils à disposition ==&lt;br /&gt;
&lt;br /&gt;
[[Fichier:scaner.png|370px|thumb|right|Logiciel de simulation Temps Réel SCANeR Studio]]&lt;br /&gt;
&lt;br /&gt;
===SCANeR Studio: Logiciel de simulation pour la recherche et l'ingénierie===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
SCANeR Studio est un logiciel de simulation de conduite automobile Temps Réel offrant à ses utilisateurs une interface de surveillance ou de contrôle d'un véhicule (voiture, poids lourd, cycliste, piéton). &lt;br /&gt;
Il permet la représentation d'un environnement, modélisé en 3D par le logiciel, auquel un ou plusieurs véhicules sont intégrés. &lt;br /&gt;
Les véhicules simulés sont de différents types et on s'intéressera pour notre application aux véhicules &amp;quot;simples&amp;quot; et &amp;quot;Advanced&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Selon leur type, les véhicules sont contrôlés par différentes API (Application Programming Interface) dans SCANeR Studio:&lt;br /&gt;
&lt;br /&gt;
- automatiquement par la simulation : API TRAFFIC. C'est le cas des véhicules de type simples.&lt;br /&gt;
&lt;br /&gt;
- à l'aide d'un élément extérieur tel qu'un cockpit de simulation ou un véhicule réel : API Modelhandler. C'est le cas des véhicule de type Advanced.&lt;br /&gt;
&lt;br /&gt;
Pour réaliser une simulation, il faut un terrain et un scenario. C'est dans le mode scenario que nous choisissons les véhicules à mettre en place dans la simulation. Ici, nous modéliserons le Parking de Polytech Lille puis nous y intégrerons le Robucar (de type véhicule &amp;quot;Advanced&amp;quot;) et éventuellement des véhicules simples. Nous choisissons également les API qui seront actives. Ici, les API indispensables sont Modelhandler et l'API que nous avons développé pour lire les consignes envoyées par le serveur et les appliquer dans la simulation. Les deux API vont s'échanger des données par le biais de canaux : les Export Channels. Notre API enverra donc une consigne de vitesse et d'angle de braquage des roues sur des Export Channels définis précisément afin que ModelHandler puissent les informations.&lt;br /&gt;
&lt;br /&gt;
===Le véhicule ROBUCAR===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:robucar.jpg|350px|thumb|right|Véhicule Robucar]]&lt;br /&gt;
&lt;br /&gt;
Le Robucar est un véhicule automatique &amp;quot;intelligent&amp;quot;, autonome et électrique, commercialisé par la société ROBOSOFT. Il est composé d'un châssis à quatre roues motrices et directionnelles pilotables séparément. &lt;br /&gt;
Il y a donc deux paramètres de commande pour chaque roue : l'orientation et la vitesse de rotation). Le véhicule est équipé d'un ordinateur de bord et d'une carte d'acquisition Temps Réel DSPACE qui récupère les données du véhicule. L'accès à ces données sur d'ordinateur intégré est rendu possible par la librairie CLIB. Celle-ci permet, en effet, de récupérer les données acquise par la DSPACE.&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de notre projet, nous considérons que seules les roues avants du véhicule sont directionnelles. Nous appliquerons donc la même consigne de vitesse et de braquage aux deux roues avant.&lt;br /&gt;
&lt;br /&gt;
===Création d'un Serveur UDP===&lt;br /&gt;
&lt;br /&gt;
Pour créer une communication entre le PC supervision et le PC intégré au Robucar, nous avons choisi de créer un serveur UDP. Nous avons préféré ce protocole au TCP car il est plus rapide et la perte de quelques paquets n'est pas gênante pour notre application. Le serveur est implémenté en langage C++ sur Windows grâce à la bibliothèque Windows Sockets 2 (« Winsock2 »). &lt;br /&gt;
Le RobuCar est piloté avec un programme Matlab et son programme Simulink correspondant. On charge dans le logiciel dSPACE ControlDesk du Robucar le programme correspondant à celui sur MATLAB. Une interface apparaît et nous pouvons alors piloter le véhicule. Lors de la conduite, des valeurs de consignes pour la vitesse moyenne et l’angle de braquage des roues sont donc récupérées dans l’API Serveur grâce à la bibliothèque « clib32 ». Sur le PC supervision, l'API Client se connecte au serveur et reçoit alors des paquets contenant une consigne de vitesse et de braquage.&lt;br /&gt;
&lt;br /&gt;
==Journal de bord==&lt;br /&gt;
&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
[[Fichier:Parking.png|300px|thumb|right|Parking Polytech Lille modélisé]]&lt;br /&gt;
&lt;br /&gt;
Lors de cette première séance, nous avons pris en main le logiciel SCANeR Studio et notamment le mode terrain qui permet de concevoir un environnement de simulation. &lt;br /&gt;
De ce fait, nous avons débuté la conception du parking de Polytech Lille sur le logiciel.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons finalisé la conception du parking sur SCANeR Studio et avons débuté l'élaboration d'un scénario mettant en scène un Robucar qui est de type &amp;quot;vehicle Advanced&amp;quot; &lt;br /&gt;
et plusieurs véhicules de type &amp;quot;vehicle simple&amp;quot; qui seront pilotés automatiquement par le logiciel. Le Robucar est piloté par l'API ModelHandler et nous pouvons donc dès à présent tester la fonctionnalité&lt;br /&gt;
de notre terrain.&lt;br /&gt;
&lt;br /&gt;
Résultats des simulations sur le terrain:&lt;br /&gt;
- Dans certains virages et dans le rond point à l'entrée du parking, le comportement des véhicules en mode automatique est anormal&lt;br /&gt;
- Les véhicules se comportent normalement sur les lignes droites, aux Cédez-le-passage et dans les virages à 90 degrés.&lt;br /&gt;
&lt;br /&gt;
Les virages étaient modélisés en &amp;quot;Polyline&amp;quot; ce qui est compliqué à traiter d'un point de vue logiciel. Nous avons dû re-modéliser plusieurs virages en prenant des sections de route plus simples.&lt;br /&gt;
Ainsi, les défauts de trajectoire des véhicules sont corrigés. Le parking est opérationnel pour l'élaboration de notre scénario futur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
La prochaine étape est la conception de deux API: un serveur UDP qui sera lancé sur la Robucar et un client, lancé sur le PC de supervision. Nous commençons à nous auto-former sur la conception d'une API sous SCANeR Studio en prenant connaissance de la documentation disponible. On décide de réaliser une API simple qui affiche la vitesse d'un véhicule de type simple. On débute alors la conception de cette API.&lt;br /&gt;
&lt;br /&gt;
En première partie de séance, nous nous entretenons avec le doctorant Vincent XX pour faire un point sur les API. On évoquera entre autre les points suivants:&lt;br /&gt;
&lt;br /&gt;
- comprendre l'utilisation des canaux (EXPORT CHANNEL)&lt;br /&gt;
&lt;br /&gt;
- mettre à disposition la documentation nécessaire pour les utiliser &lt;br /&gt;
&lt;br /&gt;
- comment transformer un projet C++ en une API qui évoluera dans le logiciel&lt;br /&gt;
&lt;br /&gt;
Nous entretiendrons également avec M. Merzouki pour définir plus précisément le cahier des charges. Les points abordés sont les suivants:&lt;br /&gt;
&lt;br /&gt;
- Programmation d'un Serveur UDP sur l'ordinateur intégré au Robucar pour communiquer en WIFI avec une API Client&lt;br /&gt;
&lt;br /&gt;
- Programmation d'une API Client à implanter sur le logiciel SCANeR du PC Supervision&lt;br /&gt;
&lt;br /&gt;
- Conception d'une seconde API permettant d'envoyer des consignes de vitesse et de braquage dans la simulation&lt;br /&gt;
&lt;br /&gt;
- Fusion de ces deux API&lt;br /&gt;
&lt;br /&gt;
En seconde partie de séance, nous commençons à prendre en main l'utilisation des sockets en C++ pour le serveur UDP et l'API Client. Nous utiliserons les sources suivantes:&lt;br /&gt;
&lt;br /&gt;
[http://www.frameip.com/entete-udp/ Frampeip: Serveur en mode non connecté]&lt;br /&gt;
&lt;br /&gt;
[http://rex.plil.fr/Enseignement/Reseau/Reseau.IMA4sc/reseau.html Cours IMASC : Programmation Réseau]&lt;br /&gt;
&lt;br /&gt;
[http://www.linux-france.org/prj/edu/archinet/systeme/index_monopage.html Linux: Tutoriel sur les Serveurs]&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
Nous commençons à nous focaliser sur le fonctionnement du Robucar. Vincent nous explique comment marche la DSPACE et comment utiliser un programme MATLAB pour récupérer des données du véhicule &lt;br /&gt;
tels que la vitesse, l'angle de braquage, la position de la boîte de vitesse etc. On découvre aussi le fonctionnement du Cockpit en utilisant une API déjà fonctionnelle permettant d'envoyer des commandes &lt;br /&gt;
au cockpit depuis la simulation. Cette API est implantée sur le logiciel SCANeR du PC Supervision.&lt;br /&gt;
Nous continuons la programmation du serveur UDP de l'API Client. &lt;br /&gt;
&lt;br /&gt;
Les Premiers tests du serveur:&lt;br /&gt;
&lt;br /&gt;
- On met le PC Supervision et le PC du Robucar sur le même réseau&lt;br /&gt;
&lt;br /&gt;
- On essaie de se &amp;quot;pinger&amp;quot; l'un l'autre pour vérifier la connexion entre les deux ordinateurs&lt;br /&gt;
&lt;br /&gt;
Problème rencontré:&lt;br /&gt;
Les codes du serveur et du client ne compilent pas car il manque des librairies. Nous renseignons les librairies manquantes et corrigeons les erreurs de compilation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5 ===&lt;br /&gt;
&lt;br /&gt;
Nous réorganisons les codes du serveur et du client avec l'aide de M. Redon. Le serveur et l'API Client ne fonctionne actuellement pas.&lt;br /&gt;
Afin d'accéder aux données de la DSPACE, il nous faut utiliser un Parser, programmé par un doctorant ayant travaillé sur le Robucar auparavant. Ce parser prend en paramètre les noms des&lt;br /&gt;
variables dans le programme Simulink et nous renvoie leur nom système correspondant, exploitable en C++. Pour cela, il faut indiquer au parser le chemin (path) et le nom exact des variables dans Simulink.&lt;br /&gt;
Dans le serveur UDP, on récupère donc grâce à la librairie Clib les valeurs de la vitesse et l'angle de braquage des roues du Robucar. &lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
Le serveur UDP est fonctionnel. Les échanges de paquets entre les deux PC connectés se font rapidement. Grâce à un compteur dans le programme du Serveur, on constate que beaucoup de paquets&lt;br /&gt;
sont perdus mais ceci ne devrait pas poser trop de problèmes dans la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 7===&lt;br /&gt;
&lt;br /&gt;
On débute la programmation de la seconde API permettant d'envoyer des données à la simulation. Pour ce faire, on doit prendre en main l'écriture sur les EXPORT CHANNELS. &lt;br /&gt;
En effet, ils permettent d'échanger des informations entre les différentes API. Ici, on cherche à échanger des données entre cette API et l'API ModelHandler qui pilote le modèle&lt;br /&gt;
(Robucar dans la simulation). On va donc renseigner les cases mémoires de la vitesse et de l'angle de braquage des roues dans lesquelles Modelhandler lis ces informations pour les&lt;br /&gt;
envoyer sur le modèle de la simulation.&lt;br /&gt;
&lt;br /&gt;
===Semaine 8===&lt;br /&gt;
&lt;br /&gt;
On continue la programmation de l'API elle est terminée rapidement. On réalise les premiers tests de l'API dans Scaner Studio. Pour ce faire, on charge notre terrain (parking de Polytech Lille),&lt;br /&gt;
on ajoute un scénario qui dans notre cas est l'ajout d'un véhicule de type Advanced piloté par Modelhandler. On ajoute ensuite une API en utilisant le fichier .exe généré par notre projet sur Visual Studio.&lt;br /&gt;
&lt;br /&gt;
Problèmes rencontrés:&lt;br /&gt;
&lt;br /&gt;
- Problème dans les héritages des dépendances supplémentaires du projet dans Microsoft Visual Studio: on doit ajouter certaines librairies supplémentaires &lt;br /&gt;
&lt;br /&gt;
- l'API bloque la simulation bien qu'elle compile correctement indépendamment de la simulation&lt;br /&gt;
&lt;br /&gt;
===Semaine 9===&lt;br /&gt;
&lt;br /&gt;
L'API envoyant des données fixes à SCANeR Studio est fonctionnelle.&lt;br /&gt;
&lt;br /&gt;
Les problèmes résolus sont :&lt;br /&gt;
&lt;br /&gt;
- Le format d'envoi des consignes de vitesse et de braquage n'était pas correct (Float au lieu de Double)&lt;br /&gt;
&lt;br /&gt;
- Il est nécessaire de démarrer le moteur en fixant la variable &amp;quot;IgnitionKey&amp;quot; à 3 ce qui correspond à moteur en marche (Engine Start)&lt;br /&gt;
&lt;br /&gt;
- Il est préférable d'écrire sur la variable &amp;quot;TimeOfUpdate&amp;quot; pour &amp;quot;synchroniser&amp;quot; l'envoi de données entre ModelHandler qui fonctionne à 500Hz et notre API qui fonctionne à 100Hz&lt;br /&gt;
&lt;br /&gt;
- On mettra également la boîte de vitesse à 1 (GearBox)&lt;br /&gt;
&lt;br /&gt;
Nous commençons à fusionner l'API client et cette API.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 10===&lt;br /&gt;
&lt;br /&gt;
Les deux API sont fusionnées et nous commençons les tests de notre nouvelle API. Nous l'ajoutons à SCANeR et celle-ci devient rapidement fonctionnelle. Cependant, nous rencontrons des problèmes avec la connexion WIFI qui n'est pas fiable et qui coupe très souvent. En effet, nous avons dans un premier temps créé un réseau ad hoc. Ce type de réseau est facile et rapide à mettre en place mais sa fiabilité reste limitée. Il y a des pertes de données et de connexion assez fréquentes. De plus, La bande passante est limitée. Un problème subsiste donc, le temps de latence entre l'envoi des consignes et l'application de celles-ci au modèle de SCANeR Studio est très important. En d'autres mots, les déplacements du Robucar ne sont pas fiables sur la simulation. Nous avons donc poursuivi les tests en connectant le Robucar et le PC Supervision par Ethernet. Cependant, le cahier des charges nous impose une communication WIFI. Nous nous sommes procuré un routeur que nous avons configuré pour établir une connexion entre les deux appareils. &lt;br /&gt;
Après une nouvelle phase de tests, nous constatons que l'angle de braquage des roues dans la simulation n'est pas correct. On multipliera la consigne reçue par un coefficient pour ajuster la valeur car l'angle de consigne doit être en radian alors que le cockpit envoie un entier autour de 2600. Ces réglages, nous obtenons un résultats satisfaisant en terme de rapidité de réponse de la simulation par rapport au véhicule réel.&lt;br /&gt;
Par manque de temps, le parking de Polytech Lille utilisé pour jouer la simulation restera d'une apparence des plus basiques.&lt;/div&gt;</summary>
		<author><name>Nmartin1</name></author>	</entry>

	</feed>