<?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=Gelbez</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=Gelbez"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Gelbez"/>
		<updated>2026-04-25T03:04:13Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20384</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20384"/>
				<updated>2015-04-20T15:37:47Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayé de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
Nous nous sommes rendues compte que le problème venait de la scène Sofa puisqu'on ne recevait que des 0. Et donc nous avons demandé à nos encadrants  de nous aider. Ils ont donc réussi à corriger la scène Sofa du robot pneumatique qui contenait des bugs et ces derniers nous empêchaient de faire le lien avec notre code.&lt;br /&gt;
&lt;br /&gt;
* ''' Mardi 14/04 '''&lt;br /&gt;
Après avoir effectué des tests sur sur l'arduino et sur la liaison série, nous avons commencé par définir les bonnes adresses des différentes broches du robot déformable avec les servomoteurs et de le régler à la bonne vitesse de transmission. Ensuite, nous avons transvaser notre code arduino sur la carte arduino Uno du robot. Les premiers tests sur le robot n'étaient pas très concluants.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 15/04 ''' &lt;br /&gt;
&lt;br /&gt;
On s'est en fait vite rendues compte qu'il y avait un problème de dépassement de mémoire. En effet, on avait fait tous nos tests avec une carte arduino Atmega 2560 mais le robot était équipé d'une carte arduino Uno dont l'espace mémoire était plus restreint. Afin de résoudre ce problème, nous avons diminué la taille des tableaux dans lesquels on stockait les différents types d'actionneurs de 50 à 10. Ayant régler ce problème, nous avons réussi à la fin de la séance à commander correctement le &amp;quot;vrai&amp;quot; robot déformable avec les servomoteurs.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 16/04 ''' &lt;br /&gt;
Nous avons eu l'intervention de l'industriel valeo toute la matinée.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 20/04 '''&lt;br /&gt;
Nous avons réglé quelques problèmes de conditions de transmission sur l'arduino pour les actionneurs pneumatiques et nous avons rentré les adresses des différentes broches. Nous avons ensuite vérifié notre code de la liaison série avant de tester sur le robot pneumatique. Enfin, nous avons réussi à commander le &amp;quot;vrai&amp;quot; robot pneumatique grâce à notre code.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20383</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20383"/>
				<updated>2015-04-20T15:36:05Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayé de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
Nous nous sommes rendues compte que le problème venait de la scène Sofa puisqu'on ne recevait que des 0. Et donc nous avons demandé à nos encadrants  de nous aider. Ils ont donc réussi à corriger la scène Sofa du robot pneumatique qui contenait des bugs et ces derniers nous empêchaient de faire le lien avec notre code.&lt;br /&gt;
&lt;br /&gt;
* ''' Mardi 14/04 '''&lt;br /&gt;
Après avoir effectué des tests sur sur l'arduino et sur la liaison série, nous avons commencé par définir les bonnes adresses des différentes broches du robot déformable avec les servomoteurs et de le régler à la bonne vitesse de transmission. Ensuite, nous avons transvaser notre code arduino sur la carte arduino Uno du robot. Les premiers tests sur le robot n'étaient pas très concluants.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 15/04 ''' &lt;br /&gt;
&lt;br /&gt;
On s'est en fait vite rendues compte qu'il y avait un problème de dépassement de mémoire. En effet, on avait fait tous nos tests avec une carte arduino Atmega 2560 mais le robot était équipé d'une carte arduino Uno dont l'espace mémoire était plus restreint. Afin de résoudre ce problème, nous avons diminué la taille des tableaux dans lesquels on stockait les différents types d'actionneurs de 50 à 10. Ayant régler ce problème, nous avons réussi à la fin de la séance à commander correctement le &amp;quot;vrai&amp;quot; robot déformable avec les servomoteurs.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 16/04 ''' &lt;br /&gt;
Nous avons eu l'intervention de l'industriel valeo toute la matinée.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 20/04 '''&lt;br /&gt;
Nous avons réglé quelques problèmes de conditions de transmission sur l'arduino pour les actionneurs pneumatiques et nous avons rentré les adresses des différentes broches. Nous avons ensuite vérifier notre code de la liaison série avant de tester sur le robot pneumatique. Enfin,&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20382</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20382"/>
				<updated>2015-04-20T15:14:33Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 12 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayer de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
Nous nous sommes rendues compte que le problème venait de la scène Sofa puisqu'on ne recevait que des 0. Et donc nous avons demandé à nos encadrants  de nous aider. Ils ont donc réussi à corriger la scène Sofa du robot pneumatique qui contenait des bugs et ces derniers nous empêchaient de faire le lien avec notre code.&lt;br /&gt;
&lt;br /&gt;
* ''' Mardi 14/04 '''&lt;br /&gt;
Après avoir effectué des tests sur sur l'arduino et sur la liaison série, nous avons commencé par définir les bonnes adresses des différentes broches du robot déformable avec les servomoteurs et de le régler à la bonne vitesse de transmission. Ensuite, nous avons transvaser notre code arduino sur la carte arduino Uno du robot. Les premiers tests sur le robot n'étaient pas très concluants.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 15/04 ''' &lt;br /&gt;
&lt;br /&gt;
On s'est en fait vite rendues compte qu'il y avait un problème de dépassement de mémoire. En effet, on avait fait tous nos tests avec une carte arduino Atmega 2560 mais le robot était équipé d'une carte arduino Uno dont l'espace mémoire était plus restreint. Afin de résoudre ce problème, nous avons diminué la taille des tableaux dans lesquels on stockait les différents types d'actionneurs de 50 à 10. Ayant régler ce problème, nous avons réussi à la fin de la séance à commander correctement le &amp;quot;vrai&amp;quot; robot déformable avec les servomoteurs.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 16/04 ''' &lt;br /&gt;
Nous avons eu l'intervention de l'industriel valeo toute la matinée.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 20/04 '''&lt;br /&gt;
Nous avons réglé quelques problèmes de conditions de transmission sur l'arduino pour les actionneurs pneumatiques et nous avons rentré les adresses des différentes broches. Nous avons ensuite vérifier notre code de la liaison série avant de tester sur le robot pneumatique. Enfin,&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20381</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20381"/>
				<updated>2015-04-20T15:01:41Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayer de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
Nous nous sommes rendues compte que le problème venait de la scène Sofa puisqu'on ne recevait que des 0. Et donc nous avons demandé à nos encadrants  de nous aider. Ils ont donc réussi à corriger la scène Sofa du robot pneumatique qui contenait des bugs et ces derniers nous empêchaient de faire le lien avec notre code.&lt;br /&gt;
&lt;br /&gt;
* ''' Mardi 14/04 '''&lt;br /&gt;
Après avoir effectué des tests sur sur l'arduino et sur la liaison série, nous avons commencé par définir les bonnes adresses des différentes broches du robot déformable avec les servomoteurs et de le régler à la bonne vitesse de transmission. Ensuite, nous avons transvaser notre code arduino sur la carte arduino Uno du robot. Les premiers tests sur le robot n'étaient pas très concluants.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 15/04 ''' &lt;br /&gt;
&lt;br /&gt;
On s'est en fait vite rendues compte qu'il y avait un problème de dépassement de mémoire. En effet, on avait fait tous nos tests avec une carte arduino Atmega 2560 mais le robot était équipé d'une carte arduino Uno dont l'espace mémoire était plus restreint. Afin de résoudre ce problème, nous avons diminué la taille des tableaux dans lesquels on stockait les différents types d'actionneurs de 50 à 10. Ayant régler ce problème, nous avons réussi à la fin de la séance à commander correctement le &amp;quot;vrai&amp;quot; robot déformable avec les servomoteurs.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 16/04 ''' &lt;br /&gt;
Nous avons eu l'intervention de l'industriel valeo toute la matinée.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 20/04 '''&lt;br /&gt;
Nous avons réglé quelques problèmes de conditions de transmission sur l'arduino pour les actionneurs pneumatiques et nous avons rentré les adresses des différentes broches. Nous avons ensuite vérifier notre code de la liaison série avant de tester sur le robot pneumatique.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20380</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20380"/>
				<updated>2015-04-20T14:12:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayer de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
Nous nous sommes rendues compte que le problème venait de la scène Sofa puisqu'on ne recevait que des 0. Et donc nous avons demandé à nos encadrants  de nous aider. Ils ont donc réussi à corriger la scène Sofa du robot pneumatique qui contenait des bugs et ces derniers nous empêchaient de faire le lien avec notre code.&lt;br /&gt;
&lt;br /&gt;
* ''' Mardi 14/04 '''&lt;br /&gt;
Après avoir effectué des tests sur sur l'arduino et sur la liaison série, nous avons commencé par définir les bonnes adresses des différentes broches du robot déformable avec les servomoteurs et de le régler à la bonne vitesse de transmission. Ensuite, nous avons transvaser notre code arduino sur la carte arduino Uno du robot. Les premiers tests sur le robot n'étaient pas très concluants.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 15/04 ''' &lt;br /&gt;
&lt;br /&gt;
On s'est en fait vite rendues compte qu'il y avait un problème de dépassement de mémoire. En effet, on avait fait tous nos tests avec une carte arduino Atmega 2560 mais le robot était équipé d'une carte arduino Uno dont l'espace mémoire était plus restreint. Afin de résoudre ce problème, nous avons diminué la taille des tableaux dans lesquels on stockait les différents types d'actionneurs de 50 à 10. Ayant régler ce problème, nous avons réussi à la fin de la séance à commander correctement le robot déformable avec les servomoteurs.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 16/04 ''' &lt;br /&gt;
Nous avons eu l'intervention de l'industriel valeo toute la matinée.&lt;br /&gt;
&lt;br /&gt;
===Semaine 12===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 20/04 '''&lt;br /&gt;
Nous avons réglé quelques problèmes de conditions de transmission sur l'arduino pour les actionneurs pneumatiques et nous avons rentré les adresses des différentes broches. Nous avons ensuite vérifier notre code de la liaison série avant de tester sur le robot pneumatique.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20356</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20356"/>
				<updated>2015-04-20T13:17:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 11 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayer de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
Nous nous sommes rendues compte que le problème venait de la scène Sofa puisqu'on ne recevait que des 0. Et donc nous avons demandé à nos encadrants  de nous aider. Ils ont donc réussi à corriger la scène Sofa du robot pneumatique qui contenait des bugs et ces derniers nous empêchaient de faire le lien avec notre code.&lt;br /&gt;
&lt;br /&gt;
* ''' Mardi 14/04 '''&lt;br /&gt;
Après avoir effectué des tests sur sur l'arduino et sur la liaison série, nous avons commencé par définir les bonnes adresses des différentes broches du robot déformable avec les servomoteurs et de le régler à la bonne vitesse de transmission. Ensuite, nous avons transvaser notre code arduino sur la carte arduino Uno du robot. Les premiers tests sur le robot n'étaient pas très concluants.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 15/04 ''' &lt;br /&gt;
&lt;br /&gt;
On s'est en fait vite rendues compte qu'il y avait un problème de dépassement de mémoire. En effet, on avait fait tous nos tests avec une carte arduino Atmega 2560 mais le robot était équipé d'une carte arduino Uno dont l'espace mémoire était plus restreint. Afin de résoudre ce problème, nous avons diminué la taille des tableaux dans lesquels on stockait les différents types d'actionneurs de 50 à 10. Ayant régler ce problème, nous avons réussi à la fin de la séance à commander correctement le robot déformable avec les servomoteurs.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 16/04 ''' &lt;br /&gt;
Nous avons eu l'intervention de l'industriel valeo toute la matinée.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20355</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20355"/>
				<updated>2015-04-20T13:17:24Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagner de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Même en ayant réaliser la mise à jour du pluging et donc en arrivant enfin à obtenir la bonne scène, on avait quand même un warning qui nous indiquait que la liaison entre la scène et Sofa n'était pas faite. Nous avons quand même essayer de compiler notre programme mais nous n'arrivions pas à obtenir les bons résultats.&lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20339</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20339"/>
				<updated>2015-04-20T12:28:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 9 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (ce qui a pris plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagnée de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Nous avons fait quelques modifications sur le code de la liaison série &lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20338</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=20338"/>
				<updated>2015-04-20T12:27:11Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 10 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplantée dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction &amp;quot;init&amp;quot; puissent être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares). &lt;br /&gt;
&lt;br /&gt;
Heureusement, grâce à l'aide de notre tuteur, qui connait parfaitement le fonctionnement de SOFA, nous avons pu y arriver en créant des accès en lecture et en écriture de la façon suivante : &lt;br /&gt;
&lt;br /&gt;
Par exemple, dans la première fonction, on déclare un &amp;quot;write accessor&amp;quot; qui permet de faire le lien avec la DATA sofa préalablement déclarée, puis un &amp;quot;read accessor&amp;quot;  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  sofa::Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; infosServosm // déclaration de la data SOFA dans le .h&lt;br /&gt;
&lt;br /&gt;
  using sofa::helper::WriteAccessor; // déclaration pour pouvoir accéder aux  fonctions de type &amp;quot;Accessor&amp;quot;&lt;br /&gt;
  using sofa::helper::ReadAccessor;&lt;br /&gt;
