Projet Rob3 - Cléo, Léon, Adam, Anass, Valentin, Marianne
Objectif Général
Durant ce projet, nous souhaitons réaliser un robot muni d'une pince capable de se déplacer dans une arène en partant d'une position fixe pour aller chercher un totem dont la position est approximativement connue et venir le redéposer à un autre endroit de l'arène.
Lien vers l’énoncé détaillé: https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1660
Liens utiles (sujet, codes, pieces...):
https://drive.google.com/drive/folders/14LajcKTP-gMjvzBnxbDHBuGncc4ly4fF?usp=sharing
Planning
Afin d'avoir un planning structuré et facile à suivre, nous avons mis en place un diagramme de Gantt où vous pouvez voir les tâches précises qui composent chaque pôle, qui a participé à ces tâches et sur combien de séances elles sont étalées.
Lien vers le Diagramme de Gantt
Séance 1 12/02/2026
Dans le cadre de notre première séance, on s'est familiarisé avec le projet. On a réparti les rôles pour une résolution ordonnée du problème :
Chef de projet : Cléo SAUVENAY,
Responsable du Wiki : Marianne RODRIGUEZ,
Responsable informatique : Valentin BOUR,
Responsable mécanique : Adam ABDENNADHER,
Responsable électronique : Léon CHERPITEL,
Pôle Mécanique
Travail réalisé (ADAM, MARIANNE et VALENTIN): La modélisation du robot commence par un châssis triangulaire à deux angles tronqués, permettant de fixer les moteurs des roues sur des plaques perpendiculaires et la roue folle à la pointe. Une tige assure l'alignement des roues, bien qu'elle puisse être absente ou ajustée dans le modèle final pour permettre la rotation.
Dans ce premier modèle la pince fonctionne via un système pignon-crémaillère : une plaque dentée coulisse dans une encoche et s'engrène avec une roue dentée entraînée par le moteur, assurant le mouvement vertical.
Enfin, deux capteurs de distance sont prévus : un sur le côté pour surveiller la trajectoire par rapport aux murs, et un au-dessus de la pince pour détecter la distance avec le totem.
Schéma du châssis, du système pignon-crémaillère et du montage des roues sous le châssis.
Schéma dimensionné avec placement des différents composants (carte Arduino, batterie, etc.)
Travail pour la prochaine séance : Un premier prototype en papier reprenant les dimensions complètes du robot.
Pôle Informatique
Travail pour la prochaine séance : Se familiariser avec la documentation et réfléchir à des structures de programmes.
Pôle Électronique
Travail réalisé (ANASS et CLÉO): On a vérifié, comme demandé par les enseignants, le bon fonctionnement de tout l'équipement électrique durant les 2 premières heures, en suivant les instructions du PDF fourni par les référents. Lors de la dernière heure, nous avons discuté de la direction que le groupe allait prendre concernant le robot ainsi que de l'organisation du projet.
Séance 2 29/03/3026
Pôle Mécanique
Travail réalisé (ADAM et MARIANNE): Durant cette séance, nous avons reconsidéré le modèle défini lors de la séance précédente. Nous nous sommes rendu compte que le système pignon-crémaillère prévu pour manipuler la pince était trop complexe à mettre en œuvre. Nous avons donc décidé de changer de stratégie et d'opter pour un bras de type levier avec la pince à son extrémité. Nous avons ensuite réfléchi aux pièces nécessaires pour ce nouveau système :
Schéma du montage de la pince et de son encastrement dans le châssis
C'est ainsi que nous avons commencé la modélisation du bras (fixé au moteur et auquel la pince est attachée) ainsi que du support permettant de fixer le moteur au châssis sur SolidWorks, afin de pouvoir ensuite l'imprimer en 3D.
(CLÉO): En même temps, nous avons commencé à nous familiariser avec la découpeuse laser dans le but de déterminer les bonnes cotes au cas où nous devrions faire des encastrements. Pour avoir un trou de 3 mm, il faut mettre 2,8 sur SolidWorks, et pour avoir un bon encastrement, il faut faire 3,02, donc une différence de 0,22.
Pôle Informatique
Objectif de la séance : Définir l'architecture générale du programme de navigation du robot.
Travail réalisé (Anas, Léon, Valentin): L'équipe informatique s'est réunie pour établir les grandes lignes du programme, en se concentrant sur trois fonctions centrales : le suivi de mur (longer un obstacle de manière stable), l'atteinte du totem (guider le robot jusqu'à la cible) et le retour au point de dépôt.
Les primitives de déplacement ont également été définies : déplacement en ligne droite, rotation sur place ou en arc, correction de trajectoire, ainsi que la récupération et le dépôt du totem.
Pour chaque fonction, un organigramme a été réalisé afin de modéliser la logique de contrôle, permettant de :
- visualiser clairement les séquences d'opérations ;
- identifier les conditions et branchements nécessaires ;
- préparer une base solide pour l'implémentation.
Algorithme de déplacement du robot
1. Avancer de X cm puis tourner à 90° droite
Fin : mouvement / rotation des roues = terminé
2. Avancer en gardant une distance à droite de 30 cm
Fin : distance avant = X cm
3. Tourner à 90° gauche
Fin : mouvement / rotation des roues = terminé
4. Avancer en gardant une distance à droite de 30 cm
Fin : distance avant = X2 cm
5. → Répéter l'étape 2
6. → Répéter l'étape 3
7. → Répéter l'étape 2
8. → Répéter l'étape 3
9. Avancer en gardant une distance à droite de 30 cm
Fin : nb de tours de roue atteint
10. Lâcher le totem
Paramètres : X = distance avec le mur en face, X2 = distance avec le totem.
Pôle Électronique
Travail réalisé (Anass et Léon): Concernant le pôle électronique, nous avons connecté deux câbles entre l’Arduino et le contrôleur moteur en les soudant, puis en les sécurisant avec une gaine thermorétractable. Nous avons ensuite ajouté un bornier afin de simplifier et d’optimiser les branchements. Enfin, le câblage des moteurs vers l’Arduino a été réalisé.
Séance 3 2/04/2026
Pole Mécanique:
Travail réalisé (Cléo): Modélisation du châssis sur SolidWorks avec les trous prévus pour le placement des composants, le passage et la gestion des câbles. Découpe au laser dans une plaque de MDF 6 mm. Après test d'alignement, plusieurs ajustements ont été identifiés : augmenter légèrement le diamètre des trous pour les vis M3 fixant la carte Arduino, réduire l'écart entre les deux trous centraux, positionner les trous de fixation du moteur du bras en diagonale plutôt qu'en ligne afin d'éliminer le jeu, et ajouter des trous supplémentaires pour le passage de serre-câbles.
Photo du premier châssis
(Adam): Durant cette séance, on a retravaillé la pièce permettant d'actionner la pince, qu'il a fallu re-modéliser après avoir constaté un problème de dimensionnement sur le premier essai. La pièce finale est la suivante :
Après impression, nous avons pu monter la pince, le moteur ainsi que l'ensemble des fixations.
Pour finir nous avons réfléchi au montage des roues et à comment garantir leur parallélisme cela dans le but de pouvoir les monter la séance prochaine.
Schéma du montage des roues et de leur fixation
Pôle Électronique et Informatique
Travail réalisé (Anass, Léon, Valentin): Lors de cette séance, les pôles informatique et électronique se sont concentrés sur des tests de déplacement du robot, en s'appuyant sur un code d'exemple permettant de contrôler les roues selon trois modes : avancer, reculer et tourner. Ce code s'est avéré fonctionnel et les trois actions ont été exécutées avec succès.
Cependant, deux problèmes sont apparus : la pince effectuait des mouvements non prévus, puis en tentant de changer de port, l'alimentation de la carte Arduino a été court-circuitée. Une grande partie de la séance a donc été consacrée à identifier les composants défectueux et ceux encore fonctionnels (capteurs et moteurs KTECH).
Pour la prochaine séance, l'objectif est de réimplémenter le code sur une nouvelle carte Arduino afin de retrouver les mouvements de base du robot, puis d'intégrer la détection des capteurs.
Séance 4 16/03/2026
Pole Mécanique
Travail réalisé : Durant cette séance, le pôle mécanique a poursuivi le développement du châssis et l'intégration des différents composants du robot.
Les pièces de fixation des roues ainsi que celles dédiées aux capteurs infrarouges ont été conçues, modélisées puis découpées dans des plaques de MDF 6 mm. Ce premier montage complet a permis d'identifier plusieurs conflits entre certaines pièces, dont le plus critique était le défaut de parallélisme des deux roues motrices. Le châssis a donc été retravaillé pour corriger ces problèmes, et une nouvelle version a pu être découpée.
Dans un second temps, les pièces relatives aux capteurs et au positionnement de la batterie ont été modélisées et découpées. Il a été décidé de placer les capteurs sous le châssis afin d'optimiser leur efficacité. La batterie, quant à elle, est posée directement sur le châssis et maintenue en position par quatre cales encastrées, assurant un maintien solide sans fixation supplémentaire.
Première version montée du robot
Pôle Électronique et Informatique
Travail réalisé : Durant cette séance, le pôle informatique a travaillé sur deux axes principaux : le contrôle des actionneurs et l'exploitation des données capteurs.
Un premier programme a été développé pour piloter les déplacements du robot via un Arduino communiquant avec deux moteurs par bus CAN. Le démarrage est déclenché par un bouton-poussoir sur la pin 2, géré par interruption matérielle, ce qui permet au programme d'attendre sans bloquer la boucle principale. Plusieurs primitives de mouvement ont été implémentées — avancer, tourner à droite et à gauche — et validées par une séquence de test en boucle infinie, sans anomalie observée.
Pour estimer sa position et son orientation, le robot lit en continu l'angle de rotation de chaque roue depuis les moteurs. À chaque cycle, la variation d'angle est convertie en distance parcourue grâce au périmètre de roue (diamètre 50 mm, soit environ 157 mm) : la moyenne des deux roues donne la distance avancée, la différence donne la rotation. Ces valeurs mettent à jour les variables odom_x_mm, odom_y_mm et odom_theta, et pilotent les fonctions moveForward_mm() et rotate_deg() jusqu'à ce que l'objectif soit atteint.
Deux capteurs ultrasons HC-SR04 ont ensuite été intégrés : un capteur avant (pins 22/23) pour détecter les obstacles, et un capteur droit (pins 42/43) pour mesurer la distance au mur latéral. En l'absence d'écho dans un délai de 30 ms, la distance est fixée à 999 cm. Sur cette base, un programme d'asservissement a été développé pour maintenir le robot à distance constante du mur, selon une logique bang-bang : en dessous de 10 cm, la roue gauche ralentit ; au-dessus de 15 cm, c'est la roue droite ; entre les deux, les deux roues avancent à vitesse normale. Le longeage s'arrête dès que le capteur avant détecte un obstacle plus proche que le seuil mesuré en début de phase.
Enfin, deux tests ont été conduits : le premier validait les fonctions de mouvement seules afin de vérifier l'odométrie et le bus CAN ; le second ajoutait les capteurs et la logique de longeage, avec un affichage en temps réel des distances dans le moniteur série (AVANT: xx cm | DROITE: xx cm), ce qui a permis de valider les seuils de correction avant de lancer le robot.
Schéma du fonctionnement du programme









