Tren de transmisión#
Introducción#
The drivetrain class provides control over a drivetrain using separate left and right motors or motor groups.
Clases derivadas#
The drivetrain class serves as a base class for the following derived classes:
smartdrive— This class adds Inertial Sensor, GPS Sensor, or Gyro Sensor support to enable heading-based and rotation-based turns.
Constructores de clases#
1 — This constructor constructs a drivetrain using references to existing
motor_groupinstances for the left (&l) and right (&r) sides.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 — This constructor constructs a drivetrain using references to existing
motorinstances for the left (&l) and right (&r) sides.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Instructor de clase#
Destroys the drivetrain object and releases associated resources.
virtual ~drivetrain();
Parámetros#
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
References to existing |
|
|
The wheel’s circumference. Default is |
|
|
The distance between the left and right wheels. Default is |
|
|
The width of the wheel base. Default is |
|
|
Units for the
|
|
|
The gear ration compensation factor. Default is |
Ejemplo#
// Create the left and right motor instances
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain instance
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor instance
rightMotor, // right motor instance
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
Funciones de los miembros#
The drivetrain class includes the following member functions:
drive— Drives the robot continuously forward or in reverse using the current drive velocity.driveFor— Drives the robot forward or in reverse for a set distance.turn— Rotates the robot continuously left or right using the current turn velocity.turnFor— Rotates the robot left or right for a specified angle.stop— Stops the drivetrain using the configured stopping mode.setDriveVelocity— Sets the default drive velocity used by drive methods.setTurnVelocity— Sets the default turn velocity used by turn methods.setStopping— Sets how the drivetrain behaves when it stops.setTimeout— Sets how long drive and turn methods try to reach their target before timing out.isDone— Returns whether a drivetrain is not currently moving.isMoving— Returns whether a drivetrain is currently moving.velocity— Returns the drivetrain’s current velocity.current— Returns the drivetrain’s current draw.power— Returns the drivetrain’s power usage.torque— Returns the drivetrain’s torque.efficiency— Returns the drivetrain’s efficiency.temperature— Returns the drivetrain motors’ temperature.voltage— Returns the voltage currently applied to the drivetrain.
Before calling any drivetrain member functions, a drivetrain instance must be created, as shown below:
/* 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 instances
motor leftMotor = motor(PORT1, false);
motor rightMotor = motor(PORT9, true);
// Create the drivetrain instance
drivetrain myDrivetrain = drivetrain(
leftMotor, // left motor instance
rightMotor, // right motor instance
259.34, // wheelTravel
320, // trackWidth
40, // wheelBase
mm, // unit
1.0 ); // externalGearRatio
conducir#
Mueve el sistema de transmisión en una dirección específica de forma continua.
Available Functions1 — Conduce utilizando la velocidad de accionamiento configurada.
void drive( directionType dir );
Parameters2 — Conduce a la velocidad especificada.
void drive( directionType dir, double velocity, velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The direction in which the robot drives:
|
|
|
La velocidad a la que se moverá el sistema de transmisión se representa como un valor double. Si no se especifica la velocidad o si previamente se estableció en, la velocidad predeterminada es del 50 %. |
|
|
The unit to represent the velocity:
|
Esta función no devuelve ningún valor.
Notesdriveis non-waiting; the project will continue executing the next line of code immediately after the call.The drivetrain will continue moving until
stopis called or another drivetrain movement function (such asdriveFororturn) is executed.Functions such as
isDoneandisMovingare not applicable todrive, since it does not use target-based movement (doesn’t have adistanceparameter).
// Drive forward and back
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
Mueve el sistema de transmisión en una dirección específica a lo largo de una distancia específica en las unidades especificadas.
Available Functions1 — Conduce en la dirección especificada durante una distancia utilizando la velocidad de conducción configurada.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 — Conduce en una dirección que depende de la distancia utilizando la velocidad de conducción configurada.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 — Conduce en una dirección que depende de la distancia a la velocidad especificada.
bool driveFor( double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 — Conduce en la dirección especificada durante una distancia a la velocidad especificada.
bool driveFor( directionType dir, double distance, distanceUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The direction in which the robot drives:
|
|
|
La distancia que recorrerá el sistema de transmisión. |
|
|
The units representing the distance:
|
|
|
La velocidad a la que se moverá el sistema de transmisión se representa como un valor double. Si no se especifica la velocidad o si previamente se estableció en, la velocidad predeterminada es del 50 %. |
|
|
The unit to represent the velocity:
|
|
|
|
Returns a Boolean indicating whether the drivetrain reached the target distance parameter value:
true— The drivetrain successfully reaches the targetdistanceparameter value.false— The drivetrain does not complete the movement or if thewaitForCompletionparameter is set tofalse.
Executing another drivetrain movement function (such as
driveorturnFor) whiledriveForis in progress will interrupt the current movement.Because
driveForis target-based (uses adistanceparameter), functions such asisDoneandisMovingwork withdriveFor.
// Drive 200 mm, then back 200 mm
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
doblar#
Hace girar el sistema de transmisión en una dirección específica de forma continua.
Available Functions1 — Gira utilizando la velocidad de giro configurada.
void turn( turnType dir );
Parameters2 — Gira a la velocidad especificada.
void turn( turnType dir, double velocity, velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The direction in which the robot turns:
|
|
|
La velocidad a la que girará la transmisión se representa como un valor doble. Si no se especifica la velocidad o si previamente se estableció en, la velocidad predeterminada es del 50 %. |
|
|
The unit to represent the velocity:
|
turnis non-waiting; the project will continue executing the next line of code immediately after the call.The drivetrain will continue turning until
stopis called or another drivetrain movement function (such asturnForordrive) is executed.Functions such as
isDoneandisMovingare not applicable toturn, since it does not use target-based movement (doesn’t have anangleparameter).
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
turnoPara#
Gira el sistema de transmisión en una dirección específica para un ángulo específico en las unidades especificadas.
Available Functions1 — Gira para el ángulo especificado utilizando la velocidad de giro configurada.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 — Gira en la dirección especificada para un ángulo utilizando la velocidad de giro configurada.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 — Giros para el ángulo especificado a la velocidad especificada.
bool turnFor( double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parameters4 — Gira en la dirección especificada para un ángulo a la velocidad especificada.
bool turnFor( turnType dir, double angle, rotationUnits units, double velocity, velocityUnits units_v, bool waitForCompletion = true );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The direction in which the robot turns:
|
|
|
El ángulo de giro de la transmisión. |
|
|
The units representing the angle:
|
|
|
La velocidad a la que girará la transmisión se representa como un valor doble. Si no se especifica la velocidad o si previamente se estableció en, la velocidad predeterminada es del 50 %. |
|
|
The unit to represent the velocity:
|
|
|
|
Returns a Boolean indicating whether the drivetrain reached the target angle parameter value:
true— The drivetrain successfully reaches the targetangleparameter value.false— The drivetrain does not complete the movement or if thewaitForCompletionparameter is set tofalse.
Executing another drivetrain movement function (such as
turnordrive) whileturnForis in progress will interrupt the current movement.Because
turnForis target-based (uses anangleparameter), functions such asisDoneandisMovingwork withturnFor.
// Turn right then left
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
detener#
Detiene la transmisión.
Available Functions1 — Detiene el tren motriz utilizando el modo de parada configurado actualmente.
void stop();
Parameters2 — Detiene la transmisión utilizando el modo de frenado especificado.
void stop( brakeType mode );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The brake type to use when stopping the drivetrain:
|
Esta función no devuelve ningún valor.
Examples// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
establecerVelocidadDeConducción#
Establece la velocidad de transmisión predeterminada para el sistema de transmisión.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La velocidad a la que se moverá el sistema de transmisión. |
|
|
The unit to represent the velocity:
|
Esta función no devuelve ningún valor.
NotesThe drive velocity applies to all subsequent drivetrain movement functions (such as
driveanddriveFor) unless a specific velocity is provided in the function call.
// Drive forward, then coast to a stop
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
establecerVelocidadDeGiro#
Establece la velocidad de giro predeterminada para la transmisión.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La velocidad a la que girará el sistema de transmisión. |
|
|
The units representing the velocity:
|
Esta función no devuelve ningún valor.
NotesThe turn velocity applies to all subsequent drivetrain turning functions (such as
turnandturnFor) unless a specific velocity is provided in the function call.
// 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);
establecerDetención#
Establece el modo de parada predeterminado para el sistema de transmisión.
Available Functionsvoid setStopping(
brakeType mode );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The brake type to use when stopping the drivetrain:
|
Esta función no devuelve ningún valor.
NotesThe stopping mode applies to all subsequent
stopcalls unless a specific stopping mode is provided in the function call.
establecerTiempoDeEspera#
Establece un límite de tiempo para que el sistema de transmisión intente alcanzar una distancia o ángulo determinado. Si el sistema no puede completar el movimiento dentro del tiempo establecido, se detendrá automáticamente y continuará con la siguiente función.
Available Functionsvoid setTimeout(
int32_t time,
timeUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The maximum number of seconds a |
|
|
The unit that represents the time:
|
Esta función no devuelve ningún valor.
NotesThe timeout only applies to target-based drivetrain movement functions (such as
driveForandturnFor).
// Start turning if driving takes too long
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
estáHecho#
Returns a Boolean indicating whether no target-based drivetrain movement (such as driveFor or turnFor) is currently in progress.
bool isDone( void );
Esta función no acepta ningún parámetro.
Return ValuesDevuelve un valor booleano que indica si el sistema de transmisión no se está moviendo:
-
true— The drivetrain is not moving. -
false— The drivetrain is moving.
se está mudando#
Returns a Boolean indicating whether the drivetrain is currently executing a target-based movement (such as driveFor or turnFor).
virtual bool isMoving( void );
Esta función no acepta ningún parámetro.
Return ValuesDevuelve un valor booleano que indica si el sistema de transmisión está en movimiento:
-
true— The drivetrain is moving. -
false— The drivetrain is not moving.
velocidad#
Devuelve la velocidad de la transmisión.
Available Functionsdouble velocity(
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units that represent the velocity:
|
Returns a double indicating the velocity of the drivetrain in the units specified by the units parameter.
// 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();
actual#
Devuelve la cantidad de corriente eléctrica que está utilizando el sistema de transmisión.
Available Functions1 — Devuelve la corriente eléctrica del tren motriz en amperios.
double current( currentUnits units = currentUnits::amp );
Parameters2 — Devuelve la corriente eléctrica del tren motriz como un porcentaje del máximo.
double current( percentUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units that represent the current:
|
|
|
The units that represent the current:
|
Returns a double indicating the amount of electrical current the drivetrain is using in the units specified by the units parameter.
fuerza#
Devuelve el consumo de energía del sistema de transmisión.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units that represent the power:
|
Devuelve un valor de tipo double que representa el consumo de energía del sistema de transmisión en vatios.
esfuerzo de torsión#
Devuelve el par motor producido por la transmisión.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units representing the torque:
|
Returns a double indicating the torque produced by the drivetrain in the units specified by the units parameter.
eficiencia#
Restaura la eficiencia del sistema de transmisión.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units that represent the efficiency:
|
Devuelve un valor de tipo double que representa la eficiencia del sistema de transmisión como porcentaje.
temperatura#
Devuelve la temperatura media de los motores utilizados por el sistema de transmisión.
Available Functionsdouble temperature(
percentUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units that represent the temperature:
|
Devuelve un valor de tipo double que indica la temperatura media de los motores utilizados por el sistema de transmisión como porcentaje.
NotesA returned value of
50%indicates that the average motor temperature is approximately45°C(113°F).The typical operating temperature range for drivetrain motors is approximately
20°C(68°F) to70°C(158°F).
Voltaje#
Devuelve el voltaje eléctrico del sistema de transmisión.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
The units that represent the voltage:
|
Returns a double indicating the voltage of the drivetrain in the units specified by the units parameter.