Bonsoir,
Il s'est passé un mois depuis mon dernier message ! L'assemblage du robot a été une opération assez longue, du fait de la multitude de pièces à imprimer et d'ESC à câbler.
Sur cette photo, on voit bien que le châssis n'est pas terminé (manque des caches dessus et devant/derrière et les ventilos). Le robot commence à marcher.
A ce stade, ma première préoccupation est de réduire la masse totale du robot, à commencer par le châssis. En effet, le robot pèse déjà 3.8kg, sans batterie. Chaque patte pèse environ 700g (deux moteurs, deux ESC, les pièces plastique, les roulements à billes et la visserie). Le châssis avec l'électronique et le câblage pèse 1kg. Malgré son poids, il parvient à transporter sans difficulté un pack d'accus de 750g. En statique, je pense qu'il peut supporter encore plus de poids.
Pour les premiers essais, j'ai rencontré quelques problèmes :
1) Alimentation. En fonctionnement, à faible allure (<0.1m/s), la consommation moyenne est de l'ordre de 2 à 3A sous 10V. En revanche, les appels de courant peuvent etre importants. Mes alimentations de puissance sur secteur (une 30V 300W, une autre 30V 1200W) sont des DC/DC, et elles ne parviennent pas à maintenir le niveau de tension au moment des appels de courants. La seule bonne solution est de faire fonctionner le robot sur batterie Lipo. La bonne nouvelle reste la tension d'alimentation. Le couple des moteurs est déjà significatif, meme à seulement 10V/ La tension nominale étant de plutot de 24V (6S).
2) Robustesse des engrenages de mes réducteurs planétaires. Pour l'instant, mes consignes de courant sont assez élevées. La démarche est très rigide. Les pieds ont tendance à impacter le sol à la transition de swing/stance. Les engrenages satellites en ABS (FDM) ne résistent pas. Elle se sectionnent entre deux dents à cause des efforts. Je les remplace au fil de l'eau par les engrenages imprimées par Igus (SLS) (en blanc dans la photo suivante). C'est trop tôt pour faire un retour d'expérience sur la robustesse des Igus. Le robot a assez de couple pour sautiller, mais je ne gère pas de manière dynamique la souplesse des pattes, et l'atterrissage est un peu violent.
3) Qualité de fabrication des encodeurs. J'ai dû finir les soudures des CMS à la main et à la binoculaire. Des faux contacts rendaient les mesures de position soit bruitées soit intermittentes, avec les conséquences que cela peut avoir sur l'asservissement du moteur brushless... j'ai appris à coder un fail-safe en cas de soucis de mesure de position !
En marge de la mécanique, et des essais statiques, j'ai attaqué la programmation de la démarche. Pour l'instant, le logiciel est une simple automate avec en paramètres : un déphasage entre les pattes, une longueur de pas (selon la vitesse), et une durée de swing et de stance. La démarche au trot passe sans trop de difficulté, à toute petite vitesse, malgré quelques oscillations parasites du châssis. Le M5Stack s'en sort plutôt bien en termes de performances. Il communique en Wifi avec le protocole ESPNow pour la télécommande (M5StickC+JoyC), il communique avec les huits ESC en bus CAN (1Mbps), il fait tous les calculs de cinématique inverse, et il calcule l'attitude (pitch,roll) à partir de son IMU (AHRS). La cadence est de l'ordre de 100 Hz.
M5StickC+JoyC(4 axes + 2 boutons)
Au sujet des brushless, l'algorithme FOC semble fonctionner correctement. A posteriori, je ne pense pas qu'il soit utile d'implémenter le FOC avec les asservissements PI en flux et en couple. Dans le cas d'un servo brushless, la vitesse de rotation du moteur est réduite, et le moteur travaille surtout en couple. Maximiser le couple et réduire le flux peuvent se faire en boucle ouverte, comme dans la librairie SimpleFOC. L'utilisation d'un petit ESC comme le kit d'évaluation ST (B-G431-ESC) semble être une alternative viable, compacte et économique pour contrôler un moteur brushless de petite taille.
La suite : optimiser le poids en reprenant la mécanique et le câblage, et travailler sur la démarche en logiciel !