Étape 4: Planification des mouvements du Robot
Bien que le robot a seulement deux moteurs à courant continu, il est capable d’effectuer une série de mouvements complexes. Pour garder ce Instructable aussi simple que possible, j’ai choisi de définir seulement environ trois douzaines de mouvements uniformes de base et quelques mouvements complexes formés par la combinaison des mouvements fondamentaux.
Comme vous pouvez le voir dans les images à l’étape 2, je n’utilise pas de capteurs de rotation dans les roues, capteurs à ultrasons ou tout autre type de capteur pour mesurer la distance des objets ou la distance parcourue. Ceci empêche le robot effectuant des mouvements de haute précision. Toutefois, en ne contrôlant que la direction et la vitesse des moteurs vous pouvez obtenir un degré de précision suffisant déplacer le robot.
La première chose que vous devez savoir pour être en mesure de calculer le temps d’exécution nécessaire pour chaque mouvement est la vitesse moyenne de robot. Pour ce faire, placez un ruban à mesurer parallèle au robot et activer simultanément les deux moteurs pour une ou deux secondes, mesurer la distance parcourue et en déduire la vitesse. Dans ma configuration, j’ai obtenu 13,7 cm par seconde employant 62,5 % de la vitesse maximale du moteur (250/400, voir Pololu, bibliothèque de l’Arduino). En d’autres termes, pour avancer le robot 1 mètre (100 cm), les moteurs devaient être activés simultanément pour 7.299270... secondes. J’ai choisi de garder le temps de comptage dans la résolution de millisecondes, mais si vous voulez réaliser une plus grande précision de mouvement, envisagent de soulever la résolution en microsecondes. Longue histoire courte, pour déplacer le robot 1 mètre, je dois activer simultanément les deux moteurs 7299 millisecondes. De ce nombre, tout devient la règle de trois pour les autres distances. Pour effectuer des mouvements circulaires ou l’arc, une roue doit se déplacer plus vite que l’autre. Seulement une roue doit être activé pour activer le robot sur les côtés, ou les deux dans des directions opposées (à tourner sur son axe). Ici, vous devrez utiliser certaines trigonométrie pour déterminer la distance parcourue par chaque roue et pour combien de temps chaque moteur doit être activé. Un bon point de départ pour ces concepts se trouvent dans les liens suivants (je ne vais pas aller plus loin sur ce ici): http://rossum.sourceforge.net/papers/CalculationsForRobotics/CirclePath.htm et http://math.stackexchange.com/questions/60176/move-two-wheeled-robot-from-one-point-to-another.
Comme vous pouvez le voir à la fin de la vidéo ci-dessus, je fais aussi le robot « dessiner » quelques formes géométriques de base (carré, triangle et cercle) sur le sol. Ces mouvements sont obtenus par la combinaison des mouvements de base (par exemple aller de l’avant, tourner, aller vers l’avant, tourner, etc..). La combinaison de ces mouvements est faite dans le BitVoicer serveur Vocal schéma et vous les verrez pas dans le sketch Arduino présenté à l’étape suivante.