IMA4 2016/2017 P34 : Différence entre versions
De Wiki de Projets IMA
m (→Avancement du Projet) |
(→Semaine 7) |
||
Ligne 406 : | Ligne 406 : | ||
*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. | *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\> | <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). | + | *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\> | <br\> | ||
+ | |||
===Semaine 8=== | ===Semaine 8=== | ||
<br\> | <br\> |
Version du 9 mai 2017 à 14:18
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
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 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Rendez-vous présentation |
1h |
||||||||||||||
Définition cahier des charges |
1h |
||||||||||||||
Explications complémentaires | 1h | ||||||||||||||
Lecture rapport de stage et thèse | 4h | ||||||||||||||
Récupération, tri, lecture et tests anciens programmes | 5h | 4h | 4h | 1h | |||||||||||
Modification programme pour tester rotations | 2h | ||||||||||||||
Tester programmes | 1h | 1h | |||||||||||||
Rédaction Wiki | 1h | ||||||||||||||
Dont problèmes logiciels | 3h | 1h | |||||||||||||
DEUXIEME PARTIE DU PROJET : PARTIE MODELISATION | |||||||||||||||
Découverte de l'ancien schéma de commande Simulink non commenté | 3h | ||||||||||||||
Compréhension code et schéma de commande | 4h | 1h30 | |||||||||||||
Récupération ancien rapport pour aide à la compréhension | 2h30 | ||||||||||||||
Recherches et bouquinage | 2h | 2h | 8h | 4h | |||||||||||
Simulations / Tests Matlab | 2h | 2h | 4h |
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\>
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\>
- 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 :=
- 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 :