Ce repository GitHub regroupe l'ensemble des projets & documents réalisés par l'association Ares pour la Coupe de France de Robotique 2024.
Des recherches sur internet nous on fait découvrir le Robot Trooper. Le site suivant permet de connaître ce robot : https://www.sick.com/fr/fr/sick-sensor-blog/trooper-le-robot-de-manutention-autonome-pour-le-distancage-en-horticulture-/w/blog-instar-robotics-success-story/
Ce deuxième site permet d'étudier la mécanique de celui-ci grâce à un concours CPGE : https://www.upsti.fr/espace-etudiants/annales-de-concours/topics/s2i-robot-trooper
Les méthodes utilisées par le robot Trooper sont:
- La récupération de pots et de cache-pots grâce à des “mains plates”.
- Le stockage des pots grâce à un arc de cercle.
Figure 1 - Robot Trooper
Idées : Positionner un capteur sur chaque côté du robot afin que le contact avec une des parois de la table permette de réinitialiser l'odométrie du robot. Par dessus, positionner une pièce imprimée en 3D pour couvrir la surface totale de chaque côté à l'instar des robots aspirateurs.
Figure 2 - Robot Asprirateur
La différence entre un capteur classique et un capteur TOF est l'état actif et passif. Le capteur classique est passif, il se comporte "comme la rétine d'un oeil". Cependant, un capteur TOF est un composant actif car il mesure un genre "d'écho" de la lumière qu'il émet (il ne mesure donc pas la lumière ambiante). Le principe de fonctionnement de ce capteur est de mesurer le temps que met la lumière à revenir au capteur. Cela permet notamment de déterminer sa distance par rapport aux objets environnants.
Figure 3 - Capteur TOF : Fonctionnement
Figure 4 - Schéma explicatif de la solution mécanique
Figure 5 - Modélisation 3D des pots à soulever (présence d'une bordure au sommet du pot)
Figure 6 - Modélisation 3D des plantes à soulever (ne présente pas de bordure)
- La base du robot : en forme d'entonnoir pour guider les plantes et leurs pots jusqu'à l'endroit où se situe la première pince.
- Un ascensceur à pots : À l'endroit où l'entonnoir a le plus petit diamètre, une première pince se charge de monter les pots dans l'esapace de stockage.
- Un espace de stockage intégré au robot : une plateforme comporte plusieurs encoches afin d'accueillir les pots.
- Différenciation entre les pots et les plantes fragiles et résistantes : Utilisation d'un capteur de couleur pour détecter la couleur des plantes et ainsi déterminer s'il s'agit d'une plante fragile ou non. Pour détecter si le contenant stocké est un pot ou une plante, 2 capteurs de proximité seront placées à 2 hauteurs différentes : le capteur en position haute détectera les plantes et celui du bas les pots. Nous voudrions donc utiliser un capteur RFID (RFID-RC522) en haut de l'ascenseur pour savoir si c'est un pot ou une plante qui est monté par la pince. Il faut donc récupérer en premier des pots pour les stocker puis récupérer des plantes afin de les poser directement dans les pots.
- Descente des pots contenant les plantes : Une deuxième pince est située à l'arrière du robot, elle est composée de deux plaques qui se serrent autour du pot afin de les descendre de l'espace de stockage et de les déposer sur la table.
Les servomoteurs respectent avec précision une position angulaire donnée. Ils ont une rotation souvent limitée à 180° et ne tournent pas en permanence alors qu'à l'inverse, les moteurs ont un mouvement continu. Les servomoteurs seront donc très utiles pour le déplacement d'un bras robotisé.
-
Dans les 6 zones de stockage deux caches-pots sont empilés. Puisque nous ne savons pas si le cache-pot sera en métal ou en impression 3D, nous choisisons de palier ce problème en adoptant la méthode suivante : dépose d'une plante dans les deux caches-pots empilés et placement dans les jardinières (comptera pour 1 point).
-
Première idée de stratégie pour ramasser les pots : Notre but est de récupérer des caches-pots et d'en avoir toujours en stock. Nous voulons ensuite mettre les plantes dans les caches-pots déjà stockés. Par ailleurs, si nous n'avons plus la possibilité de récupérer des caches-pots alors quelques emplacements auront un diamètre adapté à ceux des plantes fragiles. Lorsqu'il n'y aura plus de caches-pots à récupérer, nous utiliserons un capteur de couleur pour détecter si le robot prend une plante fragile ou une plante résitsante. Si la plantes est résistante alors la base du robot la poussera jusqu'à la zone de dépose des plantes. Si la plante est fragile alors elle sera stocké dans les emplacements adaptés situés dans le stockage avant de les déposer dans les jardinières.
-
Idée finale de stratégie pour ramasser les pots: Chaque cache-pot et chaque plante, de n'importe quel type, sera ramassé par la pince liée à l'ascenseur. Le système vérifiera quel type d'objet est encerclé par la pince. Pour chaque montée d'objet, un capteur détermine si c'est un cache-pot ou une plante (résistante ou fragile). Si c'est un cache-pot, alors il est dircetement déposé dans l'espace de stockage s'il reste un emplacement vide. Si c'est une plante fragile, alors elle est déposée dans un emplacement qui contient déjà un pot. Si c'est une plante résistante, alors elle est déposée dans un emplacement vide si c'est possible, sinon elle est déposée dans un emplacement contenant un pot.
-
Résolution de l'éclairement des panneaux solaires: Positionnement de deux crémaillères sur le côté du robot afin d'appuyer sur le côté du panneau solaire pour le faire tourner d'un quart de tour.
-
Dépot des plantes avec leurs caches-pots dans les jardinières : Une pince est située à l'arrière du robot. À l'endroit où les pots peuvent sortir de l'espace de stockage, nous plaçons une plaque en bois posée sur des rails qui avance et recule selon une direction. Les dimensions de la plaque en bois sont :
$75mm \times 75mm \times 6mm$ . De plus, nous plaçons une pince à 75 mm de distance de l'espace de stockage. Celle-ci va pouvoir récupérer les pots grâce à la plaque de bois qui avance.
Caractéristiques:
- Tension de fonctionnement: 9 à 12V
- Couple décrochage (N.m) : 1,52 à 12V et 1,5A
- Vitesse hors-charge: 59 tours/minute
- Vitesse: 0,196 s/60° (à 10 Vcc)
- Température opérationnelle: -5°C à 70°C
- Vitesse de communication: 7343 bps à 1 Mbps
- Compatible avec AX-12+ à l'échelle 1:1
- Rapport de réduction: 254:1
- Poids : 54,6g
- Dimensions (mm) : 32 x 50,1 x 40
Détails :
- Fonctionnement en rotation continue ou de 0 à 300°.
- Le contrôleur de ce servomoteur permet un retour d'information de la position, de la température, du couple et de la tension d'alimentation.
- Les moteurs disposent de deux connecteurs 3 broches (cordon inclus) permettant de relier plusieurs moteurs en cascade et de les utiliser ensemble.
- Vérification de la mise à zéro grâce à deux encoches.
- Idée de code : CDR2022_23/2A/Project__Ax12/Core/main
Caractéristiques :
- Tension : 4,8 V - 6,0 V
- Vitesse : 0,10 s / 60 degrés
- Couple : 1,8 kg/cm (4,8 V)
- Température : -30 à +60
- Bande passante morte : 5usec
– Dimensions : 22 x 11.5 x 27 mm – Poids : 9 g – Tension d’alimentation : 4.8V à 6V – Vitesse : 0.12 s / 60° sous 4.8V – Couple : 1.2 Kg / cm sous 4.8V – Amplitude : de 0° à 180°
Correspondance des fils de la prise de type Graupner à 3 fils : Marron -> GND Rouge -> 5V Orange -> Commande PWM
Détails : exemple de code ARDU*** : https://robotix.ah-oui.org/user_docs/dos10/sg90-datasheet.pdf
Nous nous sommes focalisés sur la mécanique du projet afin d'avoir une vision globale du robot et de ses composants que nous devrons par la suite commander. La dernière grosse partie mécanique a concevoir est la pince avant du robot qui servira à attraper les pots et à les déposer sur la table ou dans les jardinières. Celle-ci a été réalisée grâce au logiciel fusion.
Première version de la CAO et de l'assemblage de l'ensemble des pièces du robot (Utilisation avec modifications de certaines pièces des années précédentes et modélisation de nouvelles pièces).
Assemblage du robot : cette première version ne prend pas en compte la pince arrière car nous souhaitons d'abord être certain d'arriver à construire complètement une pince entièrement. Nous la dupliquerons par la suite pour la mettre à l'arrière du robot.
Création de pièces et assemblage de celles-ci avec des pièces utilisées les années passées (ex: roues/batteries/équerres) pour concevoir le robot entièrement :
- Finalisation de la première version de toutes les pièces du robot
- Impression de toutes les pièces afin de les tester
-
Modification du bord de soutien des pots. Utilisation d'une imprimante avec un plus grand plateau afin que la pièce soit imprimée en une fois pour ne pas avoir besoin de la découper en plusieurs parties. Nous avons également augmenter la hauteur de ce bord afin que la plaque en bois soit bien contrainte à rester au milieu de la pièce. Conception de pylônes de soutien.
-
Les tests de ce bord de soutien nous ont incité à agrandir son ouverture afin de laisser plus de place aux pots lors de leur sortie.
-
Création de la pièce utilisée pour faire sortir les pots de l'espace de stockage. La modification à apporter est la modification de la forme de celle-ci afin qu'elle soit identique à la forme des pots pour qu'elle soit correctement ajustée à ces derniers.
-
Nous avons également ajouté les inserts et les vis dans chaque conception afin de monter le robot entièrement.
-
Les actionneurs AX12 ont été remplacés par des petits servomoteurs SG90 pour leur taille et leur facilité de commande.
- Les bords du stockage sont un peu haut et certaines plantes peuvent se coincer en passant sous le stockage. La modification à apporter est sur la hauteur des piliers de soutien.
- Décaler la position de l'ascenseur pour laisser plus de place à la rotation des pots.
- Augmenter la taille de l'ascenseur pour éviter la collision entre les pots.
- Les roues ne touchent pas le sol, il faudrat donc modifier la pièce de maintien des moteurs pas à pas (correction des trous pour l'odométrie).
- Changement des actionneurs SG90 par des XL-320 pour des raisons de performance et de connectivité simplifiée.
- L'ascenseur a été amélioré pour faciliter la rotation de la pince et a été rehaussé pour limiter la perte de pots potentiels.
- La pince a été améliorée pour recevoir un XL-320.
- Le pousse-pot a été amélioré pour recevoir un XL-320.
- Le périmètre du robot à été réduit.
- Réalisation du schématique et du PCB de la carte mère du robot.
- Choix de différents capteurs de détection de pots (capteur de couleurs et de proximité).
On commence par réaliser le schéma fonctionnel pour avoir une petite idée de l'architecture de la carte principale du robot:
On réalise ensuite le schéma électronique avec les composants de base tout en ajoutant les composants inexistants . Pour faciliter la lisibilité des différentes parties du schéma (conversion, communication ou encore calcul ), nous les séparons dans des blocs ou des sous-pages.
Pour cette partie nous avons repris certaines idées du schématique réalisé pour la Coupe de France de Robotique 2023 (notamment pour la partie qui concerne la batterie et le bouton d'arrêt d'urgence). La taille du PCB a été choisie de manière à ce qu'elle puisse s'empiler avec une Raspberry Pi 4.
De plus, nous avons du faire attention à la présence de détrompeurs sur les connecteurs et nous avons donc décidé de retirer le système anti-inversion de polarité et anti-retour de courant. De même pour le fusible de protection car il n'a jamais servi auparavant. Nous avons par ailleurs choisi de conserver la diode TES pour les surtensions ainsi que le condensateur de filtrage.
Comme nous l'avons décrit dans le schéma fonctionnel, nous avons besoin des tensions suivantes: 5.1V, 7.4V ainsi que du 3.3V pour les différents actionneurs. Nous allons donc devoir utiliser des convertisseurs Bucks car les 2 batteries branchées en série fournissent du 14.4V.
Remarque: Lorsque deux schémas sont similaires, afin de rendre plus lisible le schématique, nous créons des pages hiérarchiques sur lesquelles seuls les entrées et sorties apparaissent sur la page principale :
Dans ce buck, nous devons faire attention aux valeurs des résistances du pont diviseur de tension afin de délivrer la tension souhaitée [5.1V ou 7.4V].
/!\ C'est là qu'intervient la limite de l'utilisation de la page hiérarchique, car les deux bucks doivent avoir des valeurs de résitances différentes (nous n'avons pas trouvé de solution pour résoudre ce problème dans les pages hiérarchiques, bien que la solution doit exister sur des forums).
Nous avons également choisi de mettre 2 capacités de 22uF en parrallèles afin d'avoir plus de facilités pour le soudage des composants sur le PCB (c'est également pour améliorer la qualité du routage).
La référence du pont diviseur aurait dû idéalement être mis au GND du buck pour être au plus proche afin de calculer la différence de tension et réguler la tension le mieux possible. Une fois les alimentations mises en place, nous rajoutons des LEDs de contrôle sur chaque tension afin de surveiller visuellement l'état des tensions. Nous rajoutons également des points de tests afin de controler les tensions avec un voltmètre.
Nous avons par la suite réalisé la partie qui concerne les capteurs avec les différents types de communication :
Les capteurs font appels à des communications séries UART et des GPIO pour le capteur de couleur et les capteurs fin de course.
Lorsque nous appuyons sur un bouton et que nous le relâchons, un effet rebond apparaît : le microcontrolleur perçoit" plusieurs appuis/relâchements rapides.
Pour limiter ce défaut, nous ajoutons un filtre RC qui a un objetcif de lissage. Nous ajoutons également une résistance de tirage pour éviter l'effet antenne lorsque le bouton est ouvert.
Contrairement aux années précédentes nous avons décidé d'enlever les diodes TVS anti-surtension par manque de place.
Pour le contrôle des XL-320, le protocole fait appel à une connexion série UART half-duplex (communication dans un sens à la fois) en 5V, or la Raspberry Pi 4 utilise des UARTs full-duplex en 3.3V.
Nous utilisons donc le 74LVC2G241 pour convertir du half en full duplex (communication dans les deux sens en même temps). De plus, ce module permet de remplacer un level shifter pour adapter la tension de communication.
Le capteur de couleur fonctionne en 5V mais également en 3.3V, ce qui est intéréssant pour notre Raspberry qui n'accepte qu'uniquement du 3.3V.
Nous relions tous les signaux à la Raspberry (nous l'avons choisie afin d'avoir 4 UART à disposition) et nous récupèrons le 3.3V pour l'alimentation 3v3.
On finit par rajouter les GPIO non utilisés de la pi sur un bornier avec l'alimentation à coté pour pouvoir rajouter de potentiels capteurs supplémentaires.
On lance le contrôle de règles électrique, on ajuste le schématique afin de corriger les erreurs et nous obetnons ce magnifique schéma :
(Ne pas oublier de bien référencer tous les composants hormis les small capacités, résistances et LEDs).
Il faut commencer par affecter les bonnes empreintes aux composants et les créer si elles n'existent pas. Par exemple, tous les connecteurs JST sont référencés, cependant pour l'allimentation principale nous avons décidé de prendre des connecteurs plus gros et qui ne sont pas référencés.
On place les composants sur notre PCB en pensant à bien prendre en compte la proximité des composants (condensateurs de filtrage, résistances, ...) avec les signaux concernés et de regrouper les alimentations.
Cela nous a "obligé" à séparer une grosse capacité en 2 petites. Dans notre cas, la place était assez restreinte car nous ne pouvions pas mettre de condensateurs sous la carte pour éviter de percuter les composants qui se situent déjà sur la PI4. Dans ce cas, le chevauchement de sérigraphie n'est alors plus un problème.
Nous devons régler différents paramètres pour définir une taille de piste et de via en fonction du courant qui passera à travers (notamment en utilisant le calculateur de kicad), ainsi que l'isolation en fonction de la tension.
On commence par placer les plans de masse et d'alimentation en fonction du placements des composants.
Dans notre cas, nous avons choisis de faire la première couche signal/alimentation/composants/masse, deuxième plan de masse dans lequel nous nous interdisons le placement de pistes pour la laisser la plus intacte possible, et le troisième plan de puissance dans lequel nous créeons des zones 3.3v , 5.1v , 7.4v et 14.4v afin de faciliter le routage.
Nous terminons par la dernière couche qui est aussi un couche de signal/masse.
Dans l'idéal, il faudrait réaliser une cage de Faraday en mettant le plan d'allimentation et le plan de masse de part et d'autre du plan de signal. Cepandant, cela empêche toute intervention de rectification de routage après fabrication (en cas de problème).
Nous débutons la réalisation du routage des alimentations en veillant à bien faire des grosses pistes, plusieurs vias ou bien des zones.
Enfin, nous réalisons le routage des signaux en faisant des bus de pistes pour améliorer la propreté et nous modifions le schéma lorsque c'est nécéssaire pour le "faciliter".
/!\ Éviter les pistes trop longues qui font le tour du pcb !
Il faut par la suite lancer l'analyse des règles électriques ainsi que rectifier les différents problèmes. Nous obtenons, principalement grâce à l'aide de Monsieur Papazoglou le magnifique PCB suivant :
- Test du capteur de couleurs : Les essais réalisés avec le capteur de couleur se sont révélés assez satisfaisants pour distinguer les pots blancs des pots violets, mais cela ne permet pas de différencier les pots blancs des pots métalliques. Pour pallier ce problème, nous combinons l'utilisation du capteur avec celui d'un capteur à induction, ce dernier permettant de détecter les objets métalliques à sa proximité.
Notre carte PCB de puissance 3 couches a été commandée en 5 exemplaires.
Tout d'abord, nous avons choisi de souder entièrement une carte électronique afin de vérifier son fonctionnement global.
Les étapes de la soudure des composants grâce au four sont :
- Le placement de la carte à souder entre 4 autres cartes avec du scotch autour afin que la carte principale ne bouge pas.
- Le chauffage de la pâte à braser entre les mains.
- L'étalage de la pâte sur le PCB grâce à une carte en plastique.
- La pose des boîtiers des composants de différentes tailles sur la paillasse.
- L'affichage du schématique et du routage KiCad afin de suivre les valeurs des composants.
- Le positionnement de tous les composants sur le PCB
- La vérification que chaque composant est correctement positionné et n'a pas bougé.
- L'allumage du four, l'attente du préchauffage puis le placement de la carte électornique à l'intérieur.
- Le suivi de l'évolution de la cuisson via l'ordinateur de suivi (augmentation de la température, arrivée au point culminant, baisse de la température).
Remarque importante : Il faut commencer par positionner les composants sur la carte par ordre de taille croissante.
Par la suite, une fois que tous les composants CMS ont été soudés, il faut vérifier si les tensions qui sortent de la carte ont la bonne valeur. Pour ce faire, on utilise une alimentation et un voltmètre aux bornes des points de test. Si toutes les valeurs recuillies sont cohérentes avec celles attendues, alors nous pouvons passer à l'étape suivante. Sinon, il faut faire des réajustements sur la source du problème (composants, soudure, ...).
Puis, il faut ajouter les composants traversants (connecteurs des batteries, du bouton d'arrêt d'urgence, des capteurs et des actionneurs, ...). Pour ce faire, il faut utiliser une pince afin de tenir la carte en hauteur afin de pouvoir souder correctement les différents composants qui ont des tailles différentes.