IMA4 2016/2017 P34 : Différence entre versions

De Wiki d'activités IMA
(Semaine 7)
m (Fichiers Rendus)
 
(14 révisions intermédiaires par 2 utilisateurs non affichées)
Ligne 64 : Ligne 64 :
  
 
===Feuille d'heures===
 
===Feuille d'heures===
 
+
<br\>
 +
(A noter que les heures écrites sont les heures travaillées par personne du binôme. Le quota horaire est à multiplier par 2 pour avoir le nombre d'heures total.)
 +
<br\>
 
{| class="wikitable"
 
{| class="wikitable"
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Vacances !! Heures S11 !! Heures S12 !! Total
+
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Heures supplémentaires !! Total par personne approximativement
 
|-
 
|-
 
|  
 
|  
Ligne 83 : Ligne 85 :
 
|
 
|
 
|
 
|
|
+
|1h
|
 
|
 
 
|-
 
|-
 
|Définition cahier des charges  
 
|Définition cahier des charges  
Ligne 101 : Ligne 101 :
 
|
 
|
 
|
 
|
|
+
|1h
|
 
|
 
 
|-
 
|-
 
|Explications complémentaires
 
|Explications complémentaires
Ligne 118 : Ligne 116 :
 
|
 
|
 
|
 
|
|
+
|1h
|
 
|
 
 
|-
 
|-
 
|Lecture rapport de stage et thèse  
 
|Lecture rapport de stage et thèse  
Ligne 135 : Ligne 131 :
 
|
 
|
 
|
 
|
|
+
|4h
|
 
|
 
 
|-
 
|-
 
|Récupération, tri, lecture et tests anciens programmes
 
|Récupération, tri, lecture et tests anciens programmes
Ligne 152 : Ligne 146 :
 
|
 
|
 
|
 
|
|
+
|14h
|
 
|
 
 
|-
 
|-
 
|Modification programme pour tester rotations
 
|Modification programme pour tester rotations
Ligne 169 : Ligne 161 :
 
|
 
|
 
|
 
|
|
+
|2h
|
 
|
 
 
|-
 
|-
 
|Tester programmes
 
|Tester programmes
Ligne 186 : Ligne 176 :
 
|
 
|
 
|
 
|
|
+
|2h
|
 
|
 
 
|-
 
|-
|
 
|
 
 
|
 
|
 
|
 
|
Ligne 220 : Ligne 206 :
 
|
 
|
 
|
 
|
|
+
|1h
|
 
|
 
 
|-
 
|-
 
|Dont problèmes logiciels
 
|Dont problèmes logiciels
Ligne 237 : Ligne 221 :
 
|
 
|
 
|
 
|
|
+
|4h
|
 
|
 
 
|-
 
|-
 
|DEUXIEME PARTIE DU PROJET : PARTIE MODELISATION
 
|DEUXIEME PARTIE DU PROJET : PARTIE MODELISATION
Ligne 256 : Ligne 238 :
 
|
 
|
 
|
 
|
|
+
|3h
|
 
|
 
 
|-
 
|-
 
|Compréhension code et schéma de commande
 
|Compréhension code et schéma de commande
Ligne 273 : Ligne 253 :
 
|
 
|
 
|
 
|
 +
|5h30
 +
|-
 +
|Récupération ancien rapport pour aide à la compréhension
 
|
 
|
 
|
 
|
 
|
 
|
|-
 
|Récupération ancien rapport pour aide à la compréhension
 
 
|
 
|
 
|
 
|
Ligne 283 : Ligne 264 :
 
|
 
|
 
|
 
|
 +
|2h30
 
|
 
|
 
|
 
|
 
|
 
|
 
|2h30
 
|2h30
 +
|-
 +
|Recherches et bouquinage
 
|
 
|
 
|
 
|
 +
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 
|
 +
|
 +
|
 +
|2h
 +
|2h
 +
|13h
 +
|17h
 
|-
 
|-
|Recherches et bouquinage
+
|Simulations / Tests Matlab
 
|
 
|
 
|
 
|
Ligne 306 : Ligne 297 :
 
|2h
 
|2h
 
|2h
 
|2h
|8h
+
|7h
|4h
+
|11h
 +
|-
 +
|Préparation soutenance, récupération des fichier et fin rédaction rapport
 
|
 
|
 
|
 
|
|-
+
|  
|Simulations / Tests Matlab
 
 
|
 
|
 
|
 
|
|
 
 
|
 
|
 
|
 
|
Ligne 321 : Ligne 312 :
 
|
 
|
 
|
 
|
 +
|18h
 +
|18h
 +
|-
 +
|TOTAL
 
|2h
 
|2h
|2h
 
 
|4h
 
|4h
|
+
|9h
|
+
|6h
 +
|4h
 +
|4h
 +
|4h
 +
|4h
 +
|4h
 +
|4h
 +
|4h
 +
|38h
 +
|87h/pers
 
|}
 
|}
  
Ligne 335 : Ligne 338 :
 
*Découverte du lieu de travail
 
*Découverte du lieu de travail
 
*Lecture du rapport de stage de la personne ayant effectué les déplacements en translations sur le robot Hexapod (Valentin CATTIAU)
 
*Lecture du rapport de stage de la personne ayant effectué les déplacements en translations sur le robot Hexapod (Valentin CATTIAU)
 +
<br\>
 +
Schéma du robot hexapod :
 +
[[Fichier:schema_hexapod.png|1000px|center|thumb|Robot Hexapod]]
 
<br\>
 
<br\>
  
Ligne 394 : Ligne 400 :
 
**Nous avons récupéré l'ancien schéma de simulation Simulink fait par Valentin CATTIAU afin d'ajouter nos objectifs, c'est à dire les rotations, ce qui nous permet donc de débuter la partie simulation.  
 
**Nous avons récupéré l'ancien schéma de simulation Simulink fait par Valentin CATTIAU afin d'ajouter nos objectifs, c'est à dire les rotations, ce qui nous permet donc de débuter la partie simulation.  
 
**Début de modification du schéma afin d'y intégrer ces rotations.
 
**Début de modification du schéma afin d'y intégrer ces rotations.
 +
<br\>
 +
*Schéma de la commande donné dans le rapport de Valentin CATTIAU :
 +
<br\>
 +
[[Fichier:schema_commande.png|800px|center|thumb|Schémas Simulink avant et après modifications]]
 
<br\>
 
<br\>
 
*Voici le schéma de simulation récupéré :  
 
*Voici le schéma de simulation récupéré :  
Ligne 399 : Ligne 409 :
 
[[Fichier:simulation_commande_haptique1.png|1200px|center|thumb|Schémas Simulink avant et après modifications]]
 
[[Fichier:simulation_commande_haptique1.png|1200px|center|thumb|Schémas Simulink avant et après modifications]]
 
<br\>
 
<br\>
 +
 
===Semaine 7===
 
===Semaine 7===
 
<br\>
 
<br\>
Ligne 411 : Ligne 422 :
 
===Semaine 8===
 
===Semaine 8===
 
<br\>
 
<br\>
(Poursuite de la semaine 7 + Réception du rapport de projet :=
+
(Poursuite de la semaine 7 + Réception du rapport de projet : [[Media:rapport_cattiau.pdf|Lien rapport Valentin CATTIAU]])
 
*Incohérence entre nos recherches et la réalisation de sa modélisation :
 
*Incohérence entre nos recherches et la réalisation de sa modélisation :
 
**Suite à la comparaison avec nos cours de Robotique 1 et nos recherches, nous avons enfin compris le pourquoi de notre incompréhension de sa modélisation :
 
**Suite à la comparaison avec nos cours de Robotique 1 et nos recherches, nous avons enfin compris le pourquoi de notre incompréhension de sa modélisation :
 
***l'étude cinématique pour lui correspondait à l'étude géométrique pour nous ;
 
***l'étude cinématique pour lui correspondait à l'étude géométrique pour nous ;
 
***l'étude dynamique pour lui correspondait à l'étude cinématique pour nous.
 
***l'étude dynamique pour lui correspondait à l'étude cinématique pour nous.
 +
<br\>
  
===Semaine 9===
+
===Semaines 9, 10 et au delà===
 
+
<br\>
===Semaine 10===
+
*Etudes et recherches effectuées pour la réalisation de nos modèles cinématiques et géométriques.
 +
<br\>
 +
*Modification du schéma de simulation de la commande Matlab Simulink :
 +
**[[Media:haptique_modele_complet.pdf|Lien pour la commande complète du système]]
 +
**[[Media:haptique_robot.pdf|Lien pour le sous-système du robot Hexapod]]
 +
**[[Media:haptique_controle.pdf|Lien pour le sous-système du contrôle de la commande du robot Hexapod]]
 +
**[[Media:haptique_PID.pdf|Lien pour les PID du sous-système du contrôle de la commande du robot Hexapod]]
 +
<br\>
 +
*Code de génération de la jacobienne inverse avec récupération dans un fichier txt :
 +
**Calcul de la jacobienne inverse : [[Media:jacobienne_inverse.pdf|Lien du fichier pdf]]
 +
<br\>
 +
*Modification des codes Matlab des blocs de cinématique et géométrique (Remarque : la jacobienne générée par Matlab étant importante, cela peut expliquer le nombre de lignes important dans les fichiers suivants) :
 +
**Cinématique inverse : [[Media:cinematique_inverse.txt|Lien du fichier texte]]
 +
**Cinématique directe : [[Media:cinematique_directe.txt|Lien du fichier texte]]
 +
**Géométrique inverse : [[Media:geometrique_inverse.txt|Lien du fichier texte]]
 +
**Géométrique directe : [[Media:geometrique_directe.txt|Lien du fichier texte]]
 +
<br\>
 +
*Malgré toutes les recherches effectuées et aides obtenues, nous n'avons pas pu trouver assez d'informations pour compléter notre modèle géométrique direct (temps insuffisant pour le travail à effectuer).
 +
<br\>
  
 
== Fichiers Rendus ==
 
== Fichiers Rendus ==
 +
<br\>
 +
[[Media:P34_Rapport_Projet_Haptique_COFFIN_MARRUCHO_V5.pdf|Lien du rapport de projet]]

Version actuelle datée du 10 mai 2017 à 18:01


Cahier des charges

Contexte Général

Qu'est-ce que l'haptique ?

  • L'haptique est la science du toucher. Elle permet de simuler des sensations comme la forme, la texture d'objets qui existent mais qui ne sont pas présents.


Quelques exemples d'application actuels

  • Ecran tactile (smartphone, tablette), créer du relief pour sentir les touches d'un clavier.
  • Chirurgie à distance, retour de force...

Présentation générale du projet

Actuellement

  • Nous disposons d'une plate-forme à 6 axes de liberté et contrôlée par 6 moteurs pilotés deux à deux.
  • Le programme permettant de contrôler ces moteurs se fait via un Raspberry déjà présent dans la maquette.
  • Un étudiant ayant déjà travaillé sur ce projet a déjà chargé un programme permettant de contrôler les translations Tx, Ty et Tz selon les axes x, y et respectivement z.

Objectif du projet

  • Le but de notre projet est de déplacer une plate-forme pour qu'une personne ayant placé un doigt sur cette surface plane puisse sentir la forme d'un objet. C'est à dire que la plate-forme devra suivre le doigt qu'une personne aura placé dessus tout en restant tangente à celui-ci.

Tâches à réaliser

  • Concernant les déplacements de la plate-forme :
    • Les déplacements en translation suivant x, y et z ont déjà été programmés.
    • Objectif : comprendre comment les déplacements en translation ont été réalisés afin de pouvoir, par la suite, programmer les déplacements en rotation.
  • Réalisation du programme :
    • Pour réaliser le programme permettant la rotation de la plate-forme, nous allons utiliser le logiciel Matlab / Simulink.
    • Utilisation d'un modèle mathématique pour pouvoir tester notre travail sur ordinateur.
    • Programmer dans le Raspberry avec un code C réalisé avec Matlab qui traduit notre simulation mathématique.

Exemple d'application de notre projet

  • Créer l'illusion de la présence d'une orange en sentant sa forme arrondie et sa texture en utilisant uniquement un plan sans relief.

Environnement général et tuteurs

Lieu de travail principal

  • IRCICA, 50 Avenue du Halley à Villeneuve-d'Ascq

Tuteurs du projet

  • Betty SEMAIL
  • Frédéric GIRAUD
  • Laurent GRISONI

Choix techniques : matériel et logiciel

  • Logiciel principalement utilisé :
    • Matlab / Simulink
  • Matériel fourni :
    • Maquette : interface plate-forme à 6 axes de liberté
    • Raspberry
  • Matériel à acheter :
    • Aucun matériel nécessaire

Calendrier prévisionnel

Calendrier

  • Présentation du contexte et du projet. Définition du cahier des charges.
    • Prise de contact par mail le 29-11-2016 ;
    • Rencontre le 13-12-2016 pour présentation du projet à l'IRCICA.
  • Première séance à l'IRCICA : Mercredi 25 Janvier

Feuille d'heures

<br\> (A noter que les heures écrites sont les heures travaillées par personne du binôme. Le quota horaire est à multiplier par 2 pour avoir le nombre d'heures total.) <br\>

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Heures supplémentaires Total par personne approximativement

Rendez-vous présentation

1h

1h
Définition cahier des charges

1h

1h
Explications complémentaires 1h 1h
Lecture rapport de stage et thèse 4h 4h
Récupération, tri, lecture et tests anciens programmes 5h 4h 4h 1h 14h
Modification programme pour tester rotations 2h 2h
Tester programmes 1h 1h 2h
Rédaction Wiki 1h 1h
Dont problèmes logiciels 3h 1h 4h
DEUXIEME PARTIE DU PROJET : PARTIE MODELISATION
Découverte de l'ancien schéma de commande Simulink non commenté 3h 3h
Compréhension code et schéma de commande 4h 1h30 5h30
Récupération ancien rapport pour aide à la compréhension 2h30 2h30
Recherches et bouquinage 2h 2h 13h 17h
Simulations / Tests Matlab 2h 2h 7h 11h
Préparation soutenance, récupération des fichier et fin rédaction rapport 18h 18h
TOTAL 2h 4h 9h 6h 4h 4h 4h 4h 4h 4h 4h 38h 87h/pers

Avancement du Projet

Semaine 1

<br\> Séance du mercredi :

  • Découverte du lieu de travail
  • Lecture du rapport de stage de la personne ayant effectué les déplacements en translations sur le robot Hexapod (Valentin CATTIAU)

<br\> Schéma du robot hexapod :

Robot Hexapod

<br\>

Semaine 2

<br\> Séance du lundi (3h):

  • Découverte et premiers aperçus des programmes/code Simulink avec Michel AMBERG et Frédéric GIRAUD
  • Impossibilité d'ouvrir les fichiers Simulink, problèmes de compilation avec Matlab :
    • On a donc dû réinstaller Matlab, ce qui a pris beaucoup de temps.

<br\> Séance du mercredi (4h):

  • Michel AMBERG nous a montré comment compiler les différents programmes avec Matlab. Cependant, la compilation Matlab entraînait directement le lancement du programme sur le Raspberry PI 3B, donc nous devions effectuer la commande "kill" depuis le terminal dans le Raspberry.
  • Nous avons ensuite effectué une copie du fichier "reset.sh" permettant d'initialiser les codeurs sur les positions fixées par l'utilisateur sur le robot Hexapod. Pour cela, nous plaçons des cales en plexiglas afin de permettre d'avoir un angle à peu près identique au niveau de chaque codeur. Ces positions étant nécessaires à l'utilisation des programmes réalisés par notre prédécesseur.
  • Dans un second temps, nous avons débuté la répartition des anciens programmes dans des sous-dossiers afin de s'organiser au mieux. En même temps, nous avons compilé les programmes pour voir ceux qui peuvent encore fonctionner (certaines parties de programme sont communes sur plusieurs programmes, si elles ont été modifiées pour un programme plus récent, les anciennes versions ne fonctionnerons plus).

<br\> Séance du jeudi (2h):

  • Suite de la répartition du mercredi
  • Création d'un tableau de suivi permettant de savoir à quoi correspondent chaque fichier et les GPIO du raspberry.

<br\>

Semaines 3 et 4

<br\>

  • Durant ces séances, nous avons étudié le code réalisé par Valentin CATTIAU (code non commenté), afin de comprendre ce qu'il avait réalisé.
  • A partir de cette recherche, nous avons pu déterminer quels étaient les programmes fonctionnels et ceux non utilisables. Cela nous a permis de poursuivre notre tableau de suivi démarré en semaine 2.

<br\>

  • Afin de pouvoir libérer notre poste de travail (utilisé par une autre personne), nous avons dû changer de PC. Cependant, le package de Matlab Simulink pour travailler avec un Raspberry s'installait mais n'était pas utilisable. Cela nous a donc un peu ralenties dans la poursuite de notre travail d'étude du projet.

<br\>

Semaine 5

<br\>

  • Dans un premier temps, nous avons terminé la phase de tri des fichiers non utilisés.

<br\>

  • Modification code existant :
    • Récupération du code fonctionnel "cercle.slx" :
      • Initialement, les moteurs étaient contrôlés deux à deux en utilisant un unique capteur de position par groupe de deux moteurs (moteurs 1-2, 3-4 et 5-6).
      • Notre modification consiste à récupérer les valeurs des six capteurs pour contrôler nos six moteurs indépendamment.
    • Ce que nous avons réalisé :

<br\>

Schémas Simulink avant et après modifications

<br\>

  • Tests :
    • Problème rencontré : suite au détachement des bras, qui étaient reliés deux à deux par un petit tube transparent , nous avons remarqué que les mouvements ne sont plus synchronisés. En effet, nous observions un léger décalage entre deux bras commandés à l'identique.
    • Nous avons donc relancé l'exécutable initial afin de voir si le problème persistait, et en effet, ce problème existait déjà mais comme les deux bras étaient reliés, un moteur en entraînait un autre.

<br\> Vidéo avec les bras liés deux à deux : Lien vidéo <br\> <br\> Vidéo avec les bras détachés : Lien vidéo <br\> <br\>

  • Objectif prochaine séance : comprendre le phénomère, peut être consigne erronée (couple différents), ou dû à la succession envoi des données.

<br\>

Semaine 6

<br\>

  • Changement d'objectif :
    • Nous avons récupéré l'ancien schéma de simulation Simulink fait par Valentin CATTIAU afin d'ajouter nos objectifs, c'est à dire les rotations, ce qui nous permet donc de débuter la partie simulation.
    • Début de modification du schéma afin d'y intégrer ces rotations.

<br\>

  • Schéma de la commande donné dans le rapport de Valentin CATTIAU :

<br\>

Schémas Simulink avant et après modifications

<br\>

  • Voici le schéma de simulation récupéré :

<br\>

Schémas Simulink avant et après modifications

<br\>

Semaine 7

<br\> (Poursuite de la semaine 6)

  • A l'aide du rapport de stage du précédent étudiant et de nos cours de Robotique 1 avec monsieur MERZOUKI, nous avons essayé de comprendre ce qui avait été réalisé. Cependant, nous avons rencontré des difficultés concernant plusieurs points.

<br\>

  • Avec nos recherches sur internet et dans le cours de Robotique 1, nous avons essayé de comprendre le travail réalisé. Nos difficultés ont été principalement l'étude de la dynamique et cinématique (directes et inverses). Les données entrées/sorties de chaque bloc ne correspondait pas à ce que nous aurions du effectivement avoir.

<br\>

  • Objectif pour la prochaine séance : récupération du rapport de projet car la modélisation du robot avait été réalisée dans le cadre d'un projet de master 2 et non du stage, donc le rapport de stage était incomplet pour aider à la compréhension (code Matlab non commenté et rapport de stage faisant des rappels au rapport de projet, cependant nous n'avons pas le rapport de projet).

<br\>

Semaine 8

<br\> (Poursuite de la semaine 7 + Réception du rapport de projet : Lien rapport Valentin CATTIAU)

  • Incohérence entre nos recherches et la réalisation de sa modélisation :
    • Suite à la comparaison avec nos cours de Robotique 1 et nos recherches, nous avons enfin compris le pourquoi de notre incompréhension de sa modélisation :
      • l'étude cinématique pour lui correspondait à l'étude géométrique pour nous ;
      • l'étude dynamique pour lui correspondait à l'étude cinématique pour nous.

<br\>

Semaines 9, 10 et au delà

<br\>

  • Etudes et recherches effectuées pour la réalisation de nos modèles cinématiques et géométriques.

<br\>

<br\>

  • Code de génération de la jacobienne inverse avec récupération dans un fichier txt :

<br\>

<br\>

  • Malgré toutes les recherches effectuées et aides obtenues, nous n'avons pas pu trouver assez d'informations pour compléter notre modèle géométrique direct (temps insuffisant pour le travail à effectuer).

<br\>

Fichiers Rendus

<br\> Lien du rapport de projet