Projet Integration 18_resumes_personnels - dudleydehenau/Ephec GitHub Wiki
Résumés personnels
Rôle de chaque membre
Dudley De Henau
Rôle et tâches réalisées
Mon rôle au sein du projet a été varié, je me suis aussi bien appliqué sur des points d'électronique que de développement Web. Les tâches réalisées sont :
-
Construction et gestion du bras robotique :
- Assemblage des différentes parties du bras robotique.
- Tests des moteurs individuellement pour s'assurer de leur bon fonctionnement.
- Gestion de l’alimentation électrique :
- Identification des besoins en puissance.
- Recherche et sélection de nos besoins.
-
Page web de modification :
Création d’une page web de modification pour pouvoir mettre à jour les informations des composants, notamment leur nom, leur quantité, et leur valeur (exemple : 50 ohms pour une résistance). -
Reconnaissance d’image et entraînement du modèle :
- Entraînement d’un modèle de reconnaissance d’image pour détecter des composants électroniques.
- Exploration des performances offertes par les cartes graphiques NVIDIA (technologie CUDA) pour optimiser l’entraînement.
- Mise en œuvre de techniques d’augmentation de dataset :
- Augmentation du volume de données pour un meilleur apprentissage.
- Modifications des images (ajustement de l’éclairage, rotations, etc.) pour garantir une détection fiable dans des conditions difficiles.
Temps consacré au projet
En moyenne, j’ai consacré 7 à 10 heures par semaine au projet.
Appréciation des tâches
- J’ai apprécié la diversité des tâches. J'ai énormément appris en électronique et autant dans le développement dynamique avec une base de données permettant de stocker et gérer les images en dehors du site web.
- La contrainte de temps a parfois rendu certaines étapes plus stressantes, notamment lorsque plusieurs éléments critiques devaient être finalisés en parallèle.
Difficultés rencontrées
- La gestion du temps a été un défi constant en raison de l'ampleur du projet.
- Chaque étape, comme la gestion de l'alimentation électrique ou l’entraînement du modèle, était essentielle et nécessitait une attention immédiate, ce qui ajoutait une pression. Si ce n'était pas fait, il était souvent impossible d'avancer sur la suite.
Suggestions pour l’avenir
- Adapter la portée des projets à la durée impartie pour permettre un travail plus fluide et approfondi.
Conclusion
J'ai finalement énormément appris et j'ai appris à me concentrer sur les deadlines. J'ai appris à laisser les gens s'occuper de leurs tâches sans me rendre malade, ce qui a rendu la dynamique du groupe plus fluide que pour les autres projets auxquels j'ai pu participer.
Rapport de Travail - Truong Timothy
Rôle et Tâches
Durant le développement du projet, j'ai eu l'opportunité de me diversifier dans la réalisation de mes tâches, que ce soit dans la partie site web, la gestion du bras robotique, ou encore la détection de composants. Voici les tâches que j'ai réalisées :
1. Inventaire de composants sur la page d'accueil
J'ai développé, en Angular, une grille composée de cartes affichant dynamiquement chaque composant présent dans la base de données. Les informations affichées incluent :
- Nom
- Type
- Quantité
2. Page Paramètres
J'ai conçu les formulaires de base et implémenté les fonctions CRUD associées pour connecter les formulaires aux actions à réaliser dans la base de données (DB). Mon travail sur cette page a été complété par l'apport de Patrycia.
3. Supabase
Ma contribution à la base de données était relativement limitée, car Bruno avait déjà mis en place l'essentiel. J'ai cependant ajouté :
- Une table
- Des politiques pour les opérations CRUD
- Un bucket
4. Détection de composants
J'ai contribué à la détection de composants en recherchant des modèles fonctionnels pour les composants électroniques. Une fois le modèle validé, j'ai fourni une version 0.0 de la détection de composants, fonctionnant via une API à ce stade.
5. Bras Robotique
C'est la tâche à laquelle j'ai consacré le plus de temps. Après avoir laissé la partie détection à Bruno, je me suis pleinement impliqué dans la gestion du bras robotique avec Maxime. Nous avons travaillé de longues heures pour obtenir un système fonctionnel, malgré plusieurs obstacles, tels que :
- Servomoteurs défectueux
- Mauvais choix de librairies
- Création d'un fichier URDF
Finalement, nous avons obtenu un résultat très satisfaisant : notre script gère correctement les points définis en amont.
6. Liaison Bras Robotique - Site Web / Détection de Composants
J'ai assisté Maxime dans cette tâche, travaillant en parallèle sur le Raspberry Pi. Nous avons rencontré de nombreux problèmes (dépendances, librairies, etc.), mais avons fini par opter pour l'utilisation de WebSockets avec uvicorn
.
Appréciation
J'ai adoré travailler sur la partie électronique du projet. Cela a été une première expérience concluante en robotique.
Difficultés
La partie visant à connecter les différents composants du projet au bras robotique a été extrêmement éprouvante. Installer PyTorch sur un système 32 bits, par exemple, a été particulièrement difficile.
Conclusion
Je suis satisfait du résultat final. Même si le projet ne couvre pas toutes les fonctionnalités imaginées au départ, il est entièrement fonctionnel. Ce fut un grand soulagement de voir le bras bouger comme nous le souhaitions.
Je suis également très content du travail des autres membres de l'équipe et je remercie particulièrement Maxime pour son soutien durant les moments difficiles. (Plus jamais PyTorch...)
Rapport de Travail - Maxime Bongartz
Rôle et tâches réalisées
1) Page historique
J’ai conçu et développé la page historique en HTML, CSS et TypeScript, basée sur un objet contenant toutes les informations liées à un tri. Cette page affichait ces données de manière claire et organisée. Cependant, il restait pas mal de choses à faire, nottement l’intégration avec la base de données. Comme j’ai ensuite concentré tous mes efforts sur le développement du robot, Guillaume a repris cette page pour faire les modifications et ajouts nécessaires.
2) Fonctionnement du robot
Avec Timothy, nous avons pris en charge le bras robotique (assemblé par Dudley, mais non fonctionnel à ce moment-là) et avons commencé à travailler dessus rapidement. Après un mois de travail intensif, nous avons obtenu un tri complet automatisé, activé via un simple clic sur le site web.
Étapes principales du projet :
-
Faire bouger les servomoteurs :
J’ai emporté le robot chez moi durant un week-end prolongé de quatre jours pour travailler sur le contrôle des servos et réussir à le faire bouger. -
Déplacement du bras de A à B :
Nous avons initialement voulu utiliser la bibliothèqueikpy
, qui permet de déplacer le robot sur un plan réel en spécifiant des coordonnées en centimètres. Pour cela, nous avons modélisé le bras en 3D. Cependant, après plusieurs essais, nous n'arrivions pas à faire fonctionner tout ça et c'était trop complexe. Nous avions déjà passé trop de temps dessus, donc nous avons simplifié le projet en optant pour un tri des composants un par un. -
Création d’un script de mouvement :
Nous avons développé un script permettant au bras de se déplacer vers différents points précis :- Boîte de tri
- Boîte de résistances
- Boîte de LED
- Boîte de condensateurs
- Boîte de transistors
-
Mise en place du site sur le Raspberry Pi :
Nous avons installé le site sur le Raspberry Pi et donc il a fallu installer toutes les dépendances. -
Intégration de l’IA :
Nous avons ajouté une caméra pour permettre à l'IA de détecter les composants à trier. Cette IA a été intégrée au script de contrôle du robot, qui déplace le bras vers les boîtes correspondantes. Ainsi, il devenait possible de lancer un tri complet depuis le Raspberry Pi : le robot détectait un composant, puis le déposait au bon endroit. -
Création d’une API :
Nous avons développé une API avec FastAPI sur le Raspberry Pi, permettant de lancer un tri via un appel API. Nous avons utilisé des websockets pour récupérer, en temps réel, les composants triés côté Angular. Finalement, tout était prêt pour déclencher un tri directement depuis le site web.
Appréciation des tâches
J’ai beaucoup aimé travailler sur le robot avec Timothy à l’EPHEC. Malgré les nombreuses frustrations causées par les problèmes rencontrés, les résultats finaux ont été très gratifiants.
Difficultés rencontrées
Nous avons fait face à de nombreuses difficultés pour rendre le robot fonctionnel, voici une petite sélection:
-
Spasmes du bras robotique :
À un moment, le bras avait des mouvements erratiques, nous avons règlé ce problème avec l'aide de monsieur De Smeth. -
Compatibilité de l’IA sur le Raspberry Pi :
Nous utilisions un modèle d’IA au format.pt
basé sur PyTorch. Cependant, cette bibliothèque n’était pas compatible avec le système 32 bits du Raspberry Pi. Nous avons donc dû migrer le système vers une version 64 bits pour résoudre ce problème.
Conclusion
Ce projet m’a permis d’apprendre énormément, et les résultats obtenus étaient très satisfaisants. J’ai adoré travailler dessus, mais cela m’a demandé énormément de temps et d’efforts.
Rapport de Travail - Patrycja Drewnowska
Rôle et Tâches
Pour le projet j'ai uniquement travaillé sur la partie web. Voici une liste de toutes les choses que j'ai fais:
1. Maquette du site web
Avec le site figma, j'ai réalisé une maquette de ce à quoi allais ressembler notre site web. J'ai essayer de détaillé le plus possible toutes les pages et fonctionnalité qu'on voulais avoir dans notre page web.
2. Squelette du site web
J'ai réalisé le squelette du site web en angular, c'est à dire que j'ai créer l'environnement de base sur lequel on allait tous travailler. J'ai créer la barre de navigation du haut, où on peut naviguer entre les différentes pages web du site. J'ai également créé la barre de notification qui se trouve à gauche de la page. J'ai rencontré de nombreux problèmes pour faire le CSS de ces 2 barre lattérale, mais au fur et à mesur que le projet avancait, j'ai réussi à résoudre la pluspart de mes problèmes de disposition de la page.
3. Page Démarrer
J'ai ensuite travailler sur la page 'Démarrer' qui est la page qui permet de démarrer le robot et donc le tri. Un tri ne peu pas être lancé tant qu'un utilisateur n'a pas été sélectionné. J'aurais bien aimé pouvoir améliorer cette page et y ajouter 2 ou 3 fonctionnalité mais par manque de temps je n'ai pas pu le faire. Je suis tout de même contente du résultat de cette page.
4. Les notification
J'ai également travaillé sur les notifications de notre page web. Etant donné que notre page ne permet pas uniquement de trier des composant mais également d'afficher un inventaire de tous les composant et du stock disponible, nous avons pensé à mettre en place un système de notifications qui permet à un utilisateur d'être averti lorsque le stock de composant est faible pour certains composants.
J'ai également créer des notification qui avertissent l'utilisateur que un tri est en cours, lorsqu'un tri est en cours et j'ai également créer une notification lorsque le bras robot à un problème. Malheureusement je n'ai pas eu le temps de faire en sorte que ces notification apparaissent au moment du tri ou lors d'un problème.
5. Page Paramètres
Timothy a fait toute la structure de la page paramètres et après cela je l'ai un peu améliorée :
- J'ai amélioré le CSS pour rendre la page belle et cohérente avec le reste du site
- J'ai fais en sorte que lorsque l'utilisateur soumet une nouvelle valeur, il reçoit un message de confirmation que ça à bien été enregistré
6. Page Composant
J'ai aider à améliorer le CSS de la page composant et j'ai fait en sorte que les composant avec une faible quantité soit mis en évidence
6. Page Paramètres ajout d'un nouveau composant
J'ai fais en sorte que depuis la page paramètres un utilisateur puisse ajouter un nouveau composant avec une nouvelle image, son type et sa valeur.
Appréciation
J'ai beaucoup aimé faire ce travail, j'y ai appris à faire beaucoup de nouvelles choses.
Difficultés
J'ai eu des difficultées comme je l'ai dis plus haut à faire ne sorte d'avoir une notification au moment du tris en cours.
Conclusion
Je suis contente du travail que j'ai fait et du travail des autres membres de mon groupe. Le projet est moins avancé que ce qu'on aurais voulu mais je suis très contente du résultat. L'ambiance de travail dans le groupe était bonne et j'ai appris beaucoup de nouvelles choses.
Rapport de Travail - Detilleux Bruno
Rôle et tâches réalisées
Lors de la conception de ce fabuleux Projet j'ai eu l'occasion de travailler sur différents aspects qui m'ont beaucoup appris.
Ces différents points sont les suivants :
1. Conception de la Base de Données Supabase :
- Schéma Relationnel : J'ai conçu une première ébauche de la base de données sur papier sur base des EPICs et US que nous avions établis. Ensuite après révision et correction avec Timothy je l'ai donc mise en application dans Supabase en créant les tables et les attributs selon mon modèle.
- Règles RLS : Ces règles ont une importance élevées dans l'établissement d'une base de données avec Supabase car ce sont ces règles qui permettent de régir des restrictions ou des accès à certaines données dans la base de données. Par défaut tout étant en mode bloqué.
- Normalisation : J'ai ensuite pu éliminer les potentiels redondances et réduire la complexité de la base de données.
C'était la première fois pour moi que je concevais de A à Z une base de données sur base de simples descriptions utilisateur. Cela m'a servis à entrainer ma logique et je n'en ressort que plus grand de cette expérience.
2. Services d'appel à l'API (SupabaseCRUD et SupabaseAUTH) :
- Les deux services : Ces deux services fait en Angular ont pour but de permettre une communication entre le Front-end et l'API/la base de données donc le Back-end.
- Les premières fonctions CRUD : J'ai conçu les premières fonctions (à but de debuging) du service SupabaseCRUD qui permettaient les opérations de base Create, Read, Update, Delete.
- La création du service SupabaseAUTH : Ce service étant important dans notre cas car il permet l'authentification auprès de l'API de la base de données Supabase, sans ça nous y avons pas accès. Ce service va juste permettre une connexion à l'API en utilisant en réalité la derrière la clé d'API ainsi qu'une URL, le tout sauvegardé dans des variables d'environnements.
- Les premiers essais avec la page Composant : J'ai fais les ajouts nécessaire au niveau de la page Composant permettant de pouvoir commencer à communiqué avec l'API et la DB via le Front-end.
3. La Reconnaissance d'Image avec le modèle YOLO :
- Les recherches d'un modèle adéquat et d'un Dataset : J'ai effectué beaucoup de recherches à l'aide de Timothy sur un outil, un modèle à utiliser dans notre cas et nous avions bien galéré. Pour se faire on avait trouvé une version d'un modèle qui fonctionnait via une API, le problème étant qu'on avait un nombre limiter de requêtes par mois. C'est ainsi qu'on a décidé d'entrainer notre modèle nous même sur base de Dataset que l'on a longuement cherché.
- Création des versions du modèle YOLO : Après moultes recherchent j'ai trouvé plusieurs Dataset que j'ai passé à Dudley, et il a alors entrainé plusieurs modèles sur ses Dataset que j'ai ensuite essayé pour tester leur efficacité.
- Amélioration du programme : Sur base du premier programme en python que Timothy avait élaboré et qui faisait appel à l'API du service que l'on avait trouvé, je suis reparti sur la base de celui-ci pour créer un programme 100% autonome utilisant notre modèle entrainé et affichant les Bounding Boxes correctement à l'écran en plus du taux de confiance.
- Détection et détermination du problème de la caméra externe AZ Delivery avec le Raspberry Pi : Après beaucoup d'heures à essayer toute sorte de solution il s'est avéré que j'ai découvert que la caméra sur laquelle on comptait était en réalité défectueuse... Par chance je m'en suis rendu compte à temps et avec les autres membres de l'équipe nous avons pu trouver une solution.
- Découverte des dépendances de PyTorch et de leur non compatibilité sur les Systèmes d'Exploitation 32 bits : Comme Timothy et Maxime j'ai également remarqué que les dépendances PyTorch n'était pas compatible sur les architecture 32bits. Ce qui fut fort embêtant car la librairie
ultralytics
se repose sur cette dépendances et que donc nous étions dans l'incapacité de pouvoir tester le modèle de Reconnaissances d'Image sur le Raspberry Pi.
4. Configurations et installations dépendances sur Raspberry Pi :
- Terminer la configuration d'Ubuntu : Suite aux problèmes lié à la dépendance à PyTorch nous avons décidé d'installer un autre OS et c'est ainsi que Dudley à installé Ubuntu et qu'il avait commencé la configuration de celui-ci mais n'a pas su la terminé. C'est ainsi que j'ai donc finalisé la configuration.
- Installation du Site Web et de toutes les dépendances : Après la configuration d'Ubuntu j'ai installé le Site eb sur le Raspberry Pi et installé toutes les dépendances de celui-ci (en réglant des problèmes de compatibilité encore).
- Installation du programme de Reconnaissance d'Image ainsi que du modèle entrainé : J'ai ensuite installé, sur le Raspberry Pi, le programme de Reconnaissance d'Images ainsi que les librairies et toutes les dépendances lié à celui-ci. J'ai également installé le modèle entrainé. Pour terminer j'ai dû faire quelques calibrations au niveau de la configuration pour l'utilisation de la caméra.
5. Coordinateur à mes heures perdues :
- J'avais pris l'habitude de souvent être derrière un petit peu tout le monde pour savoir où en étais chacune des tâches du projet, refaire un état des lieux concernant les tâches les plus prioritaires du Projet. Je mettais des récapitulatif de ce qu'il fallait encore faire, en bref j'avais un peu l'habitude d'être un peu comme le secrétaire. J'ai tout fait pour essayer d'établir une bonne communication au sein de l'équipe (ce qui n'était pas une mince à faire).
Appréciation des tâches
J'ai vraiment apprécié travailler sur ce Projet très ambitieux même si je le gout d'avoir fais trop peu ou du moins pas assez touché à de tâches / aspect différents. J'aurais aimé travailler un peu plus sur le Site Web en tant que tel ou bien travailler sur le programme de Gestion du Bras. Rien empèche que j'ai quand même appris beaucoup de choses.
Difficultés rencontrées
Concernant les difficultés rencontrées il y en a eu plusieurs tel que des problèmes de compatibilités avec des librairies, des problèmes de sécurité avec le Front-end et le Back-end qui bloquait absolument tout, des problèmes de traitement d'images sur base d'un Dataset pas assez varié ce qui nous limitait dans nos tests,... et encore pleins d'autres.
Conclusion
En conclusion j'ai bien aimé travailler sur ce projet même si j'ai le sentiment d'avoir plus écris des rapports, review, messages, etc que réellement apporté des ajouts au projet en tant que tel. J'aurais aimé en faire encore plus mais le manque de temps et les autres projets en parallèle n'ont pas facilités ma gestion du temps. Cela n'empêche que j'ai appris beaucoup de choses durant l'élaboration de ce Projet et notament l'importance d'une bonne communication au sein d'une équipe.
Rapport de Guillaume Delferiere
Rôle et tâches réalisés
Pour le projet, mon rôle a été principalement sur le site web même si j'ai eu l'occasion d'aider de temps en temps là où l'aide se faisait sentir. Voici la liste des tâches que j'ai réalisé durant ce projet :
Page Historique
J'ai repris la page Historique que Maxime avait codé. Pour la rendre dynamique avec la base de données, il restait beaucoup de chose à faire et ça m'a donc pris pas mal de temps notamment car je ne maitrisais pas bien au début les outils avec lesquels nous travaillions. J'ai beaucoup travaillé sur le code HTML et le code TypeScript concernant cette page car le CSS était déjà bien malgré quelques retouches pour que tout soit bien aligné ainsi que les nouveaux éléments que j'ai apporté depuis la base de données.
Rapport RSE
J'ai géré pratiquement tout le coté RSE avec l'aide de Bruno sur la fin. J'ai donc écrit une grande partie du brouillon de notre rapport et je me suis chargé de toute la mise en page. J'ai aussi assuré le contact avec les bac 1 de marketing car je connaissais une des personnes de ce groupe
Appréciation des tâches
Une fois que j'ai réussi à prendre les outils en main, j'ai adoré pouvoir travailler sur l'interface web. J'ai énormément appris sur le développement d'interface web dynamique et j'ai vraiment apprécié l'aide que j'ai pu recevoir des membres du groupes. Après beaucoup de difficultés, je suis très satisfait que ma partie de l'interface web fonctionne correctement.
Difficultés rencontrées
Le fait d'arriver dans un projet en cours et de ne pas vraiment en connaitre les membres a été pour moi quelque chose d'assez difficile. N'ayant pas eu le cours de Dev 2 ni Dev 3, j'ai eu du mal à pouvoir réellement commencer directement à travailler sur le projet d'autant plus que j'ai beaucoup de mal à demander de l'aide aux gens que je connais pas très bien. La page historique m'a donné pas mal de fil à retordre car la base de données a eu quelques soucis sans que je ne le remarque et donc je ne comprennais pas pourquoi mon code ne fonctionnait pas. Après quelques heures à chercher ce qui n'allait pas, j'ai découvert le problème dans la base de données et l'ait signalé à Bruno. Le fait aussi que la page Historique Hardcodée était fort différente de ce que je pouvais retrouver dans la base de données, m'a fait un peu repartir de zéro et m'a pris pas mal de temps.
Conclusion
En conclusion, j'ai aimé travaillé sur ce projet. Je regrette cependant ne pas avoir pu faire plus de choses par manque de temps et manque de connaissance car l'ambiance était vraiment saine pour apprendre. Je regrette aussi parfois le manque de communication qu'à pu avoir l'équipe à certains moment même si l'ambiance était toujours au rendez-vous. J'ai donc énormément appris durant ce projet et j'ai vraiment adoré y participé