IMA3/IMA4 2021/2023 P8

De Wiki de Projets IMA
Révision datée du 13 mai 2023 à 10:31 par Drodenbu (discussion | contributions) (Séance du 21 Octobre)

Résumé

Cette page est dédiée au groupe travaillant sur le labyrinthe automatique dans le cadre des projets IMA3/IMA4.

Présentation générale

Groupe

Nous sommes quatre étudiants en Systèmes Embarqués :

  • 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 d'améliorer le fonctionnement de la maquette que nous avons récupéré. Il s'avère que le projet que nous avons récupéré n'est pas complètement opérationnel et qu'il ait besoin que nous retravaillons la partie mécanique et la partie informatique du projet. La finalité est d'avoir un labyrinthe plus complexe, capable d'amener la balle au point d'arrivé quelque soit le point de départ.

Description

Base proojet labyrinthe.jpg

Fonctionnement

Une balle est placée dans le labyrinthe : peut importe sa position de départ, le système doit être capable d'amener la balle jusqu'à la sortie. Une fois la balle arrivée à la sortie, le système stabilise la balle à ce point. Pour faire rouler la balle, le plateau pivote sur deux axes différents.

Le labyrinthe

Le labyrinthe est représenté par une planche en bois, sur laquelle sont collés des murs en bois. C'est sur ce plateau que se déplace la balle.

Les servomoteurs

Le montage est composé de deux servomoteurs AX-12. Chaque moteur est relié au labyrinthe via une tige en métal, ce qui permet de faire basculer le labyrinthe sur deux axes différents. C'est donc avec ces moteurs que nous faisons bouger la balle.

La caméra

Au dessus du plateau du labyrinthe, on retrouve une caméra Pixycam qui filme le labyrinthe. Elle est capable de détecter la balle et les murs, grâce à une sélection de couleur. Par exemple, la balle étant bleue, la caméra associe chaque pixel bleu à la balle.

La carte

Les servomoteurs et la caméra sont reliés à la carte Arduino UNO, sur laquelle se trouve le programme qui contrôle notre système.

Réalisations et résultats

Gestion de projet

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.

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.

Bilan