LOG.01 // INGÉNIERIE SYSTÈMES & ROBOTIQUE AVANCÉE

Bras Collaboratif 6 Axes.

Analyse détaillée de la conception d'un manipulateur sériel. De l'annulation du jeu mécanique par réduction cycloïdale[cite: 1] au routage CAN décentralisé, jusqu'à l'orchestration du backend ROS via une Software Release SlapOS.

[↓] TÉLÉCHARGER CAO (.STEP) [↗] GITHUB (FIRMWARE & SLAPOS)
+
+
[ ZONE RÉSERVÉE : RENDU CAO ÉCLATÉ DU BRAS ]

1. Mécanique : Résolution du "Backlash"

La conception d'un bras sériel à 6 degrés de liberté (DDL)[cite: 1] impose des contraintes mécaniques drastiques. Dans une chaîne cinématique ouverte, l'erreur de positionnement est cumulative. Une déviation minime due au jeu mécanique (backlash) sur l'axe J1 (la base) se traduit par une erreur de plusieurs millimètres, voire centimètres, au niveau de l'effecteur (Tool Center Point - TCP).

Les solutions Maker classiques utilisent des engrenages planétaires ou des courroies, qui sont sujets à la déformation élastique et à l'usure prématurée, particulièrement lorsqu'ils sont imprimés en 3D. Pour contourner ce problème, j'ai opté pour la conception de réducteurs cycloïdaux avec un ratio de 29:1[cite: 1] pour chaque articulation.

Contrairement aux engrenages à développante de cercle où seule une ou deux dents sont en contact, le profil d'un disque cycloïdal répartit la charge sur environ 30% des galets simultanément. Cela permet de transmettre un couple massif tout en garantissant un jeu mécanique virtuellement nul[cite: 1]. Les équations paramétriques du profil cycloïdal ont été générées sous Fusion 360, en prenant en compte une excentricité spécifique pour équilibrer les vibrations à haute vitesse.

!
Ingénierie des Matériaux & Tolérances

L'impression 3D d'un système cycloïdal est notoirement complexe en raison des frictions (plastique contre plastique). Pour y remédier :

  • Les "pins" extérieurs du stator ont été remplacés par des axes en acier rectifié (Ø4mm), capables d'encaisser les contraintes de cisaillement.
  • Les disques cycloïdaux sont imprimés en PETG (pour sa résilience aux impacts) avec un Flow Rate calibré à 96% pour compenser l'expansion thermique du matériau et respecter des tolérances d'assemblage de 0.1mm.

2. Topologie Réseau et Bus CAN

L'un des défis les plus sous-estimés dans la conception d'un bras manipulateur est le cable management. Si chaque moteur, chaque encodeur et chaque capteur de fin de course doit être relié individuellement à une carte mère située dans la base, le bras se remplit rapidement d'une "pieuvre" de fils. Cela génère des frottements internes, limite les amplitudes articulaires et augmente drastiquement le risque de rupture par fatigue mécanique.

J'ai pris le parti d'une architecture purement décentralisée. J'ai conçu des contrôleurs moteurs sur mesure (basés sur le microcontrôleur ESP32), qui viennent se loger directement au sein de chaque articulation, en sortie de réducteur.

Cette position stratégique permet de lire l'angle avec des capteurs magnétiques en quadrature à effet Hall[cite: 1] directement sur l'axe final. Ainsi, la boucle de régulation corrige en temps réel non seulement l'erreur du moteur, mais compense également les micro-déformations élastiques du réducteur en plastique.

topology_network.diag CAN_BUS DAISY-CHAIN
[ROS2 Master / SlapOS Node]
    │
    ▼ (Liaison à 4 fils via slip-ring)
[JOINT_1_CTRL] ── VCC(24V) ── GND ── CAN_H ── CAN_L ──┐
                                                      │
┌─────────────────────────────────────────────────────┘
│
▼
[JOINT_2_CTRL] ── VCC(24V) ── GND ── CAN_H ── CAN_L ──┐
                                                      │
┌─────────────────────────────────────────────────────┘
│
▼
[JOINT_3...6] (Terminaison 120Ω)

La communication entre le cerveau (ROS2) et les articulations s'effectue via un bus CAN (Controller Area Network). En utilisant le driver TWAI de l'ESP32 et des transceivers isolés galvaniquement, les 6 contrôleurs sont chaînés en série (Daisy-Chain). Résultat : seuls 4 fils (Alimentation, Masse, CAN High, CAN Low) transitent dans les tubes du bras, offrant une robustesse de niveau industriel face aux interférences électromagnétiques (EMI) générées par les moteurs Brushless.

3. Automatique : Contrôle d'Impédance Sensorless

