IMA4 2016/2017 P34 : Différence entre versions
m (→Semaine 6) |
m (→Fichiers Rendus) |
||
(12 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 | + | !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 | ||
| | | | ||
| | | | ||
| | | | ||
− | |||
− | |||
| | | | ||
| | | | ||
Ligne 283 : | Ligne 264 : | ||
| | | | ||
| | | | ||
+ | |2h30 | ||
| | | | ||
| | | | ||
| | | | ||
|2h30 | |2h30 | ||
+ | |- | ||
+ | |Recherches et bouquinage | ||
| | | | ||
| | | | ||
+ | | | ||
| | | | ||
| | | | ||
| | | | ||
| | | | ||
+ | | | ||
+ | | | ||
+ | |2h | ||
+ | |2h | ||
+ | |13h | ||
+ | |17h | ||
|- | |- | ||
− | | | + | |Simulations / Tests Matlab |
| | | | ||
| | | | ||
Ligne 306 : | Ligne 297 : | ||
|2h | |2h | ||
|2h | |2h | ||
− | | | + | |7h |
− | | | + | |11h |
+ | |- | ||
+ | |Préparation soutenance, récupération des fichier et fin rédaction rapport | ||
| | | | ||
| | | | ||
− | | | + | | |
− | |||
| | | | ||
| | | | ||
− | |||
| | | | ||
| | | | ||
Ligne 321 : | Ligne 312 : | ||
| | | | ||
| | | | ||
+ | |18h | ||
+ | |18h | ||
+ | |- | ||
+ | |TOTAL | ||
|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 421 : | Ligne 427 : | ||
***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\> | ||
− | === | + | ===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\> | ||
+ | *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
Sommaire
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 :
<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é :
- Récupération du code fonctionnel "cercle.slx" :
<br\>
<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\>
<br\>
- Voici le schéma de simulation récupéré :
<br\>
<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.
- 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 :
<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\>
- Modification du schéma de simulation de la commande Matlab Simulink :
<br\>
- Code de génération de la jacobienne inverse avec récupération dans un fichier txt :
- Calcul de la jacobienne inverse : 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 : Lien du fichier texte
- Cinématique directe : Lien du fichier texte
- Géométrique inverse : Lien du fichier texte
- Géométrique directe : 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\>