MOVEO - le bras robotique pour apprendre & Chat GPT 4.o
Comment j'ai utiliser Chat-GPT 4.o pour aller au bout d'un projet
On pose les bases de notre réflexion
Avant tout, il faut faire le point sur ce dont on dispose, puis déterminer où on veut aller. C'est important, car il va falloir poser les bonnes questions à l'IA, si on veut un résultat exploitable rapidement. C'est un des objectifs principaux : gagner du temps sur la partie construction du projet, pour se concentrer sur les usages.
Attention ! notez qu'il ne s'agit aucunement d'un tutoriel pour construire le bras MOVEO ; on suppose que le bras est déjà construit et disponible, assemblé dans les règles de l'art.
Configuration matérielle :
- Bras MOVEO "standard" 6 DOF ( Degrees Of Free) degrés de liberté,
- BASE, rotation par un stepper,
- ARTICULATION #1, rotation par 2 steppers synchronisés,
- ARTICULATION #2, rotation par 1 stepper,
- GRIP ROTATOR, le mouvement rotatif du dernier segment,
- ARTICULATION #3, rotation par 1 stepper, du dernier segment portant le GRIP
- GRIP, l'actionneur de la pince, motorisé par un SERVO standard.
- Arduino Mega 2560 : Plus de ports E/S et une mémoire plus grande que d'autres modèles Arduino.
- Drivers : chaque moteur pas à pas est contrôlé par un driver TB6560.
- Alimentation : faire le choix d'une alimentation suffisante pour fournir le courant à tous les moteurs (dans mon cas, une alimentation stabilisée 12v - 20A, mais une 24V pourrait faire un meilleur choix, nous verrons à l'usage...)
Configuration logicielle :
Nous allons entrer dans le vif du sujet. Il y a beaucoup d'options pour commander un bras comme le MOVEO ; celles que je vais choisir résulte de mes expériences personnelles, mais aussi de ma capacité à apprécier les propositions de l'IA. Il ne s'agit pas seulement de lui demander de mener le développement à notre place, il s'agit de savoir apprécier le résultat, et éventuellement d'exiger des ajustements ou des affinages. En d'autres termes, l'IA ne fera pas le travail à votre place, elle vous fera juste gagner énormément de temps.
Pour mon bras MOVEO, je veux utiliser ROS2, afin de l'intégrer dans un système complexe mais offrant de multiples opportunités : simulations, optimisations,... Je veux aussi avoir la possibilité de lancer des commandes simples, sans passer par ROS2, afin de valider rapidement mes câblages et ajuster éventuellement les configurations.
Enfin, je veux doter mes steppers de codeurs, afin de gérer la position par retour d'information ; mon choix s'est porté sur les codeurs AS5600, qu'il faut monter sur les steppers avec des supports confectionnés en impression 3D.
Quelques explications :
ROS 2 (Robot Operating System 2) est une plateforme logicielle open-source conçue pour le développement d'applications robotiques. Évolution de ROS, ROS 2 améliore la flexibilité, la sécurité et l'interopérabilité des systèmes robotiques. Basé sur DDS (Data Distribution Service) pour la communication en temps réel, il permet une meilleure gestion du réseau et une meilleure évolutivité. ROS 2 prend en charge le multi-système, permettant l'exécution de plusieurs robots et systèmes hétérogènes. Il inclut des améliorations en matière de sécurité, de fiabilité et de performance par rapport à son prédécesseur, rendant les applications robotiques plus robustes et efficaces.
L'AS5600 est un capteur magnétique de position angulaire sans contact, développé par AMS. Il mesure l'angle de rotation d'un aimant placé au-dessus du capteur, offrant une résolution de 12 bits, ce qui permet une précision élevée. Ce capteur est souvent utilisé dans les applications nécessitant des mesures précises de position angulaire, comme les commandes de moteurs et les joysticks. Il fonctionne sur une plage de tension de 3,3V à 5V et communique via des interfaces I2C ou PWM. Facile à intégrer, l'AS5600 propose également des fonctionnalités de mise à zéro programmable et de protection contre les champs magnétiques externes. Grâce à sa robustesse et à sa fiabilité, il est largement utilisé dans l'automatisation industrielle, les systèmes robotiques et les applications automobiles.
1ère problématique : les codeurs AS5600 utilisent tous la même adresse I2C ; donc si je veux gérer les informations sur un même Arduino, il me faut une solution de multiplexage ou autre. Interrogeons l'IA.
Si chaque codeur utilise la même adresse i2c comment les différencier dans le projet ?
Réponse :
Si chaque codeur AS5600 utilise la même adresse I2C, vous aurez besoin d'une solution pour différencier les codeurs afin de pouvoir lire leurs valeurs indépendamment. Voici plusieurs approches pour gérer cette situation :
1. Multiplexeur I2C
Un multiplexeur I2C (comme le TCA9548A) permet de sélectionner un seul périphérique I2C à la fois parmi plusieurs périphériques ayant la même adresse. Voici comment vous pouvez utiliser un multiplexeur I2C dans votre projet :
+-----------------------------+
| Arduino Mega 2560 |
|-----------------------------|
| - I2C Multiplexer (TCA9548A)|
| - Channel 0: AS5600 1 |
| - Channel 1: AS5600 2 |
| - Channel 2: AS5600 3 |
| - Channel 3: AS5600 4 |
| - Channel 4: AS5600 5 |
| - Channel 5: AS5600 6 |
+-----------------------------+
Connexion
Connectez les broches SDA et SCL de l'Arduino aux broches correspondantes du TCA9548A.
Connectez chaque codeur AS5600 à un canal différent du TCA9548A.
2. Utiliser des ADC Multiples ou des GPIO pour Sélection d'Alimentation
Une autre méthode consiste à utiliser des lignes GPIO pour alimenter les codeurs AS5600 individuellement, activant seulement un codeur à la fois. Cela peut nécessiter des circuits supplémentaires pour contrôler l'alimentation des capteurs.
3. Utilisation de Capteurs I2C avec Adresses Modifiables
Si possible, utiliser des codeurs avec des adresses I2C modifiables est une solution plus simple. Certains capteurs permettent de configurer leurs adresses I2C via des broches de sélection d'adresse.
Mon choix se portera sur le Multiplexeur I2C TCA9548A, qui pourra par ailleurs être facilement intégré sur un PCB, le cas échéant.
Résumons notre configuration :
Matériel Nécessaire
- Arduino Mega 2560
- Drivers TB6560 pour les moteurs pas à pas
- Codeurs AS5600
- Multiplexeur I2C TCA9548A
- Servo pour la pince
- Câblage et connecteurs
Schéma de Connexion
Connexions du TCA9548A
- SDA/SCL du TCA9548A connectés aux broches SDA/SCL de l'Arduino Mega.
- VIN et GND du TCA9548A connectés à l'alimentation 5V et GND de l'Arduino Mega.
- Sorties des canaux du TCA9548A connectées aux SDA/SCL des codeurs AS5600 respectifs.
Connexions des Codeurs AS5600
- Alimentation : 3.3V ou 5V (selon les spécifications des codeurs) et GND.
- SDA/SCL : Connectés aux canaux correspondants du TCA9548A.
Connexions des Moteurs et Drivers TB6560
- Step/Dir : Connectés aux broches numériques de l'Arduino Mega (comme indiqué précédemment).
- Alimentation et Moteurs : Selon les spécifications des drivers et moteurs.
Connexion du Servo
- Signal : Connecté à une broche PWM de l'Arduino Mega.
- Alimentation : 5V et GND de l'Arduino Mega ou une alimentation externe.

Au vu du schéma de connexion, pourtant simplifié, on comprend vite que pour avoir des connexions solides avec l'Arduino MEGA, il va falloir concevoir une carte d'interface, qui se branche sur le MEGA (un HAT). Ce n'est pas le sujet de cet article, mais je mettrais en ligne les fichiers GERBER le moment venu.
Pour l'assemblage des drivers TB6560, j'ai également conçu un système assez léger, basé sur des tiges filetées qui lient les drivers entre eux. Ca donne un bloc très compact, terminé à chaque extrémité par un flasque qui permettra de visser le bloc sur la platine du bras MOVEO.
Illustrations (3D et photo) :
La vis est en M3, le capot est prévu pour 6 drivers ; le STL du capot est double pour pouvoir tenir la pièce sans vibrations sur le plateau.
Prochaine étape : avec tous les éléments énumérés précédemment, nous allons demander à l'IA de nous élaborer le code Arduino pour commencer à dialoguer avec le MEGA et donner vie à notre MOVEO ; cela suppose que les câblages sont fait, les drivers correctement configurés et l'alimentation opérationnelle. Bien sûr, rien n'empêche de générer des mini sketchs, pour faire des tests isolés sur chaque moteur.