Pour qu'un bras soit qualifié de "collaboratif" (Cobot), il doit garantir la sécurité de son environnement. Un asservissement classique en position (PID) rend le robot aveugle aux obstacles : il fournira un couple maximal pour atteindre sa cible, risquant de blesser un opérateur humain.

Pour résoudre ce problème, j'ai développé une loi de commande basée sur le contrôle d'impédance pour la détection de collision sans capteur externe[cite: 1]. Plutôt que d'ajouter un onéreux capteur de force/couple 6 axes au niveau du TCP, le système est "sensorless". Chaque ESP32 mesure le courant consommé (qui est directement proportionnel au couple fourni par le moteur). En soustrayant le couple théorique (calculé via le modèle dynamique) au couple réel mesuré, le système est capable d'isoler les forces externes appliquées sur le bras.

Modèle dynamique dans l'espace opérationnel
$$\tau = J^T(q) \left( K_p(x_d - x) + K_d(\dot{x}_d - \dot{x}) \right) + G(q) + C(q,\dot{q})$$

Légende mathématique :
\(\tau\) : Vecteur des couples articulaires cibles envoyés via le bus CAN.
\(J^T(q)\) : Transposée de la matrice Jacobienne (conversion de l'espace cartésien vers l'espace articulaire).
\(K_p\) et \(K_d\) : Matrices de raideur et d'amortissement définissant le comportement du "ressort virtuel".
\(G(q)\) et \(C(q,\dot{q})\) : Vecteurs de compensation de la gravité et des forces de Coriolis/centrifuges.

Cette équation confère au bras une "raideur virtuelle". Si une force imprévue (comme une main humaine) obstrue la trajectoire, l'erreur de position \((x_d - x)\) augmente. Au lieu de forcer indéfiniment, le contrôleur sature le couple autorisé en fonction des paramètres \(K_p\) et de la matrice Jacobienne, stoppant net le mouvement et entrant en mode de conformité (compliant mode).

4. DevOps & Orchestration Edge via SlapOS

En robotique, le déploiement du framework logiciel (souvent ROS) est un cauchemar de dépendances. Installer ROS2 directement sur l'OS hôte d'une Raspberry Pi ou d'un PC industriel entraîne souvent des conflits de versions Python, des bibliothèques C++ incompatibles et un système fragile.

Mon approche a été de traiter ce bras robotique non pas comme un prototype isolé, mais comme un nœud Edge (Computer Partition) piloté par SlapOS. SlapOS est un orchestrateur décentralisé (Edge/Cloud) qui permet de provisionner des services de manière totalement agnostique et isolée. J'ai créé une Software Release (SR) de zéro, contenant toutes les recettes Buildout nécessaires.

software.cfg BUILDOUT / SLAPOS SR
# Software Release SlapOS pour le provisionnement d'un environnement ROS2 isolé
[buildout]
extends =
  ../../component/ros2-humble/buildout.cfg
  ../../component/can-utils/buildout.cfg
  ../../stack/slapos.cfg

parts =
  ros-workspace
  slapos-cookbook
  instance-profile

[ros-workspace]
recipe = slapos.recipe.build
# Compilation et configuration de l'environnement AMENT
init = 
  import os
  options['env'] = {'AMENT_PREFIX_PATH': location}
  
  # Le recipe buildout va cloner le dépôt git contenant les noeuds de cinématique,
  # exécuter colcon build de manière confinée, et générer les scripts de lancement (wrappers)
  # qui seront surveillés par le daemon Supervisord intégré à la partition SlapOS.

Lorsque le Master SlapOS ordonne le déploiement de cette SR sur l'ordinateur du bras, le nœud compile ROS2 depuis les sources, installe l'algorithme de contrôle d'impédance, configure l'interface CAN (`slcan`) et génère les wrappers d'exécution. Si l'ordinateur de contrôle venait à griller, je pourrais formater une nouvelle machine, installer le nœud SlapOS de base, et relancer le déploiement : le système serait restauré à l'identique, bit pour bit, sans aucune intervention manuelle.

5. Nomenclature (Bill of Materials)

Pour assurer la reproductibilité du projet, voici la nomenclature des composants majeurs nécessaires à l'assemblage de ce manipulateur 6 DDL.

Catégorie Composant & Spécification Qté
Actionneurs Moteurs Brushless (NEMA 17 pour les axes distaux, NEMA 23 pour la base) 6
Électronique Microcontrôleurs ESP32 (avec support natif du driver TWAI/CAN) 6
Capteurs Capteurs magnétiques en quadrature à effet Hall pour suivi articulaire[cite: 1] 6
Mécanique Impression 3D hybride PETG/ABS + Axes en acier rectifié Ø4mm -
Réseau Transceivers CAN SN65HVD230 (Isolation galvanique 3.3V) 6
Alimentation Alimentation à découpage industrielle 24V / 20A (480W) 1