IMA3/IMA4 2021/2023 P8

De Wiki de Projets IMA
Révision datée du 21 mai 2023 à 22:00 par Drodenbu (discussion | contributions) (Code source)
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

Mener l'étude de l'expression du besoin est incontournable dans tout projet. Cette étude vise à analyser de manière approfondie les besoins et les attentes utilisateurs vis-à-vis de notre projet. Elle nous a permis de regrouper les informations sur les fonctionnalités, caractéristiques, contraintes attendues et de clarifier les objectifs de notre labyrinthe autonome.


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


Pour concrétiser notre projet, nous avons dressé la liste des différentes fonctions de service attendues, classées selon leur niveau d'exigence et leur priorité :

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 Résoudre un labyrinthe Chemin le plus simple 3
F3 Être facilement démontable Démontabilité de la maquette 3
F4 Fournir une alimentation adéquate Autonomie 6h 4
F5 Avoir un coût raisonnable Coût de fabrication 100€ 4
F6 Être pilotable par l'utilisateur Pilotable par l'utilisateur 5

Gestion de projet

Une bonne gestion de projet est nécessaire pour une répartition optimale des tâches dans l'équipe afin de mener à bien notre projet. Dès que nous sommes passés du projet Vanne Piézoélectrique au labyrinthe autonome, nous avons immédiatement réparti les tâches parmi nous en formant des sous-groupes de deux personnes :


  • Nous considérons d'un côté la Partie mécanique, qui regroupe les thématiques telles que la modélisation, le dimensionnement, l'étude cinématique et l'assemblage de la structure de la maquette du labyrinthe. Tout au long de ces deux semestres passés sur ce projet, Antoine et Romain ont travaillé ensemble sur la partie mécanique.


  • D'un autre côté, nous avons défini la Partie Informatique, qui correspond à l'élaboration d'un algorithme pour le contrôle de la balle et pour la résolution automatique de labyrinthe. Cette partie vise également à coordonner tous nos composants entre eux pour former un système complet et sophistiqué. Pendant deux semestres, Dann et Hugo se sont occupés de la partie informatique.


Bien que nous avons défini des sous-groupes de projet, nous avons été amenés à revoir notre planification suite aux obstacles et aux imprévus rencontrés. En raison du changement de projet, nous avons accumulé quelques séances de retard et par conséquent la partie informatique a été mise de côté quelques séances pour avancer le plus rapidement possible sur l'assemblage de notre maquette de labyrinthe.

Pour planifier et assigner les tâches, tout en prenant compte de leur durée, nous avons élaboré un diagramme Gantt prévisionnel pour le semestre 8 dès le changement de projet.

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.

Nous avons en réserve un servomoteur AX-12A, qui est une version améliorée du AX-12+. Comme nous n'en possédons qu'un seul exemplaire, nous avons choisi d'utiliser les AX-12+.

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 câbles XP3 sont conçus spécifiquement pour se brancher à certains servomoteurs Dynamixel. 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

Partie Mécanique

Formation

Modélisation

Réalisation de la maquette

Partie Informatique

En parallèle de la partie mécanique, nous avons avancé sur la partie informatique. Celle-ci concerne l’étude de l’utilisation des servomoteurs, de la caméra et de la carte Arduino. C’est dans cette partie que nous avons développé un système de contrôle de la balle, en implémentant du code sur la carte Arduino qui lie servomoteurs, caméra et asservissement.

Capture d'écran du logiciel RoboPlus

Utilisation des moteurs

Pour notre projet, il est primordial que le contrôle de la balle soit effectué correctement. Pour ce faire, nous utilisons deux servomoteurs AX-12+ de la gamme Dynamixel. Chaque moteur possède un identifiant, ici les identifiants sont 1 et 2. Ces moteurs sont connectés entre eux en cascade, le moteur d’identifiant 1 est directement relié à la carte Arduino. Le contrôle des moteurs est réalisé grâce à la librairie Dynamixel, créée spécialement pour l’utilisation des moteurs de cette gamme. Cette librairie nous offre de nombreuses éventuelles interactions avec chacun des moteurs : Il est par exemple possible de faire tourner les moteurs, soit en renseignant simplement la position ciblée, soit une position à une certaine vitesse. On peut aussi définir un couple maximal ou même préciser si on utilise les moteurs en mode endless, c’est-à-dire sans limite de rotation. Lors des premiers tests que nous avons réalisés pour contrôler les moteurs, nous n’étions pas en mesure de contrôler l’un des moteurs. Notre encadrant M.Conrard nous a donné accès au logiciel RoboPlus, qui nous permet de commander manuellement les moteurs. De plus, ce logiciel nous permet de paramétrer les moteurs et de coder des petits programmes que nous pouvons téléverser directement sur les moteurs grâce à un contrôleur. Nous avons alors pu nous rendre compte que le premier problème que nous avons rencontré était dû à la saisie d’un mauvais identifiant.

