Développeur>Tutoriels>Gestion des déplacements du robot MRPi1
Partie 2 : Gestion des déplacements du robot
Date mise à jour : 8 avril 2016
Introduction
Dans ce tutoriel vous allez apprendre à gérer les déplacements du robot MRPi1 avec la prise en compte des encodeurs en quadrature. Les encodeurs des moteurs vont permettre de connaître la vitesse et le déplacement du robot.
- Faire avancer le robot d’une distance n
- Faire reculer le robot d’une distance n
- Tourné à droite et à gauche d’un angle b
Information sur les encodeurs : https://fr.wikipedia.org/wiki/Codeur_rotatif
Déplacement avec contrôle
Cette partie, va vous permettre de réaliser des déplacements avec un contrôle sur la distance et l’orientation du robot.
Exemple :
Vous souhaitez faire avancer le robot de 10 cm puis de tourner de 90° avec précision.
Les différents fonctions (cliquez sur la fonction pour plus d’informations) :
- forwardC() : avancer.
- backC() : reculer.
- turnRightC() : tourné à droite.
- turnLeftC() : tourné à gauche.
Voici un script python de déplacement du robot :
Nom du script : deplacement3.py
#!/usr/bin/python from mrpi1_lib import * import time # activer controle controlEnable() # avancer de 10 cm (400 = 10 cm) avec vitesse = 10% forwardC(10, 400) # tourner a droite de 90° (546 = 90°) turnRightC(546) # fin exit()
Exécuter le programme, le robot doit :
- Début du programme
- Activer le contrôle
- Avancer de 10 cm
- Puis tourner à droite de 90°
- Fin du programme
Dans un premier temps il faut activer le contrôle :
controlEnable()
Cette fonction permet d’activer l’asservissement du robot en position/orientation. Les fonctions forward(), back(), turnLeft(), turnRight() sont désactivé.
La fonction forwardC:
forwardC(10, 400)
Cette fonction permet de faire avancer MRPi1 de 10 cm avec une vitesse de 30%. La vitesse du robot doit suivre une vitesse de type trapézoïdal :
Pourquoi le nombre 400 en paramètre ?
Les moteurs du robot MRPi1 sont équipés d’encodeurs en quadrature permettant de donner une information de déplacement en nombre de ticks.
Caractéristique des encodeurs :
- Résolution : 200 ticks par tours
- Type : quadrature
Par rapport à la taille des roues du robot et du réducteur du moteur, la résolution de sortie est de :
- 4 ticks = 1 mm
Donc, si vous voulez faire avancer le robot de 10 cm, il faut avancer de 400 ticks.
Ensuite, faire tourner le robot de 90°:
- Le périmètre de l’essieu du robot est de 273 mm :
273 mm = 1092 ticks pour 180°
Donc pour faire tourner le robot de 90°, il faut tourner de 546 ticks.
turnRightC(546)
Voilà, vous pouvez maintenant déplacer votre robot MRPi1 de manière précise.
Essayer de modifier la vitesse :
forwardC(30, 400)
Et la vous obtenez une erreur !
Pourquoi ?
Parce que la vitesse est trop rapide par rapport à la distance à effectuer. Il faut diminuer la vitesse ou augmenter la distance.
Exemple:
forwardC(30, 1200)
Le robot avance de combien de centimètre ?
1200/4 = 300 mm soit 30 cm
Tourner
Voici un autre script python de déplacement du robot :
Nom du script : deplacement4.py
#!/usr/bin/python from mrpi1_lib import * import time # activer le controle controlEnable() # tourner a droite turnRightC(1092) # tourner a gauche turnLeftC(546) # desactiver le controle controlDisable() # fin exit()
Ce script permet de :
- tourné à droite de 180°
- tourné à gauche de 90°
Voilà, fin de ce tutorial.