&lt;br /&gt;
  WriteAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm= infosServosm; // déclaration dans la première fonction&lt;br /&gt;
  infosservosm.resize(50); // Permet de choisir la taille, ici 50&lt;br /&gt;
&lt;br /&gt;
  ReadAccessor&amp;lt;Data&amp;lt;vector&amp;lt;float&amp;gt; &amp;gt; &amp;gt; infosservosm = infosServosm; &lt;br /&gt;
  // déclaration dans la deuxième fonction pour accéder aux données, à savoir que la variable &amp;quot;infosservosm&amp;quot; crée s'utilise comme un tableau classique en C.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/03''' &lt;br /&gt;
Le problème du transfert de tableaux étant résolu, nous avons pu tester le programme que nous avions écrit quelques semaines auparavant. Pour cela, nous avons d'abord commencer par l'extraire de SOFA pour éviter la compilation trop longue de tout le projet. Après des tests comparatifs entre le nouveau et l'ancien programme, il s'est avéré que celui-ci fonctionnait parfaitement.&lt;br /&gt;
Il ne nous restait plus qu'a réimplanter le code dans le projet SOFA.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 8 ===&lt;br /&gt;
&lt;br /&gt;
* ''' Lundi 23/03 ''' &lt;br /&gt;
&lt;br /&gt;
Pour tester le programme réimplanté dans SOFA, nous avons du recompiler le projet afin d'ajouter des plugings ce qui s'est avéré assez long.  A la fin de la séance, nous avons pu commencer les tests et nous avons remarqué quelques bugs dans le code. &lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 25/03 '''&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons pu résoudre certains problème du code du port série, mais il restait malgré tout non fonctionnel à cause d'une série d'instructions ne réalisant pas l'effet désiré. Nos encadrant étant absent, nous devions patienter jusqu’à jeudi afin d'obtenir les informations nécessaires. Pendant ce temps, nous avons pu commencer les tests sur le code Arduino que nous avions codé il y a quelques semaines déjà.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/03 '''&lt;br /&gt;
Nous avons résolu le problème concernant le code du port série, grâce aux indications de notre encadrant. Cette partie du code semble opérationnelle pour les servos moteurs. Il nous reste a effectuer les tests concernant les actionneurs pneumatiques. Nous avons ensuite continué les tests du code Arduino. Il semble opérationnel pour les servos moteurs. Le début des tests sur les actionneurs pneumatique a également été débuté.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Semaine 9 === &lt;br /&gt;
&lt;br /&gt;
* '''Lundi 30/03''' &lt;br /&gt;
&lt;br /&gt;
Nous avons terminé les tests concernant la partie Arduino. Le code fonctionne avec un robot n'ayant que des servos moteurs, un robot n'ayant que des pneumatiques ou les 2. Malgré tout, ces tests ont été effectués &amp;quot;en dur&amp;quot;, c'est à dire que cette partie n'est pas encore liée à la partie liaison série (il peut donc encore y avoir des problèmes de disponibilité ou de lecture au niveau du port série). Nous attendons que les tests concernant la liaison série soient concluants pour les 3 configurations d'actionneurs possibles avant de commencer les tests finaux. La toute dernière partie consistera à tester ces codes sur les robots disponibles à l'INRIA. Il nous faudra également ajouter les actionneurs hydrauliques si tout fonctionne, même si les tests ne pourront jamais être effectués car le laboratoire ne dispose pas d'un tel robot pour le moment. &lt;br /&gt;
&lt;br /&gt;
'''Missions pour les semaines à venir : '''&lt;br /&gt;
&lt;br /&gt;
 - Objectif pour la fin de semaine : les parties Arduino et liaison série sont liées et fonctionnent.&lt;br /&gt;
 - Objectif pour la semaine prochaine : les tests ont été effectués sur les robots et l'actionneur hydraulique à été ajouté.&lt;br /&gt;
 - Objectif pour la semaine 11 : Mise en place des feedBacks des actionneurs du robot.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 01/04 '''&lt;br /&gt;
Durant cette séance, nous avons effectué les tests pour les trois configurations possibles d'actionneurs dans la liaison série. Nous avons trouvé quelques bugs dans le code, mais nous sommes arrivée à les résoudre facilement. Il ne restait plus qu'a comparer le code des pneumatiques avec notre code généralisé sur l'interface SOFA. Nous avons également fait des tests sur l'arduino afin de résoudre à l'avance les différents problèmes de lecture pour que la liaison entre les deux codes se passe bien.&lt;br /&gt;
&lt;br /&gt;
*  ''' Jeudi 02/04 '''&lt;br /&gt;
Nous avons continué les tests sur l'Arduino, qui pour le moment s'avèrent concluant. Nous espérons qu'il en sera de même pour la liaison des deux codes.&lt;br /&gt;
Nous avons également voulu tester le code de la liaison série sur SOFA. Nous avons alors ouvert la &amp;quot;scène&amp;quot; sofa contenant le robot pneumatique. Mais à cause d'une mise à jour, cette scène était inutilisable. Nous devions donc attendre que SOFA se mette à jour entièrement afin de tester (il a plus ou moins 1h de mise à jour).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 10===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 06/04 '''&lt;br /&gt;
Ce lundi était férié.&lt;br /&gt;
&lt;br /&gt;
* ''' Mercredi 08/04 ''' &lt;br /&gt;
La mise à jour de SOFA devait s'accompagnée de la mise à jour du pluging contenant la scène en question. Cette mise à jour est également assez longue.&lt;br /&gt;
&lt;br /&gt;
* ''' Jeudi 09/04 ''' &lt;br /&gt;
Nous avons fait quelques modifications sur le code de la liaison série &lt;br /&gt;
&lt;br /&gt;
===Semaine 11===&lt;br /&gt;
 &lt;br /&gt;
* ''' Lundi 13/04 '''&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18911</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18911"/>
				<updated>2015-03-18T14:42:52Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : v&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
=== Semaine 7 ===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/03'''&lt;br /&gt;
Le but de la séance était de compiler la partie de code réimplanté dans le programme global du projet SOFA. Nous avons rencontré un problème lors de l'installation de SOFA, en effet une mauvaise version d'un programme nous empêchait de faire le lien avec la bibliothèque VRPN.&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 18/03'''&lt;br /&gt;
Pour compiler le programme, il fallait que tous les tableaux présents dans la première fonction puisse être utilisés dans la deuxième. Pour cela nous devions créer une &amp;quot;Data&amp;quot; SOFA. Nous avons rencontré de nombreux problèmes (notamment dus aux fonctions de SOFA et leur utilisation dont les exemples sont rares)&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18545</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18545"/>
				<updated>2015-03-11T16:27:47Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons commencé à modifier le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18500</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18500"/>
				<updated>2015-03-11T14:34:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA] et nous avons regardé le programme du plug-in SoftRobot.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18494</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=18494"/>
				<updated>2015-03-11T14:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :'''&lt;br /&gt;
Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :'''&lt;br /&gt;
Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons également généralisé ce programme Arduino (permettant  le contrôle des différents moteurs après réception des données envoyées par la liaison série).  Le programme avait été réalisé pour le robot déformable et donc uniquement pour ses quatre moteurs (nord, sud, est, ouest). Le but était donc de pouvoir l’utiliser pour un nombre de moteurs indéfini, placé par la suite en paramètre. Nous n’avons pas rencontré de difficultés particulières, car il s’agissait généralement de remplacer les variables par des tableaux. Malgré tout, il était impossible de créer directement un tableau de servos moteur avec la bibliothèque « servo.h ». Nous avons donc dû créer une structure, contenant une variable de type servo, afin de pouvoir achever ce programme :  &lt;br /&gt;
&lt;br /&gt;
		&lt;br /&gt;
  struct servom{&lt;br /&gt;
  Servo servo;&lt;br /&gt;
               };&lt;br /&gt;
  servom servomo[nbMotors-1]; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, nous avons pu créer rapidement notre tableau de servos moteurs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' :&lt;br /&gt;
