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) :

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 :

  1. Début du programme
  2. Activer le contrôle
  3. Avancer de 10 cm
  4. Puis tourner à droite de 90°
  5. 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 :

trapeze

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 !

image3

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.