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 an Inertial Sensor or Gyro 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.
Classes dérivées#
La classe drivetrain sert de classe de base pour les classes dérivées suivantes :
smartdrive- Cette classe ajoute la prise en charge du capteur inertiel ou du capteur gyroscopique pour permettre les virages basés sur le cap et la rotation.
Constructeurs de classes#
1 - Crée une transmission en utilisant
motor_groupexistants pour les côtés gauche (&l) et droit (&r).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
motorexistants pour les côtés gauche (&l) et droit (&r).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 object
rightMotor, // right motor object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Fonctions des membres#
Il existe plusieurs façons de programmer la transmission. Vous trouverez ci-dessous la liste de toutes les fonctions membres de la transmission drivetrain :
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- Tourne le robot à gauche ou à droite d’un nombre spécifique de degrés.stop- Arrête le mouvement du robot.
Modificateurs - Réglage 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 le nombre de secondes pendant lesquelles le robot essaiera de terminer un mouvement.
Getters - Vérifiez 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 fournie à la transmission.
Avant d’appeler les fonctions membres de drivetrain , un objet drivetrain doit être créé, comme indiqué ci-dessous :
/* 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 object
rightMotor, // right motor object
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Actes#
conduire#
La position drive permet au robot d’avancer ou de reculer indéfiniment. Il continuera à se déplacer jusqu’à ce qu’une autre action lui soit donnée, comme tourner ou s’arrêter. Pour les régimes moteur (RPM) ou les coups par seconde (DPS), la limite est modifiée par le rapport de transmission.
1 - Entraînements utilisant la vitesse d’entraînement configurée.
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 % lors de l’utilisation |
|
|
L’unité de vitesse : |
Cette fonction ne renvoie aucune valeur.
NotesLe lecteur
driven’est pas en attente ; le projet continuera d’exécuter la ligne de code suivante immédiatement après l’appel.La transmission continuera à se déplacer jusqu’à ce que
stopsoit appelée ou qu’une autre fonction de mouvement de la transmission (telle quedriveForouturn) soit exécutée.Les fonctions telles que
isDoneetisMovingne sont pas applicables àdrive, car il n’utilise pas de mouvement basé sur une cible (n’a pas de paramètre de distancedistance).
// 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 précise. Par défaut, le programme attend que le robot ait terminé son déplacement avant d’exécuter la ligne de code suivante. Pour les valeurs de RPM ou DPS, la limite est modifiée par le rapport de transmission.
1 - Se déplace dans la direction spécifiée sur une distance en utilisant la vitesse de déplacement configurée.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Se déplace dans une direction dépendant de la distance en utilisant la vitesse de déplacement configurée.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Se déplace dans une direction dépendant de la 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 % lors de l’utilisation |
|
|
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 (telle que
driveouturnFor) pendant quedriveForest en cours interrompra le mouvement en cours.Parce que
driveForest basé sur une cible (utilise un paramètre de distancedistance), les fonctions telles queisDoneetisMovingfonctionnent avecdriveFor.
// 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’une autre action lui soit donnée, comme avancer ou s’arrêter. Pour le régime moteur (RPM) ou les coups par seconde (DPS), la limite est modifiée par le rapport de transmission.
1 - Virages en utilisant la vitesse de virage configurée.
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 : |
turnsignifie qu’il n’y a pas d’attente ; le projet continuera d’exécuter la ligne de code suivante immédiatement après l’appel.La transmission continuera à tourner jusqu’à ce que
stopsoit appelée ou qu’une autre fonction de mouvement de la transmission (telle queturnForoudrive) soit exécutée.Les fonctions telles que
isDoneetisMovingne sont pas applicables àturn, car il n’utilise pas de mouvement basé sur une cible (n’a pas de paramètre d’angleangle).
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
tournerPour#
turnFor tour complet, le robot effectue une rotation à gauche ou à droite d’un nombre de degrés précis. La rotation est relative à la position actuelle du robot. Par défaut, le programme attend la fin de la rotation avant d’exécuter la ligne de code suivante. Pour les valeurs de RPM ou DPS, la limite est modifiée par le rapport de transmission.
1 - Virages pour l’angle spécifié en utilisant la vitesse de virage configurée.
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 configurée.
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 : |
|
|
L’angle de rotation 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 (telle que
turnoudrive) pendant queturnForest en cours interrompra le mouvement en cours.Parce que
turnForest basé sur la cible (utilise un paramètre d’angleangle), les fonctions telles queisDoneetisMovingfonctionnent avecturnFor.
// 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 - Stops the drivetrain using the currently configured stopping mode.
void stop();
Parameters2 - Arrête la transmission en utilisant le mode de freinage 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 commande 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. Pour les tours par minute (RPM) ou les coups par seconde (DPS), la limite est modifiée par le rapport de transmission.
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 s’applique à toutes les fonctions de mouvement de transmission suivantes (telles que
driveetdriveFor) à moins qu’une vitesse spécifique ne soit 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 commande setTurnVelocity indique au robot sa vitesse de rotation. Un pourcentage plus élevé accélère la rotation, et un pourcentage plus faible la ralentit. Pour les tours par minute (RPM) ou les coups par seconde (DPS), la limite est modifiée par le rapport de transmission.
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 s’applique à toutes les fonctions de rotation de la transmission suivantes (telles que
turnetturnFor) à moins qu’une vitesse spécifique ne soit 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 s’applique à tous les appels
stopsuivants, sauf si un mode d’arrêt spécifique est fourni dans l’appel de fonction.
définirTimeout#
La valeur setTimeout définit le délai (en secondes) pendant lequel 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 que le robot 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 mouvement de la transmission basées sur la cible (telles que
driveForetturnFor).
// Start turning if driving takes too long
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.
Une valeur positive indique que le robot avance. Une valeur négative indique que le robot recule.
Available Functionsdouble velocity(
velocityUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de vitesse : |
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 du maximum.
double current( percentUnits units );
Paramètre |
Taper |
Description |
|---|---|---|
|
|
L’unité de retour du courant : |
|
|
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 la forme 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é dans laquelle renvoyer l’efficacité : |
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%indique 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 fournie à 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 tension de retour : |
Renvoie la tension de la transmission sous la forme d’un double double dans l’unité sélectionnée.