IMA3/IMA4 2021/2023 P8

De Wiki de Projets IMA
Révision datée du 21 mai 2023 à 09:24 par Drodenbu (discussion | contributions) (Expression du besoin)
Vidéo de présentation de notre projet : Labyrinthe autonome

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

Notre équipe en plein travail...

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.

Résolution d'un labyrinthe

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 suite aux difficultés rencontrées, nos objectifs que nous avons simplifiés :

  • Proposer une solution de résolution de labyrinthe à l’utilisateur
  • Obtenir un produit facilement modulable et déplaçable pour différente représentation, donc démontable.


Schéma bête à corne du projet

Voici la liste des fonctions de service attendues.

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 avec une vitesse de référence sans la faire tomber 2
F2 Être facilement démontable Démontabilité de la maquette 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 Arduino atmega2560.png
Servomoteurs Dynamixel AX-12+ ServoAX12.png
Caméra Pixy Cam Pixycam.png
Alimentation réglable 0-9V Alim reglable 0-9V.png
Câbles X3P Cable 3P 200mm.png
Câble de liaison 6 broches Cable 6 broches.png

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

Montage d'un système bielle manivelle

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 Joint cardan volet.png
Roulements à bille Roulements billes.png

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.

Annexe

Modélisation

Code source

Base proojet labyrinthe.jpg