Lors de cette séance, nous avons testé notre programme Arduino. Malheureusement,  de nombreux dysfonctionnements du matériel (et notamment de l’Arduino et de sa plaque de connexion)  nous ont ralenti. En effet, les problèmes de connexion à l’Arduino et les mauvais contacts entre le support et les moteurs ne nous permettaient pas de savoir si les mauvais résultats des essais étaient dus au matériel ou au programme. &lt;br /&gt;
&lt;br /&gt;
Nous avons également mis en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' &lt;br /&gt;
Après un changement d’Arduino et de support, nous avons finalement réussi à tester notre programme Arduino. Nous avons donc pu commencer à étudier le code de la liaison série, déjà réalisé par les membres de l’équipe Defrost, mais qui n’était adapté qu’aux 4 servos moteurs du robot déformable. Ce code C++ était conçu uniquement pour envoyer les données provenant de SOFA vers l’arduino. Nous avons donc cherché une fonction dans la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] nous permettant de lire des données. Bien qu’il n’y ait que peu d’information sur cette bibliothèque sur internet, nous avons tout de même réussi à trouver la fonction ''« vrpn_read_available_characters() »''. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :'''  &lt;br /&gt;
Après avoir trouvé la fonction qui convenait pour notre projet, nous avons tenté de trouver la façon dont celle-ci pouvait fonctionner.  Malheureusement, avant d’effectuer les premiers tests, nous nous sommes rendu compte qu’il était nécessaire d’extraire cette partie du code du projet SOFA, afin de ne pas devoir lancer le logiciel à chaque compilation. Après avoir remplacé les variables qui provenaient du logiciel et réinstallé la bibliothèque,  nous avons pu tester notre fonction. Nous avons commencé par des envois simples, qui se limitaient à un chiffre ou une lettre. Malheureusement la fonction ne recevait pas la donnée envoyée. Il s’est avéré que nous ne lisions tout simplement pas au bon moment.Donc, grâce à une simple boucle while, nous avons pu régler ce problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' &lt;br /&gt;
Durant cette séance, nous nous sommes rendues compte qu’une autre version de la fonction ''« vrpn_read_available_characters() »'' existait avec une option « timeout ». Cette option permet de lire le port série durant la durée souhaitée. Cela permettait donc de simplifier le code et de ne plus utiliser de boucle while. Malgré tout, nous avons eu des difficultés à trouver un exemple d’utilisation de cette fonction. Mais nous y sommes finalement parvenues :&lt;br /&gt;
&lt;br /&gt;
   struct timeval timeout;&lt;br /&gt;
   timeout.tv_sec = 1.999;&lt;br /&gt;
   timeout.tv_usec = 0;&lt;br /&gt;
   vrpn_read_available_characters(portNumber,buffer,bytes,&amp;amp;timeout);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous avons choisi un temps de 1,999 secondes après avoir effectué différents tests. A la fin de la journée, nous sommes donc arrivées à envoyer une série d’informations de l’arduino vers l’ordinateur.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' &lt;br /&gt;
Le but de cette séance était  de différencier  les informations relatives aux différents actionneurs lors de leur réception sur le port série.  Pour cela, nous avons choisi un moyen simple : mettre en place des délimiteurs dans le code Arduino.  Afin de correctement classer les différentes informations dans ce code, nous avons d’abord pensé à élaborer des structures pour chaque actionneur. Malheureusement, cela s’est avéré difficile notamment à cause d’un problème de librairie au niveau de l’Arduino. Nous avons donc préféré l’utilisation de simples variables.&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : &lt;br /&gt;
Les informations transmises  par l’Arduino pouvaient très bien être des entiers, des float, ou des char. Lors de l’envoi, nous avons rencontré quelques problèmes liés à ces types. En effet, si nous envoyions des float et des int, alors la partie décimale du float était ajoutée à l’int (surement dû au fait que le buffer n’était pas reinitialisé).  Nous avons donc décidé de n’envoyer que des float, ce qui ne changeait pas notre programme dans le fond. Une fois la transmission réussie, nous avons ajouté les délimiteurs : un pour chaque fin de type, et un pour la fin de la transmission.          &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' &lt;br /&gt;
Maintenant que nous arrivions à recevoir les informations classées en provenance de l’Arduino, nous avons réalisé le code permettant de les récupérer au niveau de la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' &lt;br /&gt;
La première partie du code de la liaison série étant terminée, nous nous sommes ensuite concentrées sur la retransmission vers l’Arduino après récupération des données de SOFA et traitement par méthodes mathématiques. Comme le programme devait traiter 4 types d’actionneurs différents, nous avons étudié le code actuel (réalisé pour les servos moteurs) mais aussi le code d’un robot d’un [http://projets-imasc.plil.net/mediawiki/index.php?title=P28_Mod%C3%A9lisation_d%27un_robot_chirurgical_d%C3%A9formable_pour_la_simulation_et_le_contr%C3%B4le projet IMA5], qui utilisait cette fois-ci des actionneurs pneumatiques.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' &lt;br /&gt;
A cause d’un problème d’incompréhension avec notre tuteur, nous avons dû réadapter une partie de notre code déjà existant. En effet, nous pensions que pour chaque type d’actionneur, les données envoyées étaient les mêmes. Or il s’est avéré que cela n’était pas le cas, et que chaque donnée envoyée pouvait varier d’un actionneur à un autre, même si ces derniers étaient du même type. Ainsi, nous avons modifié le code de l’Arduino et utilisé des tableaux pour chaque paramètre lié à un type, avec un maximum de 50 valeurs différentes pour chacun d’entre eux.  Des délimiteurs de fin de tableaux ont également été ajoutés. Nous avons également complété le code de la liaison série, en reclassant les tableaux des différents types en sous tableaux de différents paramètres.&lt;br /&gt;
Nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' &lt;br /&gt;
Un problème lié à des conflits entre le port série de l’Arduino et celui de l’ordinateur nous empêchait de tester les modifications apportées à notre programme.&lt;br /&gt;
&lt;br /&gt;
===Semaine 5===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 23/02 :'''&lt;br /&gt;
Nous étions toujours dans la même situation que Jeudi 19/02, mais nous avons essayé activement de résoudre le problème.  Pendant cette séance, nous avons tout de même amélioré le code Arduino réalisé lors de la toute première séance, afin qu’il puisse traiter tout type d’actionneur.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 25/02 :'''&lt;br /&gt;
Après un changement d’unité centrale, nous avons réussi à tester notre programme. Malheureusement, le code qui fonctionnait lors des séances précédentes (à savoir la récupération des données et leur classement), ne fonctionne plus et nous avons cherché à résoudre le problème. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 26/02: '''&lt;br /&gt;
Nous avons réussi à debugger la première partie du code, en ajoutant des Serial.flush() à notre code Arduino. Malheureusement, même si en général le code fonctionne parfaitement, il reste parfois des bugs, des erreurs de lecture, qui le perturbe. Nous cherchons donc un moyen de résoudre le problème.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Objectifs pour les séances prochaines :''' &lt;br /&gt;
* Tests des différents programmes&lt;br /&gt;
* Réimplantation du code avec le logiciel SOFA&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 6===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 11/03 :'''&lt;br /&gt;
Depuis le début du projet, nous avons utilisé la vitesse de transmission maximale pour un arduino mega qui est 115200 baud mais nous avons pensé à changer cette vitesse et en faisant quelques tests avec d'autres valeurs nous sommes rendues compte que notre marchait bien avec une vitesse de 9600 baud. Et comme sur le logiciel SOFA nous pouvons réglé la vitesse de transmission, nous avons décidé de garder celle-ci même si pour le moment nous ne savons pas exactement pourquoi l'arduino n'envoie pas des données à certaines vitesses.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 13/03 :'''&lt;br /&gt;
Nous avons commencé par installer le logiciel SOFA via ce lien [http://http://www.sofa-framework.org/wordpress/?page_id=166 logiciel SOFA]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17229</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17229"/>
				<updated>2015-02-19T14:22:44Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' Nous avons eu de gros problèmes liés au matériel puisqu'on n'arrivait même plus à recevoir correctement les données de l'arduino via la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17228</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17228"/>
				<updated>2015-02-19T14:14:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 165 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 19/02 :''' Nous avons eu de gros problèmes par rapport au matériel puisqu'on n'arrivait même plus à recevoir correctement les données de l'arduino via la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17166</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17166"/>
				<updated>2015-02-18T15:30:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg|center]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Photov.jpg&amp;diff=17164</id>
		<title>Fichier:Photov.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Photov.jpg&amp;diff=17164"/>
				<updated>2015-02-18T15:28:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17163</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17163"/>
				<updated>2015-02-18T15:28:25Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:photov.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17162</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17162"/>
				<updated>2015-02-18T15:27:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : [[Fichier:[[photo_v.jpg]]]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Photo_v.jpg&amp;diff=17161</id>
		<title>Fichier:Photo v.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Photo_v.jpg&amp;diff=17161"/>
				<updated>2015-02-18T15:26:17Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17160</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17160"/>
				<updated>2015-02-18T15:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : [[Fichier:[[diagramme.jpg]]]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17159</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17159"/>
				<updated>2015-02-18T15:23:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : [[Fichier:[[diagramme_V.jpg]]]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17158</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17158"/>
				<updated>2015-02-18T15:23:29Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : [[Fichier:[[diagramme_v.jpg]]]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17157</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17157"/>
				<updated>2015-02-18T15:21:06Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Semaine 4===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 16/02 :''' Nous avons commencé par regarder le programme qui permet la commande du robot pneumatique afin de vérifier que notre code est assez généralisé pour qu'on puisse commander ce genre de robot également. N'ayant pas de connaissances pré-acquises en c++, nous nous sommes rendues compte qu'il  était plus pratique d'utiliser des vecteurs en C++ plutôt que des tableaux donc nous les avons changé.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 18/02 :''' A cause d'un problème d'incompréhension, nous sommes rendues compte que toutes les caractéristiques des actionneurs peuvent changer et donc même si nous n'avons que 4 types d'actionneurs il fallait prévoir de la place mémoire pour stocker les différentes caractéristiques relative à un même types d'actionneur. Par exemple pour les servomoteurs, suivant les applications, nous ne pouvant pas sauvegarder sur l'arduino l'angle max comme étant un réel mais plutôt comme un tableau avec différentes valeurs potentielles des angles max. Nous allons donc changer notre code en fonction de ces nouvelles spécifications du cahier des charges. Et donc là nous nous situons dans la phase tests et re-vérification du CdCF selon le diagramme en V ci-dessous : [[Fichier:[[interventions_ice_tech.jpg]]]]&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Diagramme.jpeg&amp;diff=17156</id>
		<title>Fichier:Diagramme.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Diagramme.jpeg&amp;diff=17156"/>
				<updated>2015-02-18T15:19:08Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17147</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17147"/>
				<updated>2015-02-18T14:28:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17146</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17146"/>
				<updated>2015-02-18T14:26:30Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01 ; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17145</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17145"/>
				<updated>2015-02-18T14:26:01Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 12/02 :''' Nous avons réussi à faire la transmission et nous avons fini la première partie qui consiste à stocker les caractéristiques sur l’arduino et récupérer les différentes informations via la liaison série pour générer les commandes du robot.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17142</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17142"/>
				<updated>2015-02-18T14:18:39Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                    // Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17141</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=17141"/>
				<updated>2015-02-18T14:18:17Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
* '''Mercredi 11/02 : '''Ayant récupéré les différentes caractéristiques de chaque actionneur, nous avons pensé dans un premier temps à utiliser une structure par actionneur afin de sauvegarder ces caractéristiques sur l’arduino. Mais nous avons constaté par la suite que c’était inutile d'utiliser des librairies supplémentaires et que le programme restait assez clair et lisible même en utilisant de simples variables et donc nous avons adopté cette solution . Et voici un exemple illustrant les servo-moteurs:&lt;br /&gt;
&lt;br /&gt;
                -// Actionneurs type servos moteurs&lt;br /&gt;
                    float diametre_SM = 35.01; // en mm&lt;br /&gt;
                    float angle_min_SM = 15 ; // en deg&lt;br /&gt;
                    float angle_max_SM = 987 ; // en deg&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16900</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16900"/>
				<updated>2015-02-14T11:17:49Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
* '''Mercredi 11/02 : '''&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16812</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16812"/>
				<updated>2015-02-11T21:54:20Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 3 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
===Semaine 3===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 09/02 :''' Après un bref meeting sur les différentes caractéristiques des actionneurs que nous devons prendre en compte, nous avons essayé de récupérer les données reçues par l'arduino et les stocker afin de pouvoir faire les différentes opérations dessus avant de les retransmettre.&lt;br /&gt;
&lt;br /&gt;
'''&lt;br /&gt;
* '''Mercredi 11/02 : '''&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16582</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16582"/>
				<updated>2015-02-07T11:55:37Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16581</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16581"/>
				<updated>2015-02-07T11:55:10Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16580</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16580"/>
				<updated>2015-02-07T11:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet.&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16579</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16579"/>
				<updated>2015-02-07T11:54:02Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 2 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 04/02 :''' Implémentation du code en C++ permettant la lecture sur la liaison série en utilisant la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN] mais en omettant que les données que les données que nous devons envoyer sont récupérer via la simulation SOFA et en les remplaçant par des données codées en dur dans le programme. &lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 05/02 :''' Déboggage du programme en C++ suite à des problèmes liés aux modules devant être installés pour l'utilisation des fonctions de la bibliothèque [http://www.cs.unc.edu/Research/vrpn/vrpn_standard_stuff.html  VRPN]. Nous avons donc réussi à la fin de la journée à envoyer et recevoir des données de l'arduino au pc via la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16372</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16372"/>
				<updated>2015-02-03T15:50:53Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
===Semaine 2===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 02/02 :''' Nous avons récupéré le code de la liaison série déjà utilisé et nous avons commencé à réfléchir à un code nous permettant de lire sur la liaison série.&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16282</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16282"/>
				<updated>2015-01-30T20:21:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Projet de l'inria sur les robots déformables]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16281</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16281"/>
				<updated>2015-01-30T20:19:42Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Semaine 1 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
[https://team.inria.fr/shacra/christian-duriez-research/ Contrôle des robots déformable par la méthode FEM]&lt;br /&gt;
&lt;br /&gt;
[https://hal.inria.fr/hal-00823766/document Control of Elastic Soft Robots based on Real-Time Finite Element Method.Christian Duriez]&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16280</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16280"/>
				<updated>2015-01-30T20:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération des données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations ,concernant les différentes forces et pressions appliquées, du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivants : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnage)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - Actionneurs pneumatiques&lt;br /&gt;
 - Actionneurs hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16279</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16279"/>
				<updated>2015-01-30T19:58:23Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Contexte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe DEFROST (DEFormable RObots Simulation Team) basée à l'INRIA Lille [http://http://www.inria.fr/equipes/defrost équipe Defrost] sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique de notre projet serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs seraient variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération de données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations de forces mais aussi de pressions du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivant : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnages)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - De type pneumatiques&lt;br /&gt;
 - De type hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16278</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16278"/>
				<updated>2015-01-30T19:53:31Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Etapes du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe Defrost basée à l'INRIA sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs sont variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération de données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations de forces mais aussi de pressions du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivant : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnages)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - De type pneumatiques&lt;br /&gt;
 - De type hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel et l'avancement réel de notre projet sous forme d'un diagramme de Gantt : &lt;br /&gt;
[[Fichier:gantt.png]]&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Gantt.png&amp;diff=16277</id>
		<title>Fichier:Gantt.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Gantt.png&amp;diff=16277"/>
				<updated>2015-01-30T19:49:21Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : a téléversé une nouvelle version de « Fichier:Gantt.png »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16276</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=16276"/>
				<updated>2015-01-30T19:34:07Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Objectif du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
&lt;br /&gt;
====Contexte====&lt;br /&gt;
[[Fichier:logoinria.jpg|center]]&lt;br /&gt;
Dans le cadre des recherches de l'équipe Defrost basée à l'INRIA sur les robots déformables, il nous a été demandé de réaliser l'interface entre le robot siliconé contrôlé par un Arduino et un logiciel de simulation. L'équipe de recherche a réalisé une interface qui ne s'applique qu'à ce robot en particulier, celui-ci possédant pour le moment un nombre précis d'actionneurs dont les caractéristiques sont connues. Mais est-il possible d’augmenter ce nombre et de diversifier les actionneurs en conservant un code simple et clair?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi, la problématique serait la suivante : comment transmettre les données de la simulation à un robot dont le nombre et le type d'actionneurs sont variables?&lt;br /&gt;
&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
&lt;br /&gt;
L'objectif est donc de créer une console de configuration / contrôle entre une plate-forme de simulation interactive et un robot en silicone piloté par un Arduino. La difficulté est d'adapter ces informations au type et au nombre d'actionneurs dont peut être composé le robot. Le but est également de produire des codes polyvalents, adaptables à toute configuration. Enfin, il est important de pouvoir avoir accès aux différentes valeurs des actionneurs.&lt;br /&gt;
&lt;br /&gt;
====Description du projet====&lt;br /&gt;
Au cours du projet, nous traiterons 3 différentes parties : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:robot.png|thumb|right|Le robot déformable]]&lt;br /&gt;
&lt;br /&gt;
* La partie simulation, récupération de données du logiciel&lt;br /&gt;
&lt;br /&gt;
* La partie gestion du port série&lt;br /&gt;
&lt;br /&gt;
* La partie gestion de l'Arduino&lt;br /&gt;
&lt;br /&gt;
Vous trouverez ci-dessous les différents détails et objectifs concernant ces parties : &lt;br /&gt;
&lt;br /&gt;
'''Partie simulation'''&lt;br /&gt;
&lt;br /&gt;
Le but est de récupérer les informations de forces mais aussi de pressions du logiciel de simulation, afin de pouvoir les transmettre par la suite. &lt;br /&gt;
&lt;br /&gt;
'''Partie interface port série''' &lt;br /&gt;
&lt;br /&gt;
Dans cette partie les objectifs à atteindre seront les suivant : &lt;br /&gt;
&lt;br /&gt;
* Gérer les vitesses d'envoi des différentes informations&lt;br /&gt;
&lt;br /&gt;
* Adapter les types de données en faisant les calculs de conversion si nécessaire&lt;br /&gt;
&lt;br /&gt;
* Gérer la communication (les périodes d’échantillonnages)&lt;br /&gt;
&lt;br /&gt;
* Permettre l'échange de données dans les deux sens&lt;br /&gt;
&lt;br /&gt;
'''Partie Arduino''' &lt;br /&gt;
&lt;br /&gt;
La partie Arduino devra permettre d'obtenir : &lt;br /&gt;
&lt;br /&gt;
* Des informations sur le nombre d'actionneurs&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de ces actionneurs : &lt;br /&gt;
 - Servos moteurs&lt;br /&gt;
 - De type pneumatiques&lt;br /&gt;
 - De type hydrauliques&lt;br /&gt;
 - SMART Servos (c'est à dire des Servos permettant le contrôle de position, de vitesse et de couple)&lt;br /&gt;
&lt;br /&gt;
* Des informations sur le type de données envisagées&lt;br /&gt;
&lt;br /&gt;
* Des FeedBacks des différents actionneurs, et de capteurs potentiels&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ainsi ce projet consiste à : &lt;br /&gt;
&lt;br /&gt;
* Comprendre l’actuelle configuration du robot&lt;br /&gt;
&lt;br /&gt;
* Créer une interface de contrôle en C pour&lt;br /&gt;
** Calibrer les actionneurs&lt;br /&gt;
**Transmettre les informations de forces/positions&lt;br /&gt;
&lt;br /&gt;
But : Faciliter son utilisation&lt;br /&gt;
&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
&lt;br /&gt;
'''Logiciel :''' &lt;br /&gt;
* Logiciel open source SOFA [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
&lt;br /&gt;
'''Matériel :''' &lt;br /&gt;
* Robot déformable en silicone [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Un Arduino [&amp;lt;span style=&amp;quot;color: green;&amp;quot;&amp;gt;fourni au 28/1/2015 par l'INRIA&amp;lt;/span&amp;gt;]&lt;br /&gt;
* Informations sur les différents actionneurs&lt;br /&gt;
&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
&lt;br /&gt;
Voici le planning prévisionnel concernant notre projet : &lt;br /&gt;
&lt;br /&gt;
* '''Semaines 1-2 :''' Prise en main hardware (plaque et moteur)&lt;br /&gt;
                      - Contrôle d'un Arduino standard et compréhension des codes du robot déformable&lt;br /&gt;
                      -''' 9 février''' : réunion sur l'avancement du projet&lt;br /&gt;
&lt;br /&gt;
* '''Semaines 3-4 :''' Formalisation/standardisation du/des protocole(s)&lt;br /&gt;
&lt;br /&gt;
* '''Semaines 5-6-7 :''' Implémentation et interface port série&lt;br /&gt;
&lt;br /&gt;
* '''Semaines 8-9 :''' Interfaçage avec la simulation&lt;br /&gt;
&lt;br /&gt;
* '''Semaine 10 :''' Tests sur le vrai robot&lt;br /&gt;
&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
&lt;br /&gt;
* '''Lundi 26/01 :''' Nous avons commencé par des recherches sur les travaux de l'INRIA concernant le robot déformable.&lt;br /&gt;
&lt;br /&gt;
* '''Mercredi 28/01 :''' Nous avons pris rendez-vous avec notre tuteur, à l'INRIA, afin de voir le robot et de détailler le cahier des charges. Après la présentation et une réunion afin de définir concrètement le projet, nous avons pu commencer à travailler, en prenant d'abord en main l'Arduino. Ainsi, nous avons essayé de comprendre le code du robot actuel, et nous avons effectué des tests sur des moteurs (autres moteurs que ceux du robot).&lt;br /&gt;
&lt;br /&gt;
* '''Jeudi 29/01''' : Mise en place du cahier des charges de notre projet&lt;br /&gt;
&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=15234</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=15234"/>
				<updated>2014-12-17T19:26:55Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
===Présentation générale du projet=== &lt;br /&gt;
====Contexte====&lt;br /&gt;
====Objectif du projet====&lt;br /&gt;
====Description du projet====&lt;br /&gt;
====Choix techniques : matériel et logiciel====&lt;br /&gt;
===Etapes du projet===&lt;br /&gt;
==Avancement du Projet==&lt;br /&gt;
===Semaine 1===&lt;br /&gt;
...&lt;br /&gt;
== Fichiers Rendus ==&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=15232</id>
		<title>Robot déformable</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Robot_d%C3%A9formable&amp;diff=15232"/>
				<updated>2014-12-17T19:25:57Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : Page créée avec « 1 Cahier des charges 1.1 Présentation générale du projet 1.1.1 Contexte 1.1.2 Objectif du projet 1.1.3 Description du projet 1.1.4 Choix techniques : matériel et logiciel... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;1 Cahier des charges&lt;br /&gt;
1.1 Présentation générale du projet&lt;br /&gt;
1.1.1 Contexte&lt;br /&gt;
1.1.2 Objectif du projet&lt;br /&gt;
1.1.3 Description du projet&lt;br /&gt;
1.1.4 Choix techniques : matériel et logiciel&lt;br /&gt;
1.2 Etapes du projet&lt;br /&gt;
2 Avancement du Projet&lt;br /&gt;
2.1 Semaine 1&lt;br /&gt;
3 Fichiers Rendus&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13558</id>
		<title>Communication série, 2013/2014, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13558"/>
				<updated>2014-06-12T18:26:37Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Transmission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'objectif de ce projet est de réaliser un circuit électronique qui avait pour mission de gérer le port série présent sur la carte FPGA de la NanoBoard (dans les deux sens c'est à dire émission et réception) ainsi que de réaliser une interface de gestion du port série présent sur la Foxboard.&lt;br /&gt;
&lt;br /&gt;
'''Gestion du port série de la Nanoboard'''&lt;br /&gt;
&lt;br /&gt;
Le module RS232 se décompose en deux sous-modules, à savoir une partie émission et une partie réception.&lt;br /&gt;
* un bit start &lt;br /&gt;
* 8 bits de données&lt;br /&gt;
* un bit stop &lt;br /&gt;
* Pas de bit de parité&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Serial-trame.png‎|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* le port série du PC &lt;br /&gt;
&lt;br /&gt;
* le logiciel hyperterminal de windows pour transmettre et recevoir les données&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gestion de la Foxboard'''&lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser une interface Web qui va permettre :&lt;br /&gt;
&lt;br /&gt;
1- d'envoyer une chaine de caractères au port série de la FoxBoard &lt;br /&gt;
&lt;br /&gt;
2- d'afficher les caractères reçus sur ce même port série.&lt;br /&gt;
&lt;br /&gt;
= Organisation du projet =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des taches ==&lt;br /&gt;
&lt;br /&gt;
Nous nous sommes partagés le travail en 2 parties :&lt;br /&gt;
&lt;br /&gt;
1- Partie informatique réalisée par Sandra Hage Chehade et Ghada El Bez&lt;br /&gt;
&lt;br /&gt;
2- Partie électronique réalisée par Romain Imbert et Louis Chauchard&lt;br /&gt;
&lt;br /&gt;
== Progression projet ==&lt;br /&gt;
&lt;br /&gt;
Nous avons consacré la première séance à la compréhension du sujet et à la prise en main des différents outils de travail(La librairie Jquery permettant les requettes Ajax, le logiciel Altium …).&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons essayé de chercher des solutions adéquates pour la transmission et pour la réception que ce soit pour la partie informatique mais également pour la partie électronique.&lt;br /&gt;
&lt;br /&gt;
Enfin, nous avons pu effectuer différents tests afin de vérifier le bon fonctionnement de notre liaison série.&lt;br /&gt;
&lt;br /&gt;
= Partie Informatique =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Mise en situation ==&lt;br /&gt;
&lt;br /&gt;
La partie informatique consiste à réaliser une interface Web qui permet de communiquer avec le port série du serveur. &lt;br /&gt;
Notre site doit être composé d'une seule page HTML qui contient :&lt;br /&gt;
* Une zone de texte pour l'émission.&lt;br /&gt;
* Une zone de texte pour la réception.&lt;br /&gt;
* Un bouton qui permet de commencer.&lt;br /&gt;
Les langages utilisés pour notre interface sont : HTML, JavaScript, PHP. Nous avons aussi utiliser des requêtes Ajax pour combiner tous ces langages. Pour cela, nous avons installé la librairie jQuery.&lt;br /&gt;
Nous avons réalisé d'abord nos test en utilisant un serveur local. Nous avons ensuite copier nos fichiers sur la Foxboard, afin de rendre celle-ci comme un serveur.&lt;br /&gt;
&lt;br /&gt;
''' Séance 1 (07/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Cette séance était consacrée à la compréhension du sujet et à la découverte des différents langages qu'on allait utiliser. Nous avons aussi commencé à faire la page HTML ainsi que quelques fonctions en javascript.&lt;br /&gt;
&lt;br /&gt;
''' Séance 2 (14/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons réalisé les deux fichiers PHP d'émission et de réception. Par contre, en testant en utilisant l'Arduino, on recevait bien des informations mais l'émission des données ne fonctionnait pas.&lt;br /&gt;
&lt;br /&gt;
''' Séance 3 (21/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Nous avons corrigé nos erreurs qui se trouvaient dans notre code. Et nous avons configuré notre Foxboard avec le réseau polytech.&lt;br /&gt;
&lt;br /&gt;
''' Séances supplémentaires '''&lt;br /&gt;
&lt;br /&gt;
Nous avons copié nos fichiers sur la Foxboard. Et nous avons rédigé le wiki.&lt;br /&gt;
== Transmission ==&lt;br /&gt;
Nous avons décidé de commencer par cette partie car elle était plus simple que la partie réception.&lt;br /&gt;
En effet, il suffit d'ouvrir le port série et d'écrire la chaîne de caractères tapée par l'utilisateur dans le port série. Nos avons donc utilisé le language PHP pour réaliser cette mission. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici notre code correspondant :&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;&amp;lt;?php&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération des données de l'url*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; $entree=$_REQUEST['id']; &amp;lt;/font&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ouverture du port série*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; define('SERIAL_DEVICE','/dev/ttyACM0');&lt;br /&gt;
    $f=fopen(SERIAL_DEVICE,'w'); &amp;lt;br/&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ecrire la chaine 'entree' dans le port série */ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; if($f==FALSE) die('fopen\n');&lt;br /&gt;
    if(fwrite($f,&amp;quot;$entree\n&amp;quot;)&amp;lt;=0) die(&amp;quot;fwrite \n&amp;quot;);&amp;lt;br/&amp;gt;&lt;br /&gt;
    fclose($f);&lt;br /&gt;
    &amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;?&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction sera appelée quand l'utilisateur clique sur le bouton 'valider'. En effet, l'appui sur le bouton permet d'appeler une fonction javascript qui, grâce à des requêtes Ajax, va pouvoir enregistrer des données dans l'url. Ainsi, la fonction PHP pourra avoir les données nécessaires. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici le code correspondant à la fonction javascript envoyer() :&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;function envoyer(){&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération de la chaîne de caractères entrée par l'utilisatuer*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt; var chaine = $('#entree').val();                         &lt;br /&gt;
     var parameters={id: chaine}; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt;/*Requête Ajax*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;$.ajax({url: 'envoyer.php', type: 'post', data: parameters});&amp;lt;br/&amp;gt;&lt;br /&gt;
    }&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons pu tester en premier temps la transmission grâce à une carte Arduino qui allume une led pour dire que la carte a bien reçu une information.&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
&lt;br /&gt;
== Implémentation sur la Foxboard ==&lt;br /&gt;
&lt;br /&gt;
= Partie Électronique =&lt;br /&gt;
----&lt;br /&gt;
Comme on a pu le voir précédemment,la valeur par défaut est à l'état haut. L'envoi du bit de start est représenté par le passage de l'état haut à l'état bas. Ensuite les 8 bits de données sont envoyés à chaque front d'horloge et le dernier (10ème bit) correspond au bit de stop qui permet la remise à la valeur par défaut.&lt;br /&gt;
De plus, le bit de poids faible est transmis en tête.&lt;br /&gt;
&lt;br /&gt;
== Émission ==&lt;br /&gt;
&lt;br /&gt;
(Séance 1 et Séance 2)&lt;br /&gt;
 &lt;br /&gt;
Pour la toute première séance, suite au choix définitif du sujet et de sa compréhension, nous avons effectué plusieurs recherches sur le fonctionnement de la liaison série. &lt;br /&gt;
&lt;br /&gt;
Avant de commencer directement sur le projet, nous avons réalisé le tutoriel d'Altium Designer proposé. Ce qui nous a permis de nous familiariser avec l'utilisation de ce logiciel. &lt;br /&gt;
En effet, cela nous a permis de comprendre le fonctionnement de la Nanoboard avec les composants des différentes librairies &amp;quot;FPGA&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons commencé réellement le projet, en nous intéressant dans un premier temps à la partie émission, qui nous semblait plus facile. &lt;br /&gt;
Nous avons rapidement choisi d'utiliser un registre à décalage étant donné que l'on avait eu, au premier semestre, un TP de logique qui permettait de charger des données en parallèle et qui les transmettait ensuite en série.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc débuté avec un montage simple qui comporte les éléments suivants:&lt;br /&gt;
&lt;br /&gt;
* Un registre à décalage SR16CLES pour convertir Parallèle/Série&lt;br /&gt;
&lt;br /&gt;
* Un Configurable Digital IO qui permet de générer les 8 bits de données, reliés au niveau des 8 premières broches du registre à décalage. Les autres sont reliées au VCC. Seule la broche D8 est reliée au GND (masse) pour représenter le bit de start qui est un passage de 1 à 0.&lt;br /&gt;
&lt;br /&gt;
* Des LEDs pour visualiser la bonne conversion parallèle/série &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test, on a pu constater que le registre à décalage fonctionne.&lt;br /&gt;
&lt;br /&gt;
Pour la seconde séance, nous avions prévu de continuer et de terminer la partie émission et si possible de commencer la partie réception.&lt;br /&gt;
&lt;br /&gt;
Nous avons gardé le schéma de la première séance, mais nous avons ajouté en plus la possibilité de sélectionner parmi deux vitesses différentes d'émission (sous conseil de nos professeurs). L'utilisation d'un multiplexeur nous a permis de faire cette sélection.&lt;br /&gt;
&lt;br /&gt;
Il suffit de relier deux générateurs de fréquence sur les deux entrées du multiplexeur. L'appui sur un bouton de type switch, qui doit être complémenté, sélectionne l'une des deux entrées à générer. &lt;br /&gt;
&lt;br /&gt;
On utilise une bascule D afin de mémoriser le premier appui puis lors du deuxième appui, la valeur mémorisée est complémentée. Ce qui permet d'alterner entre les deux vitesses de transmission possibles, à chaque appui du bouton.&lt;br /&gt;
&lt;br /&gt;
De plus,un second bouton switch est utilisé pour le chargement des données parallèles.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Emission_avec_test.png|thumb|800px|center|Émission]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le schéma réalisé, nous avons effectué des tests en envoyant des trames avec le DIO ainsi que les générateurs d'horloge.&lt;br /&gt;
Un générateur d'horloge était configuré pour réaliser une vitesse de transmission de 9600 bauds et un autre générateur d'horloge était configuré pour réaliser une vitesse de 4800 bauds.&lt;br /&gt;
&lt;br /&gt;
Puis nous avons visualisé avec l'analyseur logique ce que nous obtenions sur une broche du port A de la nanoboard.&lt;br /&gt;
On remarque bien le bit de start, représenté par le passage de l'état haut à l'état bas.&lt;br /&gt;
::::::::[[Fichier:Alternance01010.png|thumb|400px|left|Trame de 8 bits alternés 0101 0101]][[Fichier:Trame_0101_0101.png|thumb|350px|center|visualisation à l'analyseur logique]]&lt;br /&gt;
On remarque que l'on reçoit bien les bits alternés à l'envers, ce qui s'explique par le fait que le bit de poids faible est en-tête. L'émission de bits de données fonctionne donc parfaitement.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons de plus, visualisé les fréquences des trames reçues afin de vérifier si nous obtenions bien les deux vitesses de transmissions désirées.&lt;br /&gt;
On constate que la structure fonctionne bien.&lt;br /&gt;
En effet, dès l'appui du bouton, on passe d'une vitesse de transmission de 9600 bauds (9.6 KHz) à une vitesse de transmission de 4800 bauds (4.8 KHZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::::::::[[Fichier:Fréquence_9600Bds.png|thumb|400px|left|visualisation de la vitesse de transmission de 9600 bauds]][[Fichier:Fréquence_4800Bds.png|thumb|400px|center|visualisation de la vitesse de transmission de 4800 bauds]]&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
(Séance 2 et Séance 3)&lt;br /&gt;
&lt;br /&gt;
La partie émission fonctionnant, nous nous sommes penchés sur la partie Réception du système qui est apparue bien plus complexe.&lt;br /&gt;
&lt;br /&gt;
Suite à l'explication de Monsieur Boé, nous avons compris que pour cette partie, il était nécessaire d'utiliser deux générateurs d'horloge de fréquence différente. En effet, si l'on souhaite détecter correctement un bit, il faut se positionner en plein milieu du bit et non pas au niveau d'un front (montant ou descendant) afin d'être sûr de détecter un bit et non une perturbation quelconque. Pour se faire, il faut utiliser une deuxième horloge de fréquence deux fois plus rapide pour pouvoir être au milieu du bit.&lt;br /&gt;
&lt;br /&gt;
On reçoit la trame de 10 bits en série à partir de la broche RS RX. Puis le premier front descendant (correspondant au bit de start) doit être détecté pour démarrer le compteur.&lt;br /&gt;
&lt;br /&gt;
La porte AND donnera un 1 logique lorsque ce front sera détecté et que la valeur du compteur sera inférieure ou égale à 1.&lt;br /&gt;
Ceci va provoquer un front montant au niveau de l’horloge de la bascule D ce qui va permettre le  chargement de la valeur de D en sortie (Q).&lt;br /&gt;
&lt;br /&gt;
Cette sortie va donc permettre la mise en route du compteur (broche CE). Ce compteur est donc comparé à la valeur 10 qui valide l’entrée CE du registre U10 pour permettre le décalage.&lt;br /&gt;
&lt;br /&gt;
Si le compteur est strictement supérieur à 10, l’entrée CE du registre U10 (série vers parallèle) devient donc bloquée et ceci va entraîner le blocage du décalage. &lt;br /&gt;
Au même moment, on remet le compteur à 0 en envoyant un 1 sur son entrée CLR et la sortie Q de la bascule repasse donc à 0 ce qui bloque le compteur U12.&lt;br /&gt;
Si le compteur est supérieur ou égal à 1, l’entrée de sélection du multiplexeur est égale à 1 ce qui va donc changer la fréquence du compteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma final.png|thumb|600px|center|Schéma complet de la partie Émission et Réception]]&lt;br /&gt;
&lt;br /&gt;
Malheureusement, cette seconde partie n'a pas donné de résultats concluants, nous n'avons donc pas pu valider son bon fonctionnement.&lt;br /&gt;
&lt;br /&gt;
= Assemblage =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
En conclusion, la partie informatique fonctionne et la partie électronique seule la partie émission fonctionne convenablement, la partie réception ne donne pas de résultats concluants. Ce qui malheureusement, bloque la possibilité de relier les deux parties du projet...&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13557</id>
		<title>Communication série, 2013/2014, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13557"/>
				<updated>2014-06-12T18:24:32Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Progression projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'objectif de ce projet est de réaliser un circuit électronique qui avait pour mission de gérer le port série présent sur la carte FPGA de la NanoBoard (dans les deux sens c'est à dire émission et réception) ainsi que de réaliser une interface de gestion du port série présent sur la Foxboard.&lt;br /&gt;
&lt;br /&gt;
'''Gestion du port série de la Nanoboard'''&lt;br /&gt;
&lt;br /&gt;
Le module RS232 se décompose en deux sous-modules, à savoir une partie émission et une partie réception.&lt;br /&gt;
* un bit start &lt;br /&gt;
* 8 bits de données&lt;br /&gt;
* un bit stop &lt;br /&gt;
* Pas de bit de parité&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Serial-trame.png‎|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* le port série du PC &lt;br /&gt;
&lt;br /&gt;
* le logiciel hyperterminal de windows pour transmettre et recevoir les données&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gestion de la Foxboard'''&lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser une interface Web qui va permettre :&lt;br /&gt;
&lt;br /&gt;
1- d'envoyer une chaine de caractères au port série de la FoxBoard &lt;br /&gt;
&lt;br /&gt;
2- d'afficher les caractères reçus sur ce même port série.&lt;br /&gt;
&lt;br /&gt;
= Organisation du projet =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des taches ==&lt;br /&gt;
&lt;br /&gt;
Nous nous sommes partagés le travail en 2 parties :&lt;br /&gt;
&lt;br /&gt;
1- Partie informatique réalisée par Sandra Hage Chehade et Ghada El Bez&lt;br /&gt;
&lt;br /&gt;
2- Partie électronique réalisée par Romain Imbert et Louis Chauchard&lt;br /&gt;
&lt;br /&gt;
== Progression projet ==&lt;br /&gt;
&lt;br /&gt;
Nous avons consacré la première séance à la compréhension du sujet et à la prise en main des différents outils de travail(La librairie Jquery permettant les requettes Ajax, le logiciel Altium …).&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons essayé de chercher des solutions adéquates pour la transmission et pour la réception que ce soit pour la partie informatique mais également pour la partie électronique.&lt;br /&gt;
&lt;br /&gt;
Enfin, nous avons pu effectuer différents tests afin de vérifier le bon fonctionnement de notre liaison série.&lt;br /&gt;
&lt;br /&gt;
= Partie Informatique =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Mise en situation ==&lt;br /&gt;
&lt;br /&gt;
La partie informatique consiste à réaliser une interface Web qui permet de communiquer avec le port série du serveur. &lt;br /&gt;
Notre site doit être composé d'une seule page HTML qui contient :&lt;br /&gt;
* Une zone de texte pour l'émission.&lt;br /&gt;
* Une zone de texte pour la réception.&lt;br /&gt;
* Un bouton qui permet de commencer.&lt;br /&gt;
Les langages utilisés pour notre interface sont : HTML, JavaScript, PHP. Nous avons aussi utiliser des requêtes Ajax pour combiner tous ces langages. Pour cela, nous avons installé la librairie jQuery.&lt;br /&gt;
Nous avons réalisé d'abord nos test en utilisant un serveur local. Nous avons ensuite copier nos fichiers sur la Foxboard, afin de rendre celle-ci comme un serveur.&lt;br /&gt;
&lt;br /&gt;
''' Séance 1 (07/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Cette séance était consacrée à la compréhension du sujet et à la découverte des différents langages qu'on allait utiliser. Nous avons aussi commencé à faire la page HTML ainsi que quelques fonctions en javascript.&lt;br /&gt;
&lt;br /&gt;
''' Séance 2 (14/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons réalisé les deux fichiers PHP d'émission et de réception. Par contre, en testant en utilisant l'Arduino, on recevait bien des informations mais l'émission des données ne fonctionnait pas.&lt;br /&gt;
&lt;br /&gt;
''' Séance 3 (21/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Nous avons corrigé nos erreurs qui se trouvaient dans notre code. Et nous avons configuré notre Foxboard avec le réseau polytech.&lt;br /&gt;
&lt;br /&gt;
''' Séances supplémentaires '''&lt;br /&gt;
&lt;br /&gt;
Nous avons copié nos fichiers sur la Foxboard. Et nous avons rédigé le wiki.&lt;br /&gt;
== Transmission ==&lt;br /&gt;
Nous avons décidé de commencer par cette partie car elle était plus simple que la partie réception.&lt;br /&gt;
En effet, il suffit d'ouvrir le port série et d'écrire la chaîne de caractères tapée par l'utilisateur dans le port série. Nos avons donc utilisé le language PHP pour réaliser cette mission. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici notre code correspondant :&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;&amp;lt;?php&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération des données de l'url*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; $entree=$_REQUEST['id']; &amp;lt;/font&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ouverture du port série*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; define('SERIAL_DEVICE','/dev/ttyACM0');&lt;br /&gt;
    $f=fopen(SERIAL_DEVICE,'w'); &amp;lt;br/&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ecrire la chaine 'entree' dans le port série */ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; if($f==FALSE) die('fopen\n');&lt;br /&gt;
    if(fwrite($f,&amp;quot;$entree\n&amp;quot;)&amp;lt;=0) die(&amp;quot;fwrite \n&amp;quot;);&amp;lt;br/&amp;gt;&lt;br /&gt;
    fclose($f);&lt;br /&gt;
    &amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;?&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction sera appelée quand l'utilisateur clique sur le bouton 'valider'. En effet, l'appuie sur le bouton permet d'appeler une fonction javascript qui, grâce à des requêtes Ajax, va pouvoir enregistrer des données dans l'url. Ainsi, la fonction PHP pourra avoir les données nécessaire. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici le code correspondant à la fonction javascrip envoyer() :&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;function envoyer(){&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération de la chaîne de caractères entrée par l'utilisatuer*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt; var chaine = $('#entree').val();                         &lt;br /&gt;
     var parameters={id: chaine}; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt;/*Requête Ajax*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;$.ajax({url: 'envoyer.php', type: 'post', data: parameters});&amp;lt;br/&amp;gt;&lt;br /&gt;
    }&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons pu tester en premier temps la transmission grâce à une carte Arduino qui allume une led pour dire que la carte a bien reçu une information.&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
&lt;br /&gt;
== Implémentation sur la Foxboard ==&lt;br /&gt;
&lt;br /&gt;
= Partie Électronique =&lt;br /&gt;
----&lt;br /&gt;
Comme on a pu le voir précédemment,la valeur par défaut est à l'état haut. L'envoi du bit de start est représenté par le passage de l'état haut à l'état bas. Ensuite les 8 bits de données sont envoyés à chaque front d'horloge et le dernier (10ème bit) correspond au bit de stop qui permet la remise à la valeur par défaut.&lt;br /&gt;
De plus, le bit de poids faible est transmis en tête.&lt;br /&gt;
&lt;br /&gt;
== Émission ==&lt;br /&gt;
&lt;br /&gt;
(Séance 1 et Séance 2)&lt;br /&gt;
 &lt;br /&gt;
Pour la toute première séance, suite au choix définitif du sujet et de sa compréhension, nous avons effectué plusieurs recherches sur le fonctionnement de la liaison série. &lt;br /&gt;
&lt;br /&gt;
Avant de commencer directement sur le projet, nous avons réalisé le tutoriel d'Altium Designer proposé. Ce qui nous a permis de nous familiariser avec l'utilisation de ce logiciel. &lt;br /&gt;
En effet, cela nous a permis de comprendre le fonctionnement de la Nanoboard avec les composants des différentes librairies &amp;quot;FPGA&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons commencé réellement le projet, en nous intéressant dans un premier temps à la partie émission, qui nous semblait plus facile. &lt;br /&gt;
Nous avons rapidement choisi d'utiliser un registre à décalage étant donné que l'on avait eu, au premier semestre, un TP de logique qui permettait de charger des données en parallèle et qui les transmettait ensuite en série.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc débuté avec un montage simple qui comporte les éléments suivants:&lt;br /&gt;
&lt;br /&gt;
* Un registre à décalage SR16CLES pour convertir Parallèle/Série&lt;br /&gt;
&lt;br /&gt;
* Un Configurable Digital IO qui permet de générer les 8 bits de données, reliés au niveau des 8 premières broches du registre à décalage. Les autres sont reliées au VCC. Seule la broche D8 est reliée au GND (masse) pour représenter le bit de start qui est un passage de 1 à 0.&lt;br /&gt;
&lt;br /&gt;
* Des LEDs pour visualiser la bonne conversion parallèle/série &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test, on a pu constater que le registre à décalage fonctionne.&lt;br /&gt;
&lt;br /&gt;
Pour la seconde séance, nous avions prévu de continuer et de terminer la partie émission et si possible de commencer la partie réception.&lt;br /&gt;
&lt;br /&gt;
Nous avons gardé le schéma de la première séance, mais nous avons ajouté en plus la possibilité de sélectionner parmi deux vitesses différentes d'émission (sous conseil de nos professeurs). L'utilisation d'un multiplexeur nous a permis de faire cette sélection.&lt;br /&gt;
&lt;br /&gt;
Il suffit de relier deux générateurs de fréquence sur les deux entrées du multiplexeur. L'appui sur un bouton de type switch, qui doit être complémenté, sélectionne l'une des deux entrées à générer. &lt;br /&gt;
&lt;br /&gt;
On utilise une bascule D afin de mémoriser le premier appui puis lors du deuxième appui, la valeur mémorisée est complémentée. Ce qui permet d'alterner entre les deux vitesses de transmission possibles, à chaque appui du bouton.&lt;br /&gt;
&lt;br /&gt;
De plus,un second bouton switch est utilisé pour le chargement des données parallèles.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Emission_avec_test.png|thumb|800px|center|Émission]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le schéma réalisé, nous avons effectué des tests en envoyant des trames avec le DIO ainsi que les générateurs d'horloge.&lt;br /&gt;
Un générateur d'horloge était configuré pour réaliser une vitesse de transmission de 9600 bauds et un autre générateur d'horloge était configuré pour réaliser une vitesse de 4800 bauds.&lt;br /&gt;
&lt;br /&gt;
Puis nous avons visualisé avec l'analyseur logique ce que nous obtenions sur une broche du port A de la nanoboard.&lt;br /&gt;
On remarque bien le bit de start, représenté par le passage de l'état haut à l'état bas.&lt;br /&gt;
::::::::[[Fichier:Alternance01010.png|thumb|400px|left|Trame de 8 bits alternés 0101 0101]][[Fichier:Trame_0101_0101.png|thumb|350px|center|visualisation à l'analyseur logique]]&lt;br /&gt;
On remarque que l'on reçoit bien les bits alternés à l'envers, ce qui s'explique par le fait que le bit de poids faible est en-tête. L'émission de bits de données fonctionne donc parfaitement.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons de plus, visualisé les fréquences des trames reçues afin de vérifier si nous obtenions bien les deux vitesses de transmissions désirées.&lt;br /&gt;
On constate que la structure fonctionne bien.&lt;br /&gt;
En effet, dès l'appui du bouton, on passe d'une vitesse de transmission de 9600 bauds (9.6 KHz) à une vitesse de transmission de 4800 bauds (4.8 KHZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::::::::[[Fichier:Fréquence_9600Bds.png|thumb|400px|left|visualisation de la vitesse de transmission de 9600 bauds]][[Fichier:Fréquence_4800Bds.png|thumb|400px|center|visualisation de la vitesse de transmission de 4800 bauds]]&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
(Séance 2 et Séance 3)&lt;br /&gt;
&lt;br /&gt;
La partie émission fonctionnant, nous nous sommes penchés sur la partie Réception du système qui est apparue bien plus complexe.&lt;br /&gt;
&lt;br /&gt;
Suite à l'explication de Monsieur Boé, nous avons compris que pour cette partie, il était nécessaire d'utiliser deux générateurs d'horloge de fréquence différente. En effet, si l'on souhaite détecter correctement un bit, il faut se positionner en plein milieu du bit et non pas au niveau d'un front (montant ou descendant) afin d'être sûr de détecter un bit et non une perturbation quelconque. Pour se faire, il faut utiliser une deuxième horloge de fréquence deux fois plus rapide pour pouvoir être au milieu du bit.&lt;br /&gt;
&lt;br /&gt;
On reçoit la trame de 10 bits en série à partir de la broche RS RX. Puis le premier front descendant (correspondant au bit de start) doit être détecté pour démarrer le compteur.&lt;br /&gt;
&lt;br /&gt;
La porte AND donnera un 1 logique lorsque ce front sera détecté et que la valeur du compteur sera inférieure ou égale à 1.&lt;br /&gt;
Ceci va provoquer un front montant au niveau de l’horloge de la bascule D ce qui va permettre le  chargement de la valeur de D en sortie (Q).&lt;br /&gt;
&lt;br /&gt;
Cette sortie va donc permettre la mise en route du compteur (broche CE). Ce compteur est donc comparé à la valeur 10 qui valide l’entrée CE du registre U10 pour permettre le décalage.&lt;br /&gt;
&lt;br /&gt;
Si le compteur est strictement supérieur à 10, l’entrée CE du registre U10 (série vers parallèle) devient donc bloquée et ceci va entraîner le blocage du décalage. &lt;br /&gt;
Au même moment, on remet le compteur à 0 en envoyant un 1 sur son entrée CLR et la sortie Q de la bascule repasse donc à 0 ce qui bloque le compteur U12.&lt;br /&gt;
Si le compteur est supérieur ou égal à 1, l’entrée de sélection du multiplexeur est égale à 1 ce qui va donc changer la fréquence du compteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma final.png|thumb|600px|center|Schéma complet de la partie Émission et Réception]]&lt;br /&gt;
&lt;br /&gt;
Malheureusement, cette seconde partie n'a pas donné de résultats concluants, nous n'avons donc pas pu valider son bon fonctionnement.&lt;br /&gt;
&lt;br /&gt;
= Assemblage =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
En conclusion, la partie informatique fonctionne et la partie électronique seule la partie émission fonctionne convenablement, la partie réception ne donne pas de résultats concluants. Ce qui malheureusement, bloque la possibilité de relier les deux parties du projet...&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13556</id>
		<title>Communication série, 2013/2014, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13556"/>
				<updated>2014-06-12T18:20:51Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Émission */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'objectif de ce projet est de réaliser un circuit électronique qui avait pour mission de gérer le port série présent sur la carte FPGA de la NanoBoard (dans les deux sens c'est à dire émission et réception) ainsi que de réaliser une interface de gestion du port série présent sur la Foxboard.&lt;br /&gt;
&lt;br /&gt;
'''Gestion du port série de la Nanoboard'''&lt;br /&gt;
&lt;br /&gt;
Le module RS232 se décompose en deux sous-modules, à savoir une partie émission et une partie réception.&lt;br /&gt;
* un bit start &lt;br /&gt;
* 8 bits de données&lt;br /&gt;
* un bit stop &lt;br /&gt;
* Pas de bit de parité&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Serial-trame.png‎|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* le port série du PC &lt;br /&gt;
&lt;br /&gt;
* le logiciel hyperterminal de windows pour transmettre et recevoir les données&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gestion de la Foxboard'''&lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser une interface Web qui va permettre :&lt;br /&gt;
&lt;br /&gt;
1- d'envoyer une chaine de caractères au port série de la FoxBoard &lt;br /&gt;
&lt;br /&gt;
2- d'afficher les caractères reçus sur ce même port série.&lt;br /&gt;
&lt;br /&gt;
= Organisation du projet =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des taches ==&lt;br /&gt;
&lt;br /&gt;
Nous nous sommes partagés le travail en 2 parties :&lt;br /&gt;
&lt;br /&gt;
1- Partie informatique réalisée par Sandra Hage Chehade et Ghada El Bez&lt;br /&gt;
&lt;br /&gt;
2- Partie électronique réalisée par Romain Imbert et Louis Chauchard&lt;br /&gt;
&lt;br /&gt;
== Progression projet ==&lt;br /&gt;
&lt;br /&gt;
Nous avons consacré la première séance à la compréhension du sujet et à la prise en main des différents outils de travail(La librairie Jquery permettant les requettes Ajax, le logiciel Altium …).&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons essayé de chercher des solutions adéquates pour la transmission et pour la réception que ce soit pour la partie informatique mais également pour la partie électronique.&lt;br /&gt;
&lt;br /&gt;
Enfin, nous avons pu effectuer différents tests afin de vérifier le bon fonctionnement d'une notre liaison série.&lt;br /&gt;
&lt;br /&gt;
= Partie Informatique =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Mise en situation ==&lt;br /&gt;
&lt;br /&gt;
La partie informatique consiste à réaliser une interface Web qui permet de communiquer avec le port série du serveur. &lt;br /&gt;
Notre site doit être composé d'une seule page HTML qui contient :&lt;br /&gt;
* Une zone de texte pour l'émission.&lt;br /&gt;
* Une zone de texte pour la réception.&lt;br /&gt;
* Un bouton qui permet de commencer.&lt;br /&gt;
Les langages utilisés pour notre interface sont : HTML, JavaScript, PHP. Nous avons aussi utiliser des requêtes Ajax pour combiner tous ces langages. Pour cela, nous avons installé la librairie jQuery.&lt;br /&gt;
Nous avons réalisé d'abord nos test en utilisant un serveur local. Nous avons ensuite copier nos fichiers sur la Foxboard, afin de rendre celle-ci comme un serveur.&lt;br /&gt;
&lt;br /&gt;
''' Séance 1 (07/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Cette séance était consacrée à la compréhension du sujet et à la découverte des différents langages qu'on allait utiliser. Nous avons aussi commencé à faire la page HTML ainsi que quelques fonctions en javascript.&lt;br /&gt;
&lt;br /&gt;
''' Séance 2 (14/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons réalisé les deux fichiers PHP d'émission et de réception. Par contre, en testant en utilisant l'Arduino, on recevait bien des informations mais l'émission des données ne fonctionnait pas.&lt;br /&gt;
&lt;br /&gt;
''' Séance 3 (21/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Nous avons corrigé nos erreurs qui se trouvaient dans notre code. Et nous avons configuré notre Foxboard avec le réseau polytech.&lt;br /&gt;
&lt;br /&gt;
''' Séances supplémentaires '''&lt;br /&gt;
&lt;br /&gt;
Nous avons copié nos fichiers sur la Foxboard. Et nous avons rédigé le wiki.&lt;br /&gt;
== Transmission ==&lt;br /&gt;
Nous avons décidé de commencer par cette partie car elle était plus simple que la partie réception.&lt;br /&gt;
En effet, il suffit d'ouvrir le port série et d'écrire la chaîne de caractères tapée par l'utilisateur dans le port série. Nos avons donc utilisé le language PHP pour réaliser cette mission. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici notre code correspondant :&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;&amp;lt;?php&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération des données de l'url*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; $entree=$_REQUEST['id']; &amp;lt;/font&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ouverture du port série*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; define('SERIAL_DEVICE','/dev/ttyACM0');&lt;br /&gt;
    $f=fopen(SERIAL_DEVICE,'w'); &amp;lt;br/&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ecrire la chaine 'entree' dans le port série */ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; if($f==FALSE) die('fopen\n');&lt;br /&gt;
    if(fwrite($f,&amp;quot;$entree\n&amp;quot;)&amp;lt;=0) die(&amp;quot;fwrite \n&amp;quot;);&amp;lt;br/&amp;gt;&lt;br /&gt;
    fclose($f);&lt;br /&gt;
    &amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;?&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction sera appelée quand l'utilisateur clique sur le bouton 'valider'. En effet, l'appuie sur le bouton permet d'appeler une fonction javascript qui, grâce à des requêtes Ajax, va pouvoir enregistrer des données dans l'url. Ainsi, la fonction PHP pourra avoir les données nécessaire. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici le code correspondant à la fonction javascrip envoyer() :&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;function envoyer(){&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération de la chaîne de caractères entrée par l'utilisatuer*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt; var chaine = $('#entree').val();                         &lt;br /&gt;
     var parameters={id: chaine}; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt;/*Requête Ajax*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;$.ajax({url: 'envoyer.php', type: 'post', data: parameters});&amp;lt;br/&amp;gt;&lt;br /&gt;
    }&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons pu tester en premier temps la transmission grâce à une carte Arduino qui allume une led pour dire que la carte a bien reçu une information.&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
&lt;br /&gt;
== Implémentation sur la Foxboard ==&lt;br /&gt;
&lt;br /&gt;
= Partie Électronique =&lt;br /&gt;
----&lt;br /&gt;
Comme on a pu le voir précédemment,la valeur par défaut est à l'état haut. L'envoi du bit de start est représenté par le passage de l'état haut à l'état bas. Ensuite les 8 bits de données sont envoyés à chaque front d'horloge et le dernier (10ème bit) correspond au bit de stop qui permet la remise à la valeur par défaut.&lt;br /&gt;
De plus, le bit de poids faible est transmis en tête.&lt;br /&gt;
&lt;br /&gt;
== Émission ==&lt;br /&gt;
&lt;br /&gt;
(Séance 1 et Séance 2)&lt;br /&gt;
 &lt;br /&gt;
Pour la toute première séance, suite au choix définitif du sujet et de sa compréhension, nous avons effectué plusieurs recherches sur le fonctionnement de la liaison série. &lt;br /&gt;
&lt;br /&gt;
Avant de commencer directement sur le projet, nous avons réalisé le tutoriel d'Altium Designer proposé. Ce qui nous a permis de nous familiariser avec l'utilisation de ce logiciel. &lt;br /&gt;
En effet, cela nous a permis de comprendre le fonctionnement de la Nanoboard avec les composants des différentes librairies &amp;quot;FPGA&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons commencé réellement le projet, en nous intéressant dans un premier temps à la partie émission, qui nous semblait plus facile. &lt;br /&gt;
Nous avons rapidement choisi d'utiliser un registre à décalage étant donné que l'on avait eu, au premier semestre, un TP de logique qui permettait de charger des données en parallèle et qui les transmettait ensuite en série.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc débuté avec un montage simple qui comporte les éléments suivants:&lt;br /&gt;
&lt;br /&gt;
* Un registre à décalage SR16CLES pour convertir Parallèle/Série&lt;br /&gt;
&lt;br /&gt;
* Un Configurable Digital IO qui permet de générer les 8 bits de données, reliés au niveau des 8 premières broches du registre à décalage. Les autres sont reliées au VCC. Seule la broche D8 est reliée au GND (masse) pour représenter le bit de start qui est un passage de 1 à 0.&lt;br /&gt;
&lt;br /&gt;
* Des LEDs pour visualiser la bonne conversion parallèle/série &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test, on a pu constater que le registre à décalage fonctionne.&lt;br /&gt;
&lt;br /&gt;
Pour la seconde séance, nous avions prévu de continuer et de terminer la partie émission et si possible de commencer la partie réception.&lt;br /&gt;
&lt;br /&gt;
Nous avons gardé le schéma de la première séance, mais nous avons ajouté en plus la possibilité de sélectionner parmi deux vitesses différentes d'émission (sous conseil de nos professeurs). L'utilisation d'un multiplexeur nous a permis de faire cette sélection.&lt;br /&gt;
&lt;br /&gt;
Il suffit de relier deux générateurs de fréquence sur les deux entrées du multiplexeur. L'appui sur un bouton de type switch, qui doit être complémenté, sélectionne l'une des deux entrées à générer. &lt;br /&gt;
&lt;br /&gt;
On utilise une bascule D afin de mémoriser le premier appui puis lors du deuxième appui, la valeur mémorisée est complémentée. Ce qui permet d'alterner entre les deux vitesses de transmission possibles, à chaque appui du bouton.&lt;br /&gt;
&lt;br /&gt;
De plus,un second bouton switch est utilisé pour le chargement des données parallèles.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Emission_avec_test.png|thumb|800px|center|Émission]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le schéma réalisé, nous avons effectué des tests en envoyant des trames avec le DIO ainsi que les générateurs d'horloge.&lt;br /&gt;
Un générateur d'horloge était configuré pour réaliser une vitesse de transmission de 9600 bauds et un autre générateur d'horloge était configuré pour réaliser une vitesse de 4800 bauds.&lt;br /&gt;
&lt;br /&gt;
Puis nous avons visualisé avec l'analyseur logique ce que nous obtenions sur une broche du port A de la nanoboard.&lt;br /&gt;
On remarque bien le bit de start, représenté par le passage de l'état haut à l'état bas.&lt;br /&gt;
::::::::[[Fichier:Alternance01010.png|thumb|400px|left|Trame de 8 bits alternés 0101 0101]][[Fichier:Trame_0101_0101.png|thumb|350px|center|visualisation à l'analyseur logique]]&lt;br /&gt;
On remarque que l'on reçoit bien les bits alternés à l'envers, ce qui s'explique par le fait que le bit de poids faible est en-tête. L'émission de bits de données fonctionne donc parfaitement.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons de plus, visualisé les fréquences des trames reçues afin de vérifier si nous obtenions bien les deux vitesses de transmissions désirées.&lt;br /&gt;
On constate que la structure fonctionne bien.&lt;br /&gt;
En effet, dès l'appui du bouton, on passe d'une vitesse de transmission de 9600 bauds (9.6 KHz) à une vitesse de transmission de 4800 bauds (4.8 KHZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::::::::[[Fichier:Fréquence_9600Bds.png|thumb|400px|left|visualisation de la vitesse de transmission de 9600 bauds]][[Fichier:Fréquence_4800Bds.png|thumb|400px|center|visualisation de la vitesse de transmission de 4800 bauds]]&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
(Séance 2 et Séance 3)&lt;br /&gt;
&lt;br /&gt;
La partie émission fonctionnant, nous nous sommes penchés sur la partie Réception du système qui est apparue bien plus complexe.&lt;br /&gt;
&lt;br /&gt;
Suite à l'explication de Monsieur Boé, nous avons compris que pour cette partie, il était nécessaire d'utiliser deux générateurs d'horloge de fréquence différente. En effet, si l'on souhaite détecter correctement un bit, il faut se positionner en plein milieu du bit et non pas au niveau d'un front (montant ou descendant) afin d'être sûr de détecter un bit et non une perturbation quelconque. Pour se faire, il faut utiliser une deuxième horloge de fréquence deux fois plus rapide pour pouvoir être au milieu du bit.&lt;br /&gt;
&lt;br /&gt;
On reçoit la trame de 10 bits en série à partir de la broche RS RX. Puis le premier front descendant (correspondant au bit de start) doit être détecté pour démarrer le compteur.&lt;br /&gt;
&lt;br /&gt;
La porte AND donnera un 1 logique lorsque ce front sera détecté et que la valeur du compteur sera inférieure ou égale à 1.&lt;br /&gt;
Ceci va provoquer un front montant au niveau de l’horloge de la bascule D ce qui va permettre le  chargement de la valeur de D en sortie (Q).&lt;br /&gt;
&lt;br /&gt;
Cette sortie va donc permettre la mise en route du compteur (broche CE). Ce compteur est donc comparé à la valeur 10 qui valide l’entrée CE du registre U10 pour permettre le décalage.&lt;br /&gt;
&lt;br /&gt;
Si le compteur est strictement supérieur à 10, l’entrée CE du registre U10 (série vers parallèle) devient donc bloquée et ceci va entraîner le blocage du décalage. &lt;br /&gt;
Au même moment, on remet le compteur à 0 en envoyant un 1 sur son entrée CLR et la sortie Q de la bascule repasse donc à 0 ce qui bloque le compteur U12.&lt;br /&gt;
Si le compteur est supérieur ou égal à 1, l’entrée de sélection du multiplexeur est égale à 1 ce qui va donc changer la fréquence du compteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma final.png|thumb|600px|center|Schéma complet de la partie Émission et Réception]]&lt;br /&gt;
&lt;br /&gt;
Malheureusement, cette seconde partie n'a pas donné de résultats concluants, nous n'avons donc pas pu valider son bon fonctionnement.&lt;br /&gt;
&lt;br /&gt;
= Assemblage =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
En conclusion, la partie informatique fonctionne et la partie électronique seule la partie émission fonctionne convenablement, la partie réception ne donne pas de résultats concluants. Ce qui malheureusement, bloque la possibilité de relier les deux parties du projet...&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13555</id>
		<title>Communication série, 2013/2014, TD1</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Communication_s%C3%A9rie,_2013/2014,_TD1&amp;diff=13555"/>
				<updated>2014-06-12T18:16:15Z</updated>
		
		<summary type="html">&lt;p&gt;Gelbez : /* Organisation du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Introduction =&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
L'objectif de ce projet est de réaliser un circuit électronique qui avait pour mission de gérer le port série présent sur la carte FPGA de la NanoBoard (dans les deux sens c'est à dire émission et réception) ainsi que de réaliser une interface de gestion du port série présent sur la Foxboard.&lt;br /&gt;
&lt;br /&gt;
'''Gestion du port série de la Nanoboard'''&lt;br /&gt;
&lt;br /&gt;
Le module RS232 se décompose en deux sous-modules, à savoir une partie émission et une partie réception.&lt;br /&gt;
* un bit start &lt;br /&gt;
* 8 bits de données&lt;br /&gt;
* un bit stop &lt;br /&gt;
* Pas de bit de parité&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Serial-trame.png‎|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Matériel utilisé :&lt;br /&gt;
&lt;br /&gt;
* le port série du PC &lt;br /&gt;
&lt;br /&gt;
* le logiciel hyperterminal de windows pour transmettre et recevoir les données&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Gestion de la Foxboard'''&lt;br /&gt;
&lt;br /&gt;
Il s'agit de réaliser une interface Web qui va permettre :&lt;br /&gt;
&lt;br /&gt;
1- d'envoyer une chaine de caractères au port série de la FoxBoard &lt;br /&gt;
&lt;br /&gt;
2- d'afficher les caractères reçus sur ce même port série.&lt;br /&gt;
&lt;br /&gt;
= Organisation du projet =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Répartition des taches ==&lt;br /&gt;
&lt;br /&gt;
Nous nous sommes partagés le travail en 2 parties :&lt;br /&gt;
&lt;br /&gt;
1- Partie informatique réalisée par Sandra Hage Chehade et Ghada El Bez&lt;br /&gt;
&lt;br /&gt;
2- Partie électronique réalisée par Romain Imbert et Louis Chauchard&lt;br /&gt;
&lt;br /&gt;
== Progression projet ==&lt;br /&gt;
&lt;br /&gt;
Nous avons consacré la première séance à la compréhension du sujet et à la prise en main des différents outils de travail(La librairie Jquery permettant les requettes Ajax, le logiciel Altium …).&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons essayé de chercher des solutions adéquates pour la transmission et pour la réception que ce soit pour la partie informatique mais également pour la partie électronique.&lt;br /&gt;
&lt;br /&gt;
Enfin, nous avons pu effectuer différents tests afin de vérifier le bon fonctionnement d'une notre liaison série.&lt;br /&gt;
&lt;br /&gt;
= Partie Informatique =&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Mise en situation ==&lt;br /&gt;
&lt;br /&gt;
La partie informatique consiste à réaliser une interface Web qui permet de communiquer avec le port série du serveur. &lt;br /&gt;
Notre site doit être composé d'une seule page HTML qui contient :&lt;br /&gt;
* Une zone de texte pour l'émission.&lt;br /&gt;
* Une zone de texte pour la réception.&lt;br /&gt;
* Un bouton qui permet de commencer.&lt;br /&gt;
Les langages utilisés pour notre interface sont : HTML, JavaScript, PHP. Nous avons aussi utiliser des requêtes Ajax pour combiner tous ces langages. Pour cela, nous avons installé la librairie jQuery.&lt;br /&gt;
Nous avons réalisé d'abord nos test en utilisant un serveur local. Nous avons ensuite copier nos fichiers sur la Foxboard, afin de rendre celle-ci comme un serveur.&lt;br /&gt;
&lt;br /&gt;
''' Séance 1 (07/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Cette séance était consacrée à la compréhension du sujet et à la découverte des différents langages qu'on allait utiliser. Nous avons aussi commencé à faire la page HTML ainsi que quelques fonctions en javascript.&lt;br /&gt;
&lt;br /&gt;
''' Séance 2 (14/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons réalisé les deux fichiers PHP d'émission et de réception. Par contre, en testant en utilisant l'Arduino, on recevait bien des informations mais l'émission des données ne fonctionnait pas.&lt;br /&gt;
&lt;br /&gt;
''' Séance 3 (21/05/2014) '''&lt;br /&gt;
&lt;br /&gt;
Nous avons corrigé nos erreurs qui se trouvaient dans notre code. Et nous avons configuré notre Foxboard avec le réseau polytech.&lt;br /&gt;
&lt;br /&gt;
''' Séances supplémentaires '''&lt;br /&gt;
&lt;br /&gt;
Nous avons copié nos fichiers sur la Foxboard. Et nous avons rédigé le wiki.&lt;br /&gt;
== Transmission ==&lt;br /&gt;
Nous avons décidé de commencer par cette partie car elle était plus simple que la partie réception.&lt;br /&gt;
En effet, il suffit d'ouvrir le port série et d'écrire la chaîne de caractères tapée par l'utilisateur dans le port série. Nos avons donc utilisé le language PHP pour réaliser cette mission. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici notre code correspondant :&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;&amp;lt;?php&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération des données de l'url*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; $entree=$_REQUEST['id']; &amp;lt;/font&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ouverture du port série*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt; &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; define('SERIAL_DEVICE','/dev/ttyACM0');&lt;br /&gt;
    $f=fopen(SERIAL_DEVICE,'w'); &amp;lt;br/&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Ecrire la chaine 'entree' dans le port série */ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
    &amp;lt;font size='3'&amp;gt; if($f==FALSE) die('fopen\n');&lt;br /&gt;
    if(fwrite($f,&amp;quot;$entree\n&amp;quot;)&amp;lt;=0) die(&amp;quot;fwrite \n&amp;quot;);&amp;lt;br/&amp;gt;&lt;br /&gt;
    fclose($f);&lt;br /&gt;
    &amp;lt;/font&amp;gt;&lt;br /&gt;
    &amp;lt;font size='3' color='red'&amp;gt;?&amp;gt;&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cette fonction sera appelée quand l'utilisateur clique sur le bouton 'valider'. En effet, l'appuie sur le bouton permet d'appeler une fonction javascript qui, grâce à des requêtes Ajax, va pouvoir enregistrer des données dans l'url. Ainsi, la fonction PHP pourra avoir les données nécessaire. &amp;lt;br/&amp;gt;&lt;br /&gt;
Voici le code correspondant à la fonction javascrip envoyer() :&lt;br /&gt;
&lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;function envoyer(){&amp;lt;/font&amp;gt; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt; /*Récupération de la chaîne de caractères entrée par l'utilisatuer*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt; var chaine = $('#entree').val();                         &lt;br /&gt;
     var parameters={id: chaine}; &amp;lt;br/&amp;gt;&lt;br /&gt;
     &amp;lt;font size='2' color='green'&amp;gt;&amp;lt;i&amp;gt;/*Requête Ajax*/ &amp;lt;/i&amp;gt;&amp;lt;/font&amp;gt;  &lt;br /&gt;
     &amp;lt;font size='3'&amp;gt;$.ajax({url: 'envoyer.php', type: 'post', data: parameters});&amp;lt;br/&amp;gt;&lt;br /&gt;
    }&amp;lt;/font&amp;gt; &amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons pu tester en premier temps la transmission grâce à une carte Arduino qui allume une led pour dire que la carte a bien reçu une information.&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
&lt;br /&gt;
== Implémentation sur la Foxboard ==&lt;br /&gt;
&lt;br /&gt;
= Partie Électronique =&lt;br /&gt;
----&lt;br /&gt;
Comme on a pu le voir précédemment,la valeur par défaut est à l'état haut. L'envoi du bit de start est représenté par le passage de l'état haut à l'état bas. Ensuite les 8 bits de données sont envoyés à chaque front d'horloge et le dernier (10ème bit) correspond au bit de stop qui permet la remise à la valeur par défaut.&lt;br /&gt;
De plus, le bit de poids faible est transmis en tête.&lt;br /&gt;
&lt;br /&gt;
== Émission ==&lt;br /&gt;
&lt;br /&gt;
(Séance 1 et Séance 2)&lt;br /&gt;
 &lt;br /&gt;
Pour la toute première séance, suite au choix définitif du sujet et de sa compréhension, nous avons effectué plusieurs recherches sur le fonctionnement de la liaison série. &lt;br /&gt;
&lt;br /&gt;
Avant de commencer directement sur le projet, nous avons réalisé le tutoriel d'Altium Designer proposé. Ce qui nous a permis de nous familiariser avec l'utilisation de ce logiciel. &lt;br /&gt;
En effet, cela nous a permis de comprendre le fonctionnement de la Nanoboard avec les composants des différentes librairies &amp;quot;FPGA&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Ensuite, nous avons commencé réellement le projet, en nous intéressant dans un premier temps à la partie émission, qui nous semblait plus facile. &lt;br /&gt;
Nous avons rapidement choisi d'utiliser un registre à décalage étant donné que l'on avait eu, au premier semestre, un TP de logique qui permettait de charger des données en parallèle et qui les transmettait ensuite en série.&lt;br /&gt;
&lt;br /&gt;
Nous avons donc débuté avec un montage simple qui comporte les éléments suivants:&lt;br /&gt;
&lt;br /&gt;
Un registre à décalage SR16CLES pour convertir Parallèle/Série&lt;br /&gt;
&lt;br /&gt;
Un Configurable Digital IO qui permet de générer les 8 bits de données, reliés au niveau des 8 premières broches du registre à décalage. Les autres sont reliées au VCC. Seule la broche D8 est reliée au GND (masse) pour représenter le bit de start qui est un passage de 1 à 0.&lt;br /&gt;
&lt;br /&gt;
Des LEDs pour visualiser la bonne conversion parallèle/série &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Suite à ce test, on a pu constater que le registre à décalage fonctionne.&lt;br /&gt;
&lt;br /&gt;
Pour la seconde séance, nous avions prévu de continuer et de terminer la partie émission et si possible de commencer la partie réception.&lt;br /&gt;
&lt;br /&gt;
Nous avons gardé le schéma de la première séance, mais nous avons ajouté en plus la possibilité de sélectionner parmi deux vitesses différentes d'émission (sous conseil de nos professeurs). L'utilisation d'un multiplexeur nous a permis de faire cette sélection.&lt;br /&gt;
&lt;br /&gt;
Il suffit de relier deux générateurs de fréquence sur les deux entrées du multiplexeur. L'appui sur un bouton de type switch, qui doit être complémenté, sélectionne l'une des deux entrées à générer. &lt;br /&gt;
&lt;br /&gt;
On utilise une bascule D afin de mémoriser le premier appui puis lors du deuxième appui, la valeur mémorisée est complémentée. Ce qui permet d'alterner entre les deux vitesses de transmission possibles, à chaque appui du bouton.&lt;br /&gt;
&lt;br /&gt;
De plus,un second bouton switch est utilisé pour le chargement des données parallèles.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Emission_avec_test.png|thumb|800px|center|Émission]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois le schéma réalisé, nous avons effectué des tests en envoyant des trames avec le DIO ainsi que les générateurs d'horloge.&lt;br /&gt;
Un générateur d'horloge était configuré pour réaliser une vitesse de transmission de 9600 bauds et un autre générateur d'horloge était configuré pour réaliser une vitesse de 4800 bauds.&lt;br /&gt;
&lt;br /&gt;
Puis nous avons visualisé avec l'analyseur logique ce que nous obtenions sur une broche du port A de la nanoboard.&lt;br /&gt;
On remarque bien le bit de start, représenté par le passage de l'état haut à l'état bas.&lt;br /&gt;
::::::::[[Fichier:Alternance01010.png|thumb|400px|left|Trame de 8 bits alternés 0101 0101]][[Fichier:Trame_0101_0101.png|thumb|350px|center|visualisation à l'analyseur logique]]&lt;br /&gt;
On remarque que l'on reçoit bien les bits alternés à l'envers, ce qui s'explique par le fait que le bit de poids faible est en-tête. L'émission de bits de données fonctionne donc parfaitement.&lt;br /&gt;
&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
Nous avons de plus, visualisé les fréquences des trames reçues afin de vérifier si nous obtenions bien les deux vitesses de transmissions désirées.&lt;br /&gt;
On constate que la structure fonctionne bien.&lt;br /&gt;
En effet, dès l'appui du bouton, on passe d'une vitesse de transmission de 9600 bauds (9.6 KHz) à une vitesse de transmission de 4800 bauds (4.8 KHZ).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
::::::::[[Fichier:Fréquence_9600Bds.png|thumb|400px|left|visualisation de la vitesse de transmission de 9600 bauds]][[Fichier:Fréquence_4800Bds.png|thumb|400px|center|visualisation de la vitesse de transmission de 4800 bauds]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Réception ==&lt;br /&gt;
(Séance 2 et Séance 3)&lt;br /&gt;
&lt;br /&gt;
La partie émission fonctionnant, nous nous sommes penchés sur la partie Réception du système qui est apparue bien plus complexe.&lt;br /&gt;
&lt;br /&gt;
Suite à l'explication de Monsieur Boé, nous avons compris que pour cette partie, il était nécessaire d'utiliser deux générateurs d'horloge de fréquence différente. En effet, si l'on souhaite détecter correctement un bit, il faut se positionner en plein milieu du bit et non pas au niveau d'un front (montant ou descendant) afin d'être sûr de détecter un bit et non une perturbation quelconque. Pour se faire, il faut utiliser une deuxième horloge de fréquence deux fois plus rapide pour pouvoir être au milieu du bit.&lt;br /&gt;
&lt;br /&gt;
On reçoit la trame de 10 bits en série à partir de la broche RS RX. Puis le premier front descendant (correspondant au bit de start) doit être détecté pour démarrer le compteur.&lt;br /&gt;
&lt;br /&gt;
La porte AND donnera un 1 logique lorsque ce front sera détecté et que la valeur du compteur sera inférieure ou égale à 1.&lt;br /&gt;
Ceci va provoquer un front montant au niveau de l’horloge de la bascule D ce qui va permettre le  chargement de la valeur de D en sortie (Q).&lt;br /&gt;
&lt;br /&gt;
Cette sortie va donc permettre la mise en route du compteur (broche CE). Ce compteur est donc comparé à la valeur 10 qui valide l’entrée CE du registre U10 pour permettre le décalage.&lt;br /&gt;
&lt;br /&gt;
Si le compteur est strictement supérieur à 10, l’entrée CE du registre U10 (série vers parallèle) devient donc bloquée et ceci va entraîner le blocage du décalage. &lt;br /&gt;
Au même moment, on remet le compteur à 0 en envoyant un 1 sur son entrée CLR et la sortie Q de la bascule repasse donc à 0 ce qui bloque le compteur U12.&lt;br /&gt;
Si le compteur est supérieur ou égal à 1, l’entrée de sélection du multiplexeur est égale à 1 ce qui va donc changer la fréquence du compteur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Schéma final.png|thumb|600px|center|Schéma complet de la partie Émission et Réception]]&lt;br /&gt;
&lt;br /&gt;
Malheureusement, cette seconde partie n'a pas donné de résultats concluants, nous n'avons donc pas pu valider son bon fonctionnement.&lt;br /&gt;
&lt;br /&gt;
= Assemblage =&lt;br /&gt;
&lt;br /&gt;
= Conclusion =&lt;br /&gt;
&lt;br /&gt;
En conclusion, la partie informatique fonctionne et la partie électronique seule la partie émission fonctionne convenablement, la partie réception ne donne pas de résultats concluants. Ce qui malheureusement, bloque la possibilité de relier les deux parties du projet...&lt;/div&gt;</summary>
		<author><name>Gelbez</name></author>	</entry>

	</feed>