Étape 13 : Logiciels : planification de mouvement
Avec notre tableau des valeurs angulaires et nos données de pixels de l’appareil photo, il est maintenant temps de peindre ! Comment le bras aille bien ? Même si les servos sont relativement rapides, simplement leur mise à la forme souhaitée prochaine se traduirait par trop brusque d’une motion. Cette résolution exige interpolation entre les points de deux cible à une vitesse. J’ai organisé la séquence de mouvement en une série de formes et d’actions stockées dans un tableau que j’appellerai la file d’attente de requête. Voici comment la file d’attente est mis en place :
une fois la photo a été traitée, charger une séquence de formes (jeu de 4 angles) pour déplacer le bras en position verticale
charger le chemin pour atteindre la palette de peinture
charger les chemins d’accès pour retourner à la position verticale
faire défiler le tableau image
Vérifiez si un pixel est sombre ou claire
Si un pixel est sombre puis chargez la forme correspondante (le tableau de sortie de l’esquisse de traitement) dans la file d’attente
charger une forme égale à ces angles, mais l’inclinaison, l’angle du coude en arrière un peu (de sorte que le bras ne faites glisser entre les pixels lors de l’interpolation)
Si trente formes ont été chargés dans la file d’attente (15 presses du pinceau à la toile et 15 fois penché en arrière)
charger la séquence de chemin afin de récupérer plus de peinture et de revenir à une position arrière très penchée (interpolation de la position verticale aussi traîne cependant points)
une fois le cycle terminé, charger la séquence de chemin d’accès pour « aller dormir » dans la tasse de l’eau
Exécution de
Une fois que notre file d’attente est pleine, nous aurez besoin de l’exécuter. Cette étape consiste à en cours d’exécution par le biais de notre liste jusqu'à arriver à une valeur vide et ensuite revenir à un contrôle sur les touches. Chaque étape tout en parcourant la file d’attente interpole entre formes, de sorte qu’il a un mouvement plus fluide.
Interpolation
Afin de faciliter le mouvement entre formes, nous allons interpoler entre les deux angles à 1,0 étapes, mais la variables times par joint, afin que les joints tous arrivent à la forme désirée en même temps. Pour ce faire, nous calculons tout d’abord que le changement entre les deux angles pour chaque joint (la deltaTheta par joint). Après avoir trouvé toutes les valeurs de deltaTheta nous allons trier pour trouver le plus grand. Puis nous allons multiplier le deltaTheta plus grand par le minimum de temps, que le moteur peut voyager d’un degré (c’est l’étape minimale que nous allons définir). Celle-ci définira la durée totale telle que le moteur qui doit se déplacer le plus, ne bouge pas tout plus vite qu’il peut voyager d’un degré par degré, tandis que les moteurs qui ont des valeurs plus faibles de deltaTheta, met à jour d’un degré beaucoup plus lent, car la distance totale parcourue est si petite. Calcul du temps basé sur le plus grand changement angulaire signifie également que le bras se déplace pas plus lent que si un temps fixe avait été fixé, car le changement entre les formes peut être assez faible. L’application intégrale de la fonction d’interpolation est largement commenté dans mon esquisse de Galileo.