Le mode véhicule

Présentation
Le mode véhicule
Dans cette partie, on appelle véhicule un ensemble de deux roues entraînées de façon synchrone par deux moteurs.
Un véhicule se caractérise par :
- le diamètre des roues ;
- la distance entre les roues (distance mesurée à partir des points de contact avec le sol).
Le point de référence est le point situé au milieu entre les deux roues.
Importer les classes
La classe DriveBase
permet de créer un véhicule.
L'importation des classes Motor
, DriveBase
et Port
est nécessaire.
#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.robotics import DriveBase
Initialiser le véhicule
💻 mon_vehicule = DriveBase(left_motor, right_motor, wheel_diameter, axle_track)
Description
Crée un véhicule avec deux roues entrainées par deux moteurs.
Attention : l'initialisation d'un véhicule nécessite d'abord d'initialiser les moteurs en créant deux instances de la classe Motor
, ces deux instances seront utilisées comme paramètres.
Paramètres
left_motor
(Motor
) – Le moteur de la roue gauche.right_motor
(Motor
) – Le moteur de la roue droite.wheel_diameter
(int
) – Diamètre des roues en millimètre.axle_track
(int
) – Distance entre les roues en millimètre (distance mesurée à partir des points de contact avec le sol).
Exemple
#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.robotics import DriveBase
# Initialisation des deux moteurs
m_left = Motor(Port.B)
m_right = Motor(Port.C)
# Initialisation du véhicule robotisé
robot = DriveBase(m_left, m_right, 56, 114)
Démarrer et arrêter le véhicule
💻 mon_vehicule.drive(drive_speed, turn_rate)
Description
Démarre le véhicule en le faisant avancer et/ou tourner aux vitesses spécifiées.
Paramètres
drive_speed
(int
) – Vitesse à laquelle le véhicule va avancer en mm/s.turn_rate
(int
) – Vitesse à laquelle le véhicule va tourner en deg/s.
💻 mon_vehicule.stop()
Description
Arrête les moteurs.
Exemple
Fait avancer le robot pendant 2000 ms à la vitesse de 50 mm/s (soit un déplacement de 100 mm) puis fait tourner le robot pendant 2000 ms à la vitesse angulaire de 45 deg/s (soit une rotation d'un angle de 90 deg).
#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.robotics import DriveBase
from pybricks.tools import wait
# Initialisation des deux moteurs
m_left = Motor(Port.A)
m_right = Motor(Port.B)
# Initialisation du véhicule robotisé
robot = DriveBase(m_left, m_right, 44, 114)
robot.drive(50,0)
wait(2000)
robot.stop()
robot.drive(0,45)
wait(2000)
robot.stop()
Mesurer la distance parcourue ou l'angle de rotation
💻 mon_vehicule.distance()
Description
Renvoie la distance parcourue estimée depuis la dernière réinitialisation.
Valeur renvoyée
- (int) - Distance cumulée estimée depuis le dernier appel à la fonction
reset()
.
💻 mon_vehicule.angle()
Description
Renvoie l'angle de rotation accumulé estimé depuis la dernière réinitialisation
Valeur renvoyée
- (int) - Angle de rotation cumulé estimé depuis le dernier appel à la fonction
reset()
.
💻 mon_vehicule.state()
Description
Renvoie la distance, la vitesse linéaire, l'angle et la vitesse angulaire du véhicule.
Valeur renvoyée
- (tuple) - (distance (int) en mm, vitesse linéaire (int) en mm/s, angle (int) en deg, vitesse angulaire (int) en deg/s)
💻 mon_vehicule.reset()
Description
Réinitialise à 0 la valeur de la distance et de l'angle pour les fonctions distance()
, angle()
et state()
.
Exemple
#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.robotics import DriveBase
from pybricks.tools import wait
# Initialisation des deux moteurs
m_left = Motor(Port.A)
m_right = Motor(Port.B)
# Initialisation du véhicule robotisé
robot = DriveBase(m_left, m_right, 44, 114)
robot.drive(50,0)
while robot.distance() < 100:
wait(100)
robot.stop()
Avancer ou tourner avec des valeurs spécifiées
💻 mon_vehicule.settings(straight_speed, straight_acceleration, turn_rate, turn_acceleration)
Description
Définit les vitesses et accélérations pour les fonctions straight(distance)
et turn(angle)
.
L'utilisation de la fonction settigns()
ne peut se faire que lorsque le robot est arrêté, c'est à dire avant qu'il ne démarre ou après l'appel de la fonction stop()
.
Remarque : Sans argument, la fonction renvoie les valeurs sous la forme d'un tuple.
Paramètres
straight_speed
(int
) - Définit la vitesse linéaire du véhicule en mm/s.straight_acceleration
(turn_rate
(int
) - Définit la vitesse angulaire du véhicule en deg/s.turn_acceleration
(
💻 mon_vehicule.straight(distance)
Description
Fait avancer le véhicule de la distance spécifiée en mm.
Paramètre
distance
(int
) - Distance en mm.
💻 mon_vehicule.turn(angle)
Description
Fait tourner le véhicule sur place de l'angle spécifié en deg.
Paramètre
angle
(int
) - Angle en deg.
Exemple
Fait avancer le robot d'une distance de 100 mm avec :
- un démarrage qui se fait avec une accélération de 100 mm/s² ;
- un déplacement à vitesse constante à 50 mm/s ;
- un ralenti qui se fait avec une décélération de 100 mm/s².
#!/usr/bin/env pybricks-micropython
from pybricks.ev3devices import Motor
from pybricks.parameters import Port
from pybricks.robotics import DriveBase
from pybricks.tools import wait
# Initialisation des deux moteurs
m_left = Motor(Port.A)
m_right = Motor(Port.B)
# Initialisation du véhicule robotisé
robot = DriveBase(m_left, m_right, 44, 114)
robot.settings(50, 100, 45, 0)
robot.straight(100)