Le deuxième souci que nous avons rencontré était de contrôler les moteurs simultanément. Cette fois-ci, nous avons été confronté à plusieurs défauts : d’un côté, il fallait brancher les moteurs en cascade au lieu de brancher chaque moteur directement à la carte Arduino. D’un autre côté, il est nécessaire de mettre un délai entre deux instructions pour chaque moteur. En effet, si le premier moteur n’a pas fini d'exécuter la rotation qu’on lui a imposé, le deuxième moteur ne recevra pas d’autre instruction. Par sécurité et pour assurer que notre projet ne soit pas abîmé pendant son utilisation, nous avons décidé de limiter l’amplitude des moteurs pour que les contraintes mécaniques soient respectées et d’abaisser la valeur du couple maximum des moteurs, car il est arrivé que nous cassions une bielle suite à un mauvais mouvement.

Reconnaissance des couleurs

Capture d'écran du logiciel Pixymon

Pendant le fonctionnement du labyrinthe autonome, la caméra sera constamment en fonctionnement pour suivre la position de la balle sur le plateau rotatif en temps réel. Pour cela, nous possédons une caméra Pixy, capable d’effectuer une reconnaissance des couleurs qu’elle récupère. Dans un premier temps, nous nous sommes concentrés sur le paramétrage de la caméra. Pour ce faire, nous avons utilisé le logiciel Pixymon, spécialement conçu pour avoir le retour image de la caméra et configurer les couleurs à distinguer. Dans notre cas, nous avons une signature pour plusieurs couleurs : du jaune pour la balle, du rose pour le centre du plateau du labyrinthe. Il est important de choisir des couleurs qui se démarquent des autres, afin qu’il n’y ait pas de confusion au niveau de la reconnaissance de couleurs.

Chaque signature est représentée par un paquet de pixel correspondant à un regroupement de pixels de la couleur demandée. A partir de ces paquets, la caméra peut renvoyer la position de chaque regroupement de pixels. C’est de cette manière que nous sommes en mesure de récupérer la position de la balle sur le plateau rotatif.

Asservissement

Ensuite, il fallait réfléchir à comment asservir la position que l’on donne aux moteurs afin que la balle reste au centre du plateau. Pour cela, on a mis en place un PID pour que la balle reste au centre du plateau. Le PID est un algorithme de régulation utilisé dans de nombreux systèmes de contrôle de processus industriels, de véhicules, de drones, de robots et d'autres systèmes électroniques et mécaniques.

Pour l'implémentation de notre asservissement, nous avons réalisé deux boucles de régulation, une pour chaque axe, pour que la balle soit contrôlée sur la totalité du plateau. Chaque boucle possède un PID avec un retour unitaire, la consigne étant la position de la balle sur l'axe correspondant.

Par manque de temps suite au retard que nous avons accumulé avec le changement de projet, nous n'avons pas eu suffisamment de temps pour étudier la dynamique du système. Nous avions envisagé de faire une étude sur Matlab pour trouver avec précision les paramètres du régulateur. Pour aller plus vite et gagner du temps, nous avons ajusté manuellement les paramètres du régulateur. Nous sommes parvenus à obtenir des résultats, mais ceux-ci ne sont pas à la hauteur de nos attentes. On peut citer le manque de réactivité du système. L'implémentation du PID a également été rendue difficile du fait de notre structure qui a tendance à se dévisser, notamment au niveau du support du plateau du labyrinthe.

Algorithme du labyrinthe autonome

Algorithme

Dès le semestre 7, nous avons imaginé un prototype d'algorithme qui comporte d'abord une partie consacrée à l'initialisation du système puis une boucle principale dans laquelle nous allons gérer les moteurs, les informations transmises par la caméra et la résolution du labyrinthe. Nous avons gardé la même structure d'algorithme pour le code final.

Initialisation

Setup labyrinthe.jpg

Ensuite à l’aide la librairie Dynamixel.h (pour les servomoteurs), Pixy.h (pour la caméra) et ppid.h (librairie qu’on l'a créé), nous avons pu réaliser cet algorithme sur Arduino (joint en annexe) afin de pouvoir l’implémenter sur notre ATmega2560. Maintenant que l’algorithme est implanté, on a pu passer à la phase de tests afin de pouvoir déterminer les bons coefficients Kp, Ki et Kd pour que dans un premier temps notre système puisse permettre à la balle de se maintenir au centre du plateau.

Bilan

Bilan du Semestre 7

Bilan du Semestre 8

Après plusieurs mois de travail, notre équipe est fière du résultat de notre projet. Le résultat final est à la hauteur de nos attentes, avec une partie mécanique soigneusement conçue et réalisée pour avoir une allure élégante. Le plateau est équilibré, ce qui nous permet une bonne utilisation de notre projet. Cependant, la partie informatique du projet n’est pas encore totalement fonctionnelle. Bien que nous ayons réussi à établir une communication entre les moteurs et le système informatique, nous avons rencontré des difficultés pour mettre en place un algorithme efficace de maintien de la balle sur le plateau. Malgré ces défis, nous sommes convaincus que notre projet est une réussite. Nous avons toutefois réussi à concevoir et fabriquer une solution innovante au problème que nous nous étions fixé, à savoir le maintien d’une balle sur le plateau.

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é 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

Déclaration des variables et des bibliothèques

Declaration labyrinthe.jpg

Initialisation setup()

Setup labyrinthe.jpg

Boucle principale loop()

Loop labyrinthe.jpg

Position de la balle get_ball_info()

Get ball info labyrinthe.jpg

Obtention du centre du plateau determine_center()

Determine centre labyrinthe.jpg

Base proojet labyrinthe.jpg