IMA3/IMA4 2021/2023 P8 : Différence entre versions
(→Expression du besoin) |
(→Expression du besoin) |
||
Ligne 30 : | Ligne 30 : | ||
==Expression du besoin== | ==Expression du besoin== | ||
− | Bien que l'objectif principal était la résolution automatique du labyrinthe, nous avons revu nos objectifs suite aux difficultés rencontrées | + | Bien que l'objectif principal était la résolution automatique du labyrinthe, nous avons revu nos objectifs suite aux difficultés rencontrées : |
* Proposer une solution de résolution d’un labyrinthe à l’utilisateur | * Proposer une solution de résolution d’un labyrinthe à l’utilisateur |
Version du 20 mai 2023 à 23:52
Sommaire
- 1 Résumé
- 2 Présentation générale
- 3 Gestion de projet
- 4 Equipements
- 5 Réalisations et résultats
- 6 Bilan
- 7 Contenu des séances
- 7.1 Résumé des séances
- 7.1.1 Séance du 10 Octobre (Vanne piézoélectrique)
- 7.1.2 Séance du 21 Octobre (Vanne piézoélectrique)
- 7.1.3 Séance du 28 Octobre
- 7.1.4 Séance du 18 Novembre
- 7.1.5 Séance du 21 Novembre
- 7.1.6 Séance du 25 Novembre
- 7.1.7 Séance du 28 Novembre
- 7.1.8 Séance du 8 Décembre
- 7.1.9 Séance du 15 Décembre
- 7.1.10 Séance du 18 Janvier
- 7.1.11 Séance du 25 Janvier
- 7.1.12 Séance du 1er Février
- 7.1.13 Séance du 8 Février
- 7.1.14 Séance du 15 Février
- 7.1.15 Séance du 1er Mars
- 7.1.16 Séance du 8 Mars
- 7.1.17 Séance du 15 Mars
- 7.2 Séances supplémentaires
- 7.1 Résumé des séances
- 8 Annexe
Résumé
Cette page est dédiée au groupe travaillant sur le labyrinthe automatique dans le cadre des projets IMA3/IMA4. Dans cette page, vous trouverez une présentation globale de notre projet, les démarches que nous avons entreprises ainsi que les résultats obtenus.
Présentation générale
Groupe
Nous sommes quatre étudiants en Systèmes Embarqués (SE4) :
- Romain Pouillard
- Hugo Legendre
- Antoine Vion
- Dann Rodenburg (a rejoint le projet au début du Semestre 7)
Contexte
Initialement, nous travaillions sur une autre thématique de projet, qui était la Vanne Piézoélectrique. C'est après avoir rencontré plusieurs problèmes pendant l'avancement de notre projet, que nous nous sommes résolus à changer de sujet pour le labyrinthe automatique. Pour réaliser notre projet, nous avons récupéré la base d'un ancien projet IMA traitant un sujet similaire à celui-ci.
Il est intéressant de chercher à résoudre un labyrinthe. En effet, il est courant de rencontrer des situations qui se rapprochent d'un labyrinthe, telles que ne pas se retrouver sur le plan d'une ville ou d'un bâtiment. Or, la résolution d'un labyrinthe est un cas complexe qui peut vite devenir un casse-tête.
Objectif
Notre objectif est de mettre au point un système de labyrinthe autonome, capable d'amener une balle d'un point A à un point B sans requérir d'intervention humaine. Peut importe sa position de départ, le système doit être capable d'amener la balle jusqu'à la sortie sans problème, quelque soit la complexité du labyrinthe. Nous devrons améliorer le modèle existant en retravaillant la structure du projet, voire créer une nouvelle maquette et repensant l'algorithme de contrôle de la balle. Le contrôle d'une balle sera minutieusement mené avec l'utilisation de nombreuses technologies mises à disposition comme la reconnaissance de couleurs ou des servomoteurs.
Description
Notre labyrinthe doit être capable de déplacer la balle sur un plateau pivotant. Le labyrinthe est placé sur un plateau surélevé grâce à une tige métallique. Par le biais d'un système de deux bielles manivelles, ce plateau peut basculer sur deux axes, ce qui assure le déplacement de la balle sur l'entièreté du plateau. Les bielles sont chacune actionnées par des servomoteurs permettant au plateau de basculer. L'ensemble du projet repose un base sur laquelle est disposé une carte Arduino et la caméra avec son support.
Expression du besoin
Bien que l'objectif principal était la résolution automatique du labyrinthe, nous avons revu nos objectifs suite aux difficultés rencontrées :
- Proposer une solution de résolution d’un labyrinthe à l’utilisateur
- Obtenir un produit facilement modulable et déplaçable pour différente représentation, donc démontable.
Voici la liste des fonctions de service attendues.
N° | Intitulé | Critère | Niveau et limites | Priorité |
---|---|---|---|---|
FP1 | Permettre au système de maintenir la balle sur le plateau | Position de la balle | Déplacer la balle jusqu'à son centre sans la faire tomber | 1 |
Rapidité du système | Déplacer la balle jusqu'à son centre sans la faire tomber | 2 | ||
F2 | Être facilement démontable | Position de la balle | Déplacer la balle jusqu'à son centre sans la faire tomber | 3 |
Gestion de projet
gantt prévisionnel + répartition des tâches
Equipements
Dans cette section, nous allons détailler les différents moyens que nous avons à disposition pour mener à bien notre projet.
Liste des composants
Composant | Image |
---|---|
Carte Arduino Mega 2560 | |
Servomoteurs Dynamixel AX-12+ | |
Caméra Pixy Cam | |
Alimentation réglable 0-9V | |
Câbles X3P | |
Câble de liaison 6 broches |
Cette liste de composant est complétée par des matériaux que nous avons récupérés tels que des plaques de plexiglas et des chutes de bois.
Carte Arduino
La carte Arduino Mega 2560 est la pièce centrale de notre maquette : Les servomoteurs, leur alimentation et la caméra sont reliés à la carte. Basée sur le microcontrôleur ATmega2560, elle offre une grande quantité de broches d'entrées/sorties et supporte de nombreuses interfaces de communication, ce qui lui permet d'être adaptable à la réalisation de notre projet. C'est sur cette carte que se trouve le programme qui contrôle notre système, que l'on peut téléverser depuis un ordinateur.
Servomoteurs
Le montage est composé de deux servomoteurs AX-12+, développés par la société Robotis. Chaque moteur gère l'inclinaison du plateau mobile sur un axe en particulier. Ils sont reliés au labyrinthe via un système bielle manivelle, permettant de transformer le mouvement de rotation du moteur en une translation, ce qui a comme effet de faire basculer le plateau vers le haut et vers le bas. C'est par le biais de ces moteurs que nous pouvons faire se déplacer la balle sur le plateau. Les moteurs sont reliés en cascade à la carte Arduino.
Caméra Pixy
Placée au dessus du plateau du labyrinthe, on retrouve la caméra Pixy Cam qui filme le labyrinthe. La caméra est dotée d'un capteur d'image lui permettant d'effectuer une reconnaissance d'objet en temps réel. Elle est capable de détecter et de suivre la balle et les murs, grâce à une sélection de couleurs, appelée "signature". Par exemple, la balle étant jaune, la caméra associe chaque pixel jaune à la balle. Compatible avec Arduino, il est possible de récupérer dans le code, la position de la balle, le nombre de groupe de couleurs détecté... De plus, il est envisageable de télécharger le logiciel PixyMon pour visualiser sur ordinateur le retour de la caméra et de paramétrer les signatures. Sa petite taille et sa facilité d'utilisation font que la Pixy Cam est un outil indispensable à la réalisation de notre projet.
Câbles XP3
Les servomoteurs étant reliés en cascade avec la carte Arduino, ce sont ces câbles qui assurent les liaisons entre ces derniers.
Câble de liaison 6 broches
Il s'agit du câble qui relie la caméra Pixy Cam et la carte Arduino. Ce câble permet d'alimenter la carte et l'échange de données.
Liste des achats
Composant | Image |
---|---|
Joint de cardan de volet roulant | |
Roulements à bille |
Pour remplacer la liaison tige/plateau mobile, nous avons fait l'achat d'un joint de cardan d'une manivelle de volet roulant. Nous avons également acheté deux roulements à billes pour l'assemblage des bielles manivelles.
Réalisations et résultats
Modélisation
Algorithme
Bilan
Bilan du Semestre 7
Bilan du Semestre 8
Contenu des séances
Les séances dédiées au projet ont repris le 10 Octobre 2022. Lors des deux premières séances, nous avons travaillés sur la Vanne Piézoélectrique.
Résumé des séances
Séance du 10 Octobre (Vanne piézoélectrique)
Nous avons dressé la liste des composants que nous aurions besoin pour notre projet : Un capteur de pression, deux capteurs de débit et deux capteurs de tension. De plus, nous avons commencé à faire des recherches sur les muscles pneumatiques et à regarder quelle carte électronique nous pourrions utiliser.
Séance du 21 Octobre (Vanne piézoélectrique)
Nous avons tenté de faire fonctionner un système de 8 vannes avec un module Dspace que M. Lakhal nous a fourni en vue du projet. Cependant, nous avons manqué de données sur les vannes et la simulation sur Matlab était corrompue. De ce fait, nous n'avons pas été en mesure de contrôler les vannes.
Séance du 28 Octobre
Après avoir passé la majorité de la séance à essayer de faire fonctionner le module Dspace, nous avons cherché une autre alternative pour notre projet : Par manque de temps et de moyens, notre encadrant nous a proposé de changer de projet pour travailler sur le labyrinthe autonome. Nous avons utilisé le reste du temps de la séance à prendre en main notre nouveau projet. Pour répartir au mieux les tâches pour le projet, on a formé deux binômes : l'un formé de Romain et Antoine qui vont s'occuper de la partie mécanique, de l'amélioration du labyrinthe et l'autre formé de Dann et Hugo qui vont écrire le programme du labyrinthe.
Séance du 18 Novembre
Nous nous sommes intéressés au fonctionnement de la caméra Pixycam. Pour avoir accès à la vidéo et aux paramètres de la caméra, nous avons utilisé le logiciel Piximon. Grâce à ce logiciel, nous avons défini plusieurs groupes de couleurs : tous les pixels bleus sont associés à la caméra, et en tant que simple test, du rose pour détecter un mur. On a pris conscience qu'il faudra prendre des couleurs bien distinctes pour bien différencier les différentes parties du labyrinthe. Ensuite, on a lancé le programme présent sur la carte du projet. Pendant l'exécution du programme, la caméra détecte la position de la balle et l'envoie à la carte via une liaison série. En parallèle, nous avons commencé à réfléchir à d'autres moyens pour remplacer la colle qui fixe tous les éléments du montage, dans le but de le rendre plus esthétique et plus robuste.
Séance du 21 Novembre
Pendant cette séance, nous avons étudié le code déjà existant dans la carte. On a remarqué que l'un des servomoteurs ne répondait pas, il s'agissait en fait d'une erreur de port. Puis, on a défini la direction et le sens des axes sur lesquels la balle se déplace. Après cela, on a souligné la nécessité d'initialiser le système de coordonnées du labyrinthe. En effet, si le plateau n'est pas initialement droit ou si la caméra a bougé (ce cas est assez fréquent car la fixation de la caméra n'est pas solide).
Séance du 25 Novembre
L'objectif de cette séance est de comprendre comment commander les servomoteurs avec la librairie DynamixelSerial. Avec la commande moveSpeed(), on peut commander les moteurs en renseignant la position angulaire cible et la vitesse à laquelle le moteur va tourner. Cette commande est intéressante car elle permet de commander un moteur en sélectionnant son identifiant. Cependant, nous n'avons pas réussi à faire fonctionner les deux moteurs en même temps. Lorsque l'on disait aux deux moteurs, d'identifiant 1 et 2, de tourner, seul le moteur 2 répondait. D'un autre côté, on a pensé à remplacer le plateau en bois du labyrinthe par du plexiglas.
Séance du 28 Novembre
Nous avons élaboré les plans d'un nouveau labyrinthe, pour pouvoir ensuite le couper à la découpeuse laser. Cette version du labyrinthe sera plus compliquée que celle que l'on a récupérée. Puis on a résolu le problème avec les servomoteurs de la séance précédente : il s'agissait d'un câble liant l'un des moteurs à la carte qui était défectueux. Contrairement à ce que nous pensions, cela n'était pas dû à un problème provenant du servomoteur, car nous avons emprunté un autre servomoteur et nous étions confronté au même problème. Nous avons donc récupéré un autre câble pour régler le problème.
Séance du 8 Décembre
Ayant encadré le projet que nous avons récupéré, M. Conrard nous a proposé de nous apporter son aide pour le projet. Il nous a montré le logiciel RoboPlus, qui permet de tester en commandant manuellement les moteurs et de changer les variables comme par exemple son identifiant. On est à présent sûr que les problèmes rencontrés précédemment avec les moteurs n'étaient pas dus aux identifiants. Etant donné du retard que nous avons pris, nous nous sommes fixés un objectif intermédiaire, inspiré de la vidéo que M. Lakhal nous a envoyé qui est de garder la balle stable sur un seul axe. Le but est de réussir à manipuler la balle sur un axe, et quand cela sera terminé, il ne restera plus qu'à faire pareil avec l'autre axe pour pouvoir contrôler la balle sur deux axes. RoboPlus permet également d'écrire un programme et de directement l'envoyer vers moteur grâce à un contrôleur. Les exemples de code nous ont permis de comprendre qu'il faut paramétrer les moteurs en mode "joint", c'est-à-dire que la position angulaire des moteurs sera limitée afin de ne pas endommager le plateau du labyrinthe.
Séance du 15 Décembre
On a commencé à écrire un programme permettant de garder une balle en équilibre sur un axe, en utilisant un des servomoteurs.
Séance du 18 Janvier
Nous avons poursuivi l'étude cinématique du projet, dont le dimensionnement de la bielle qui lie le moteur au plateau du labyrinthe. Grâce à la formation au découpage laser au Fabricarium qu'Antoine et Romain ont pu bénéficier , nous avons découpé des plaques de plexiglass pour former la nouvelle base et le nouveau plateau. Enfin, nous avons commencé la simulation d'un PID pour pouvoir ensuite l'implémenter dans notre code.
Séance du 25 Janvier
Après les résultats de notre étude cinématique, nous avons décidé de réaliser un système de bielle-manivelle pour lier les servomoteurs au plateau mobile. Cette solution nous permet de transformer la rotation des moteurs en un mouvement de translation, il sera alors plus facile d'incliner le plateau de cette manière. Côté programmation, nous avons fini l'implémentation du PID en C++. A présent, il faudra que nous trouvons les bons coefficients pour un asservissement optimal.
Séance du 1er Février
Pendant cette séance, nous nous sommes focalisés à quatre sur la partie mécanique du projet, étant donné que nous ne pouvons pas tester notre code sans que la partie mécanique soit terminée. Grâce à l'étude cinématique que nous avons mené, nous connaissons les cotations des bielles et du support du plateau. Nous nous sommes rendus compte qu'il fallait garder un peu de jeu entre le plateau et les bielles qui sont reliées à celle-ci. Une solution que nous avons trouvé est de placer un embout à rotule mâle.
Séance du 8 Février
A présent, ayant une idée des dimensions du projet, nous avons dressé une liste des différents composants que nous utiliserons pour l'assemblage de notre projet. Nous aurons besoin de vis, écrous, roulements à bille, embouts à rotule mâle et un joint de cardan. Les roulements à billes serviront à assurer la liaison pivot entre deux bielles. Le joint de cardan servira de liaison entre la tige et le plateau. Pour ce faire, nous pensons à utiliser une manivelle de volet. Avec la découpeuse laser, nous avons découpé dans une chute de bois une première bielle que nous avons fixé à l'un des moteurs pour avoir un premier aperçu.
Séance du 15 Février
Pour pouvoir découper à la découpeuse laser le support du plateau, les supports des moteurs et les autres bielles, nous les avons modélisés sur ordinateur. Les moteurs seront donc surélevés grâce aux supports, qui seront formés de pièces en bois reliées par des jointures imprimées en 3D grâce aux imprimantes du Fabricarium. Nous avons également continué de découper les bielles à la découpeuse. Compte tenu des modifications que nous avons apporté au projet, nous avons modifié la liste de composants que nous avons dressé précédemment. A la fin de la séance, nous avons pu assembler un système bielle-manivelle entier.
Séance du 1er Mars
Les deux systèmes bielle-manivelle sont prêts à être attachés au projet. Nous avons également découpé le support du plateau. En vue de la prochaine séance, on a modélisé en 3D les pièces qui lieront le support du plateau au plateau pour pouvoir les imprimer et faire l'assemblage.
Séance du 8 Mars
Le dimensionnement des pièces étant terminé, nous sommes passé à l'assemblage du projet avec les pièces déjà prêtes. Le support du plateau est assemblé, ainsi qu'une partie des supports des moteurs, en attendant l'impression des jointures. Nous avons dû découper de nouvelles bielles pour pouvoir encastrer les roulements à bille. Pour cela, il a fallu faire une petite entaille dans la bielle à l'endroit où est encastré le roulement. De cette manière on évite d'ajouter de la colle et notre projet reste facilement démontable.
Séance du 15 Mars
Pendant cette dernière séance de projet, nous nous sommes avisés de terminer le montage de la maquette. Les pièces à imprimer au Fabricarium étant terminées, l'assemblage a pu être terminé cette séance. Nous avons alors lancé quelques tests, mais nous avons remarqué que le plateau mobile ne s'inclinait pas assez et qu'il tournait sur lui même au lieu de basculer sur un axe comme souhaité. Pour remédier à cela, nous avons placé l'orientation des bielles vers l'extérieur et réduit la longueur des bielles.
Séances supplémentaires
Aux séances de projet s'ajoutent des heures de travail réalisé en dehors de l'école. Ce fut par exemple le cas pour implémenter l'algorithme de contrôle de la balle, car on devait attendre que l'assemblage soit terminé avant de pouvoir réaliser les premiers tests.