‘ai toujours rêvé de construire un bras robotique bien puissant couplé à un bon driver, voire même une sorte de petite intelligence artificielle. Les possibilités sont tellement inimaginables ! Simplement réaliser des dessins au marqueur, tenir des pièces en position, voire effectuer une découpe avec un cutter, reproduire les gestes de ma main ou être capable d’effectuer des points de soudure. Que de choses qui font rêver et pas impossibles à faire avec un peu de temps, une bonne conception et de longues heures de programmation. Mon idée est de partir sur un bras 4 axes qui correspondrait à celui-ci :
On aurait donc un axe vertical de 0 à 90° pour balayer le sol (axe des Y) et 3 axes horizontaux, si je puis dire, permettant d’atteindre n’importe quelle position sur l’axe des X et Z (hauteur). Au bout du bras se trouvera une petite pince mécanique capable de saisir des objets.
Une commande en Asie semble inévitable : 5 servos 35 g, un servo 9 g et une Arduino non officielle. Le choix des TowerPro SG-5010 est dû à leur faible coût ($ 5.35) et un couple pas trop mauvais, 5,5 kg/cm. L’Arduino nano non officielle ne coûtera que $ 4.25 ; merci, Banggood !
Je vais commettre une grosse erreur en ne prévoyant que très peu de place pour les servos et en utilisant une planche en sapin pour la structure. Tout de suite le mécanisme est fragile, manque de précision, et est relativement souple… Cerise sur le gâteau : par désespoir, je fais des collages au pistolet à colle. Mauvaise idée ! En fin de compte, l’ensemble est plutôt cohérent, et les mécanismes ne sont pas trop mauvais. Le résultat final, avec tous les branchements, est le suivant :
Appréciez les engrenages de la pince réalisée à base de Tipex roller ! Le servo 9 g est largement capable de maintenir de faibles masses, et les servos résistent assez bien aux efforts.
Pour la partie programmation, c’est devenu un peu plus compliqué ! Initialement j’avais prévu de communiquer une position XYZ à l’Arduino, et que ce dernier détermine par le biais de calculs les coordonnées à envoyer aux différents servos. J’avais largement surestimé les capacités de l’Arduino Uno ! C’est finalement un petit programme (150 lignes) écrit en Java qui permet de déterminer la meilleure combinaison d’angle pour atteindre la position la plus proche de celle souhaitée. L’algorithme est des plus simples et très peu optimisé : la recherche de certaines positions peut prendre quelques minutes. Imaginez de transformer ce bras en imprimante et de devoir trouver des milliers de pixels… Toutefois le programme sort des choses assez sympathiques, accompagnés d’un schéma du bras selon la position.
On constate directement la limite du programme puisqu’il envisage qu’une partie du bras rentre dans le sol ! Ceci est toutefois un cas extrême, puisque globalement le code est efficace. La communication avec l’Arduino se fait en port série, classique. Java envoie une ligne comprenant tous les angles, et l’Arduino l’exécute directement.
J’ai tenté de mesurer la précision du système (avec une règle, précision extrême !), qui était quand même de l’ordre de 1 ou 2 millimètres, ce qui est raisonnable vu la souplesse du bras.
J’ai évidemment essayé de lui faire dessiner un trait, une simple ligne droite. Les positions de départ et d’arrivée étaient exactes, le chemin parcouru entre eux un peu hésitant, mais vous jugerez par vous-même sur la figure 5 du véritable souci au niveau de l’angle du marqueur.
Bref, tout cela devra être refait en métal avec des dimensions différentes pour améliorer la zone couverte par le bras, et surtout avec un algorithme beaucoup plus efficace. Les bases sont là, il suffira de tout reprendre à zéro ! Pour l’instant, le rapport de projet et le blocus arrivant à grands pas, je laisse tout ça de côté, mais ce projet est loin d’être terminé !