Transmission#
Introduction#
La classe drivetrain contrôle la façon dont un robot se déplace et tourne. Une transmission est composée de moteurs et de roues qui fonctionnent ensemble pour déplacer le robot.
A drivetrain does not use a Gyro Sensor or Inertial Sensor for heading-based or rotation-based turns. It can drive forward or reverse and turn left or right, but it cannot turn to a specific heading or rotation. For heading-based and rotation-based turns, use the smartdrive class.
Cette page utilise myDrivetrain comme nom de transmission d’exemple. Remplacez-le par le nom que vous avez configuré, selon vos besoins.
Classes dérivées#
La classe drivetrain sert de classe de base pour la classe dérivée suivante :
smartdrive- Crée une transmission avec prise en charge du capteur gyroscopique ou du capteur inertiel.
Constructeurs de classes#
1 - Crée une transmission en utilisant
motor_groupexistants pour les côtés gauche et droit.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Crée une transmission en utilisant des objets
motorexistants pour les côtés gauche et droit.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Destructeur de classe#
Détruit l’objet drivetrain et libère les ressources associées.
virtual ~drivetrain();
Paramètres#
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Les moteurs ou groupes de moteurs gauche et droit. Les deux paramètres doivent utiliser le même type : soit deux objets |
|
|
La circonférence des roues de transmission. La valeur par défaut est |
|
|
La distance entre les roues gauche et droite. La valeur par défaut est |
|
|
La distance entre les roues avant et arrière. La valeur par défaut est |
|
|
L’unité pour |
|
|
Le rapport de transmission utilisé pour ajuster les distances de transmission si des engrenages sont utilisés. La valeur par défaut est |
Exemple#
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Fonctions des membres#
La classe drivetrain comprend les fonctions membres suivantes :
Actions - Déplacer et faire pivoter le robot.
drive- Déplace le robot vers l’avant ou vers l’arrière en permanence.driveFor- Déplace le robot vers l’avant ou vers l’arrière sur une distance spécifique.turn- Fait tourner le robot à gauche ou à droite indéfiniment.turnFor- Fait tourner le robot à gauche ou à droite pour un nombre spécifique de degrés ou de révolutions.stop- Arrête le mouvement du robot.
Paramètres - Ajuster les paramètres de la transmission.
setDriveVelocity- Indique au robot à quelle vitesse conduire.setTurnVelocity- Indique au robot à quelle vitesse tourner.setStopping- Indique comment le robot s’arrêtera de bouger : en freinant, en roulant sur sa roue ou en maintenant.setTimeout- Définit la durée pendant laquelle le robot essaiera de terminer un mouvement.
Valeurs - Vérifier l’état du mouvement.
isDone- Renvoie si le robot a fini de se déplacer, sous forme de valeur booléenne.isMoving- Renvoie si le robot est en mouvement, sous forme de valeur booléenne.velocity- Renvoie la vitesse à laquelle le robot se déplace.current- Renvoie la quantité de courant électrique utilisée par la transmission.power- Renvoie la vitesse à laquelle la transmission utilise l’énergie.torque- Renvoie la quantité de couple utilisée par la transmission.efficiency- Renvoie l’efficacité avec laquelle la transmission utilise la puissance.temperature- Renvoie la température de la transmission.voltage- Renvoie la tension électrique de la transmission.
Avant d’appeler les fonctions membres de drivetrain , un objet drivetrain doit être créé.
/* This constructor is required when using VS Code.
Drivetrain configuration is generated automatically
in VEXcode using the Device Menu. Replace the values
as needed. */
// Create the left and right motor objects.
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain object.
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor
rightMotor, // right motor
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Actes#
conduire#
La commande drive fait avancer ou reculer le robot indéfiniment. Le robot continuera à se déplacer jusqu’à ce qu’une autre action, comme tourner ou s’arrêter, lui soit donnée.
1 - Entraînements utilisant la vitesse d’entraînement actuelle.
void drive( directionType dir );
Parameters2 - Se déplace à la vitesse spécifiée.
void drive( directionType dir, double velocity, velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La direction dans laquelle le robot se déplace : |
|
|
La vitesse de déplacement peut être de 0 % à 100 % avec |
|
|
L’unité de vitesse : |
Cette fonction ne renvoie aucune valeur.
NotesLe lecteur
driven’est pas en attente. Le projet exécutera immédiatement la ligne de code suivante.Le robot continuera à se déplacer jusqu’à ce que
stopsoit appelé ou qu’une autre fonction de mouvement de la transmission s’exécute.isDoneetisMovingne sont pas utilisés avecdrivecardriven’a pas de distance cible.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
conduirePour#
La commande driveFor déplace le robot en avant ou en arrière sur une distance spécifique. Le programme attendra que le robot ait terminé son déplacement avant d’exécuter la ligne de code suivante.
1 - Se déplace dans la direction spécifiée sur une distance en utilisant la vitesse de déplacement actuelle.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Se déplace dans une direction en fonction de la valeur de distance en utilisant la vitesse de déplacement actuelle.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Se déplace dans une direction en fonction de la valeur de distance à la vitesse spécifiée.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Se déplace dans la direction spécifiée sur une distance à la vitesse spécifiée.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La direction dans laquelle le robot se déplace : |
|
|
La distance parcourue par le robot. |
|
|
L’unité de distance : |
|
|
La vitesse de déplacement peut être de 0 % à 100 % avec |
|
|
L’unité de vitesse : |
|
|
|
Renvoie, sous forme de valeur booléenne, si le robot a atteint la distance cible.
true- Le robot a atteint la distance cible.false- Le robot n’a pas terminé le mouvement, ou la fonction est retournée avant que le mouvement ne soit terminé parce quewaitForCompletiona été défini surfalse.
L’exécution d’une autre fonction de mouvement de transmission pendant que
driveForest en cours interrompra le mouvement en cours.driveForutilise une distance cible, doncisDoneetisMovingpeuvent être utilisés avec lui.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
tourner#
turn fait tourner le robot à gauche ou à droite en continu. Il continuera de tourner jusqu’à ce qu’on lui donne une autre instruction, comme avancer ou s’arrêter.
1 - Virages en utilisant la vitesse de virage actuelle.
void turn( turnType dir );
Parameters2 - Virages à la vitesse spécifiée.
void turn( turnType dir, double velocity, velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La direction dans laquelle le robot tourne : |
|
|
La vitesse de rotation peut être de 0 % à 100 % avec |
|
|
L’unité de vitesse : |
Cette fonction ne renvoie aucune valeur.
Notesturnsignifie qu’il n’y a pas d’attente. Le projet exécutera immédiatement la ligne de code suivante.Le robot continuera à tourner jusqu’à ce que
stopsoit appelé ou qu’une autre fonction de mouvement de la transmission s’exécute.isDoneetisMovingne sont pas utilisés avecturncarturnn’a pas d’angle cible.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
tournerPour#
turnFor tour, le robot effectue une rotation à gauche ou à droite d’un nombre précis de degrés, de tours ou d’unités. La rotation est relative à la position actuelle du robot. Le programme attendra la fin de la rotation avant d’exécuter la ligne de code suivante.
1 - Virages pour l’angle spécifié en utilisant la vitesse de virage actuelle.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Virages dans la direction spécifiée pour un angle en utilisant la vitesse de virage actuelle.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Virages pour l’angle spécifié à la vitesse spécifiée.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 - Virages dans la direction spécifiée pour un angle à la vitesse spécifiée.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La direction dans laquelle le robot tourne : |
|
|
Le nombre de tours du robot. |
|
|
L’unité de rotation : |
|
|
La vitesse de rotation peut être de 0 % à 100 % avec |
|
|
L’unité de vitesse : |
|
|
|
Renvoie, sous forme de valeur booléenne, si le robot a atteint l’angle cible.
true- Le robot a atteint l’angle cible.false- Le robot n’a pas terminé le tour, ou la fonction a renvoyé avant que le tour ne soit terminé parce quewaitForCompletiona été défini surfalse.
L’exécution d’une autre fonction de mouvement de transmission pendant que
turnForest en cours interrompra le mouvement actuel.turnForutilise un angle cible, doncisDoneetisMovingpeuvent être utilisés avec lui.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
arrêt#
stop arrête le mouvement du robot. Si un mode d’arrêt est spécifié, il détermine la manière dont le robot s’arrête pour cet appel de fonction.
1 - Arrête la transmission en utilisant le mode d’arrêt actuel.
void stop();
Parameters2 - Arrête la transmission en utilisant le mode d’arrêt spécifié.
void stop( brakeType mode );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Mode d’arrêt du robot :
|
Cette fonction ne renvoie aucune valeur.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutateurs#
définir la vitesse de conduite#
La valeur setDriveVelocity indique au robot sa vitesse de déplacement. Un pourcentage plus élevé augmente la vitesse du robot, et un pourcentage plus faible la diminue.
Chaque projet commence avec le robot se déplaçant par défaut à 50 % de sa vitesse maximale.
Remarque : Une vitesse plus élevée rend le robot plus rapide, mais peut nuire à sa précision. Une vitesse plus faible le rend plus lent, mais peut améliorer sa précision.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La vitesse de déplacement de 0 % à 100 % lors de l’utilisation |
|
|
L’unité de vitesse : |
Cette fonction ne renvoie aucune valeur.
NotesLa vitesse d’entraînement est utilisée par les fonctions de mouvement de la transmission ultérieures, sauf si une vitesse spécifique est fournie dans l’appel de fonction.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
définirVitesseDeTournement#
La valeur setTurnVelocity indique au robot sa vitesse de rotation. Un pourcentage plus élevé accélère la rotation, et un pourcentage plus faible la ralentit.
Chaque projet commence par défaut avec le robot tournant à 50 % de sa vitesse maximale.
Remarque : Une vitesse plus élevée permet au robot de tourner plus vite, mais sa précision peut être moindre. Une vitesse plus faible permet au robot de tourner plus lentement, mais sa précision peut être accrue.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
La vitesse de rotation de 0 % à 100 % lors de l’utilisation |
|
|
L’unité de vitesse : |
Cette fonction ne renvoie aucune valeur.
NotesLa vitesse de rotation est utilisée par les fonctions de rotation de la transmission ultérieures, sauf si une vitesse spécifique est fournie dans l’appel de fonction.
// Try default, slow, then fast.
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(20, percent);
myDrivetrain.turnFor(right, 360, degrees);
wait(1, seconds);
myDrivetrain.setTurnVelocity(100, percent);
myDrivetrain.turnFor(right, 360, degrees);
Arrêt de l’ensemble#
setStopping définit comment le robot s’arrêtera de bouger : en freinant, en laissant le robot rouler ou en maintenant le mouvement.
void setStopping(
brakeType mode );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Mode d’arrêt du robot :
|
Cette fonction ne renvoie aucune valeur.
NotesLe mode d’arrêt est utilisé par les appels ultérieurs
stopà moins qu’un mode d’arrêt spécifique ne soit fourni dans l’appel de fonction.Si cette fonction n’est pas utilisée, le robot utilisera le frein
brakelors de l’arrêt.
définirTimeout#
`setTimeout setTimeout définit la durée pendant laquelle le robot tente de terminer un mouvement. S’il n’y parvient pas, il interrompt ses tentatives et passe à la ligne de code suivante. Cela évite qu’il ne se bloque.
void setTimeout(
int32_t time,
timeUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
Durée pendant laquelle le robot peut tenter de terminer un mouvement. Il doit s’agir d’un nombre entier positif. |
|
|
L’unité de temps : |
Cette fonction ne renvoie aucune valeur.
NotesLe délai d’attente ne s’applique qu’aux fonctions de transmission qui se déplacent vers une cible, telles que
driveForetturnFor.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getters#
c’est fait#
La fonction isDone renvoie isDone , indiquant si le robot a terminé son déplacement (valeur booléenne). Cette information peut être utilisée pour contrôler le déclenchement d’autres actions en fonction des mouvements du robot.
bool isDone( void );
Cette fonction n’accepte aucun paramètre.
Return Valuestrue- Le robot a terminé son déplacement.false- Le robot est toujours en mouvement.
est en mouvement#
La fonction isMoving renvoie isMoving indiquant si le robot est en mouvement (valeur booléenne). Cette information peut être utilisée pour contrôler le déclenchement d’autres comportements en fonction des mouvements du robot.
virtual bool isMoving( void );
Cette fonction n’accepte aucun paramètre.
Return Valuestrue- Le robot est en mouvement.false- Le robot ne bouge pas.
vitesse#
La vitesse velocity indique la vitesse à laquelle le robot se déplace.
Elle peut renvoyer la vitesse en pourcentage, en rpmou en dps. Une valeur positive indique que le robot avance, une valeur négative indique qu’il recule.
double velocity(
velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité pour renvoyer la vitesse en : |
Renvoie la vitesse de la transmission sous la forme d’un double dans l’unité sélectionnée.
// Show velocity before and during motion.
Brain.Screen.print("Resting: %f", myDrivetrain.velocity(percent));
myDrivetrain.drive(forward, 100, velocityUnits::pct);
wait(1, seconds);
Brain.Screen.newLine();
Brain.Screen.print("Moving: %f", myDrivetrain.velocity(percent));
myDrivetrain.stop();
actuel#
La fonction current indique la consommation électrique de la transmission. Le courant correspond à la quantité d’électricité qui traverse la transmission. Il peut être exprimé en ampères (A) ou en pourcentage, selon l’unité de mesure.
Une intensité plus élevée signifie que la transmission consomme davantage de courant électrique. Cela peut se produire lorsque le robot pousse contre un objet ou tente de se dégager alors qu’il est bloqué.
Cela permet de vérifier si la transmission force pendant un mouvement. Si le courant reste élevé, la transmission risque de chauffer ou de consommer moins d’énergie.
Available Functions1 - Renvoie le courant électrique de la transmission en ampères.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Renvoie le courant électrique de la transmission en pourcentage.
double current( percentUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité pour renvoyer le courant entrant : |
|
|
L’unité de retour du courant : |
Renvoie le courant de la transmission sous la forme d’un double double dans l’unité sélectionnée.
pouvoir#
La puissance power la transmission utilise l’énergie.
Une valeur de puissance plus élevée signifie que la transmission consomme de l’énergie plus rapidement. Cela peut se produire lorsque le robot pousse contre un objet ou tente de se dégager alors qu’il est bloqué.
Cela permet de comparer les mouvements ou de vérifier si la transmission peine. Si la puissance reste élevée, la transmission risque de chauffer ou de consommer moins d’énergie.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de puissance : |
Renvoie la puissance de la transmission sous forme de double en watts.
couple#
Le couple indique la force avec laquelle la transmission peut pousser ou tirer pendant que les roues tournent.
torque renvoie la quantité de couple utilisée par la transmission, mesurée en Newton-mètres (Nm) ou en pouces-livres (InLb).
Une valeur de couple plus élevée signifie que la transmission exerce une force de poussée ou de traction plus importante. Cela peut se produire lorsque le robot pousse contre un objet ou tente de se dégager alors qu’il est bloqué.
Cela peut servir à vérifier si la transmission peine ou à comparer la force de poussée nécessaire pour différents mouvements.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de retour du couple : |
Renvoie le couple de transmission sous la forme d’un double dans l’unité sélectionnée.
efficacité#
efficiency indique l’efficacité avec laquelle la transmission utilise la puissance, en pourcentage de 0 % à 100 %.
Le rendement indique la part de la puissance de la transmission utilisée pour le mouvement. Un rendement élevé signifie qu’une plus grande partie de la puissance est utilisée pour le déplacement. Un rendement faible peut s’expliquer par un effort important de la transmission sans déplacement significatif, par exemple lorsque le robot est bloqué ou qu’il pousse contre un obstacle.
Cela peut servir à comparer des mouvements ou à vérifier si la transmission gaspille de l’énergie au lieu de l’utiliser pour le mouvement.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de retour de l’efficacité est : |
Renvoie le rendement de la transmission sous la forme double dans l’unité sélectionnée.
température#
La fonction temperature renvoie la température moyenne de la transmission en pourcentage, de 0 % à 100 %.
La température indique le niveau de chaleur des moteurs de transmission. Une température plus élevée signifie que les moteurs chauffent pendant leur fonctionnement. Pour un fonctionnement optimal, les moteurs doivent rester en dessous de 55 °C.
Si les moteurs surchauffent, leur courant maximal sera réduit pour se protéger. À 70 °C, les moteurs s’arrêteront complètement jusqu’à leur refroidissement.
Cela peut servir à vérifier si la transmission chauffe excessivement lors de mouvements répétés, de longues courses ou lorsqu’elle exerce une pression contre un objet.
Available Functionsdouble temperature(
percentUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de retour de la température : |
Renvoie la température moyenne de la transmission sous la forme d’un double dans l’unité sélectionnée.
Une valeur renvoyée de
50%signifie que la température moyenne du moteur est d’environ45°C(113°F).La plage de température de fonctionnement typique de la transmission est d’environ
20°C(68°F) à70°C(158°F).
tension#
La tension voltage renvoie la tension électrique de la transmission.
La tension correspond à la pression électrique fournie aux moteurs de la transmission. Elle peut être utilisée conjointement avec les valeurs de courant et de puissance pour comprendre comment la transmission utilise l’énergie électrique.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de retour de la tension : |
Renvoie la tension de la transmission sous la forme d’un double double dans l’unité sélectionnée.