Skip to main content

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

Screenshot 2026-04-16 at 10.02.55.png

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.

IMG_7200.png

Schéma du châssis, du système pignon-crémaillère et du montage des roues sous le châssis.

IMG_7201.jpeg

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 :

 IMG_7596.jpeg

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.

image.png

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 :

image.png

Après impression, nous avons pu monter la pince, le moteur ainsi que l'ensemble des fixations.

IMG_7845.jpeg

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.

IMG_7846.jpeg

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

Pôle Électronique et Informatique

Travail réalisé :  Durant cette séance, le pôle informatique a travaillé sur l'architecture générale du programme ainsi que sur l'implémentation de plusieurs fonctionnalités clés.

Le robot est contrôlé par un Arduino qui communique avec deux moteurs via un bus CAN. Le démarrage de la séquence 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.

Concernant l'odométrie, le robot estime sa position et son orientation en lisant 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, tandis que la différence donne la rotation. Ces valeurs mettent à jour les variables de position 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 été utilisés : un capteur avant (pins 22/23) pour détecter un obstacle en face, 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, indiquant l'absence d'obstacle.

Le suivi de mur repose sur une correction bang-bang avec deux seuils : si la distance droite est inférieure à 10 cm, le robot est trop près du mur et ralentit la roue gauche pour se corriger ; si elle est supérieure à 15 cm, il ralentit la roue droite. Entre 10 et 15 cm, les deux roues avancent à vitesse normale. L'arrêt du longeage se déclenche lorsque le capteur avant détecte un obstacle plus proche que le seuil mesuré en début de phase.

Deux tests ont été réalisés. Le premier portait sur le déplacement pur, validant les fonctions de mouvement sans capteur afin de vérifier le bon fonctionnement de l'odométrie et du bus CAN. Le second ajoutait les capteurs ultrasons et la logique de longeage : la fonction printDistances() affiche en continu les distances lues 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.

WhatsApp Image 2026-04-16 at 11.56.00.jpeg

Schéma du fonctionnement du programme