Étape 2: Firmware
Au début, j’ai prévu sur toutes les commandes de servo de programmation moi-même en utilisant un arduino et la bibliothèque de servo standard, mais alors trébuché sur les contrôleurs de servo Pololu Mini Maestro et a décidé d’utiliser un de ces. Sinon programmation des mouvements du servo ralenti aurait probablement pris loin de long. Avec ces contrôleurs, vous pouvez définir une vitesse et accélération, envoyer la valeur PWM (dans sa résolution de 1/4ème de milliseconde) et via le protocole série et attendre le signal « terminé ». Envoyez ensuite la valeur suivante et ainsi de suite.
Le robot travaille dans un système de coordonnées polaires, être capable de faire tourner (angle) et sortir/rentrer des (rayon) le bras. L’écran de l’iPad est – d’autre part – un très bon exemple d’un système cartésien (coordonnées x et y). Alors, Comment obtenons-nous un à l’autre ?
Réponse : MATH ! (Ou géométrie, si vous trouvez que moins intimidant;-))
Sir Pythagoras a eu la gentillesse de nous le faire savoir comment calculer les relations entre tous les angles dans un triangle rectangle. Et puisque chaque triangle arbitraire peut être divisé en 2 triangles rectangles, combinés avec quelques connaissances de sinus/cosinus, etc. et les dimensions du robot, cela nous donne la possibilité de :
-Tout d’abord transformer les coordonnées x et y de l’iPad en angle-rayon-valeurs et pour le bras du robot (l’angle va directement à la base-servo)
-Puis traduire le rayon du système de coordonnées polaires en angle-valeurs pour les deux bras-servos.
Le fait que j’ai décidé dès le début ne pas full 3D, mais seulement 2, 5D, rendu cette partie beaucoup plus facile, puisque je pouvais éviter des choses comme la cinématique inverse.
La valeur de quelle hauteur la pointe du robot plane au-dessus de la surface de l’iPad n’est pas contrôlée et calculée comme un angle, mais simplement à une valeur de ms (millisecondes) qui est ajoutée à / soustraira de la servos PWM signal.