Tren de transmisión#
Introducción#
La clase de sistema de transmisión drivetrain controla cómo se desplaza y gira un robot. Un sistema de transmisión está compuesto por motores y ruedas que trabajan conjuntamente para mover el robot.
Un sistema de transmisión drivetrain no utiliza un Sensor giroscópico para giros basados en rumbo o rotación. Puede avanzar o retroceder y girar a la izquierda o a la derecha, pero no puede girar a un rumbo o rotación específicos. Para giros basados en rumbo y rotación, utilice la clase smartdrive.
Esta página utiliza myDrivetrain como nombre de ejemplo para el tren motriz. Reemplácelo con el nombre que haya configurado según sea necesario.
Clases derivadas#
La clase drivetrain sirve como clase base para la siguiente clase derivada:
smartdrive- Crea un sistema de transmisión con soporte para sensor giroscópico.
Constructores de clase#
1 - Crea un tren de transmisión utilizando
motor_groupexistentes para los lados izquierdo y derecho.drivetrain( motor_group &l, motor_group &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
2 - Crea un tren de transmisión utilizando los objetos existentes
motorpara los lados izquierdo y derecho.drivetrain( motor &l, motor &r, double wheelTravel = 320, double trackWidth = 320, double wheelBase = 130, distanceUnits unit = mm, double externalGearRatio = 1.0 );
Destructor de clase#
Destruye el objeto drivetrain y libera los recursos asociados.
virtual ~drivetrain();
Parámetros#
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Los motores o grupos de motores izquierdo y derecho. Ambos parámetros deben usar el mismo tipo: dos objetos |
|
|
La circunferencia de las ruedas del tren motriz. El valor predeterminado es |
|
|
La distancia entre las ruedas izquierda y derecha. El valor predeterminado es |
|
|
La distancia entre las ruedas delanteras y traseras. El valor predeterminado es |
|
|
La unidad para |
|
|
La relación de transmisión utilizada para ajustar las distancias de transmisión si se utilizan marchas. El valor predeterminado es |
Ejemplo#
// 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
Funciones de los miembros#
La clase drivetrain incluye las siguientes funciones miembro:
Acciones: mueve y gira el robot.
drive- Mueve el robot hacia adelante o hacia atrás indefinidamente.driveFor- Mueve el robot hacia adelante o hacia atrás una distancia específica.turn- Gira el robot hacia la izquierda o hacia la derecha indefinidamente.turnFor- Gira el robot hacia la izquierda o hacia la derecha un número específico de grados o revoluciones.stop- Detiene el movimiento del robot.
Ajustes: ajusta los ajustes del tren motriz.
setDriveVelocity- Indica al robot a qué velocidad debe conducir.setTurnVelocity- Indica al robot a qué velocidad debe girar.setStopping- Indica cómo el robot dejará de moverse: frenando, dejándose llevar por inercia o manteniéndose en posición.setTimeout- Establece cuánto tiempo intentará el robot terminar un movimiento.
Valores - Compruebe el estado del movimiento.
isDone- Devuelve si el robot ha terminado de moverse, como un valor booleano.isMoving- Devuelve si el robot se está moviendo, como un valor booleano.velocity- Devuelve la velocidad a la que se desplaza el robot.current- Devuelve cuánta corriente eléctrica está utilizando el sistema de transmisión.power- Devuelve la rapidez con la que el sistema de transmisión está utilizando energía.torque- Devuelve cuánto torque está utilizando el sistema de transmisión.efficiency- Devuelve la eficiencia con la que el sistema de transmisión utiliza la energía.temperature- Devuelve qué tan caliente está el tren motriz.voltage- Devuelve el voltaje eléctrico del tren de transmisión.
Before calling any drivetrain member functions, a drivetrain object must be created.
/* 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
Acciones#
unidad#
La acción drive indefinidamente. El robot continuará moviéndose hasta que se le indique otra acción, como girar o detenerse.
1 - Conduce con la velocidad de conducción actual.
void drive( directionType dir );
Parameters2 - Conduce a la velocidad especificada.
void drive( directionType dir, double velocity, velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La dirección en la que se mueve el robot: |
|
|
La velocidad de conducción varía entre 0 % y 100 % al usar |
|
|
La unidad de velocidad: |
Esta función no devuelve un valor.
NotesLa unidad
driveno está en espera. El proyecto ejecutará la siguiente línea de código inmediatamente.El robot continuará moviéndose hasta que se llame a
stopo se ejecute otra función de movimiento del tren motriz.isDoneyisMovingno se utilizan condriveporquedriveno tiene una distancia objetivo.
// Drive forward and back.
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.drive(reverse, 25, rpm);
wait(2, seconds);
myDrivetrain.stop();
driveFor#
driveFor mueve el robot hacia adelante o hacia atrás una distancia específica. El proyecto esperará hasta que el robot termine de moverse antes de ejecutar la siguiente línea de código.
1 - Conduce en la dirección especificada durante una distancia utilizando la velocidad de conducción actual.
bool driveFor( directionType dir, double distance, distanceUnits units, bool waitForCompletion = true );
2 - Conduce en una dirección basada en el valor de la distancia utilizando la velocidad de conducción actual.
bool driveFor( double distance, distanceUnits units, bool waitForCompletion = true );
3 - Conduce en una dirección basada en el valor 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 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 |
|---|---|---|
|
|
La dirección en la que se mueve el robot: |
|
|
La distancia que recorre el robot. |
|
|
La unidad de distancia: |
|
|
La velocidad de conducción varía entre 0 % y 100 % al usar |
|
|
La unidad de velocidad: |
|
|
|
Devuelve si el robot alcanzó la distancia objetivo, como un valor booleano.
true- El robot alcanzó la distancia objetivo.false- El robot no terminó el movimiento, o la función regresó antes de que el movimiento se completara porquewaitForCompletionse estableció enfalse.
Ejecutar otra función de movimiento del tren motriz mientras se está ejecutando
driveForinterrumpirá el movimiento actual.driveForutiliza una distancia objetivo, por lo queisDoneyisMovingse pueden usar con él.
// Drive 200 mm, then back 200 mm.
myDrivetrain.driveFor(forward, 200, mm);
myDrivetrain.driveFor(reverse, 200, mm);
giro#
turn hace que el robot gire a la izquierda o a la derecha indefinidamente. El robot seguirá girando hasta que se le dé otra acción, como conducir o detenerse.
1 - Gira usando la velocidad de giro actual.
void turn( turnType dir );
Parameters2 - Gira a la velocidad especificada.
void turn( turnType dir, double velocity, velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La dirección en la que gira el robot: |
|
|
La velocidad de giro varía entre 0 % y 100 % al usar |
|
|
La unidad de velocidad: |
Esta función no devuelve un valor.
NotesEl turno
turnno requiere espera. El proyecto ejecutará la siguiente línea de código inmediatamente.El robot continuará girando hasta que se llame a
stopo se ejecute otra función de movimiento del tren motriz.isDoneyisMovingno se utilizan conturnporqueturnno tiene un ángulo objetivo.
// Turn right, then left, then stop.
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
turnFor#
turnFor hace girar el robot hacia la izquierda o hacia la derecha un número específico de grados, revoluciones o unidades brutas. El giro es relativo a la posición actual del robot. El programa esperará a que el robot termine de girar antes de ejecutar la siguiente línea de código.
1 - Gira para el ángulo especificado utilizando la velocidad de giro actual.
bool turnFor( double angle, rotationUnits units, bool waitForCompletion = true );
2 - Gira en la dirección especificada para un ángulo utilizando la velocidad de giro actual.
bool turnFor( turnType dir, double angle, rotationUnits units, bool waitForCompletion = true );
3 - Gira 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 |
|---|---|---|
|
|
La dirección en la que gira el robot: |
|
|
La cantidad que gira el robot. |
|
|
La unidad de medida de giro es: |
|
|
La velocidad de giro varía entre 0 % y 100 % al usar |
|
|
La unidad de velocidad: |
|
|
|
Devuelve si el robot alcanzó el ángulo objetivo, como un valor booleano.
true- El robot alcanzó el ángulo objetivo.false- El robot no terminó el giro, o la función regresó antes de que el giro se completara porquewaitForCompletionse estableció enfalse.
Ejecutar otra función de movimiento del tren motriz mientras se está ejecutando
turnForinterrumpirá el movimiento actual.turnForutiliza un ángulo objetivo, por lo queisDoneyisMovingse pueden usar con él.
// Turn right, then left.
myDrivetrain.turnFor(right, 90, degrees);
wait(1, seconds);
myDrivetrain.turnFor(left, 90, degrees);
parada#
stop detiene el movimiento del robot. Si se proporciona un modo de parada, este controla cómo se detiene el robot para esta llamada a la función.
1 - Detiene la transmisión utilizando el modo de parada actual.
void stop();
Parameters2 - Detiene la transmisión utilizando el modo de parada especificado.
void stop( brakeType mode );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Cómo se detendrá el robot:
|
Esta función no devuelve un valor.
Examples// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
Mutadores#
setDriveVelocity#
setDriveVelocity indica al robot la velocidad a la que debe conducir. Un porcentaje mayor hace que el robot conduzca más rápido y un porcentaje menor hace que conduzca más despacio.
Cada proyecto comienza con el robot conduciendo al 50% de la velocidad por defecto.
Nota: Una velocidad más alta hace que el robot conduzca más rápido, pero puede ser menos preciso. Una velocidad más baja hace que el robot conduzca más lento, pero puede ser más preciso.
Available Functionsvoid setDriveVelocity(
double velocity,
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La velocidad de conducción va del 0% al 100% cuando se utiliza |
|
|
La unidad de velocidad: |
Esta función no devuelve un valor.
NotesLa velocidad de transmisión es utilizada por las funciones de movimiento del tren motriz posteriores a menos que se proporcione una velocidad específica en la llamada a la función.
// Drive forward, then coast to a stop.
myDrivetrain.setDriveVelocity(100, percent);
myDrivetrain.drive(forward);
wait(2, seconds);
myDrivetrain.stop(coast);
setTurnVelocity#
El parámetro setTurnVelocity indica al robot la velocidad de giro. Un porcentaje mayor hace que el robot gire más rápido y un porcentaje menor hace que gire más lento.
Cada proyecto comienza con el robot girando a una velocidad del 50% por defecto.
Nota: Una velocidad más alta hace que el robot gire más rápido, pero puede ser menos preciso. Una velocidad más baja hace que el robot gire más lento, pero puede ser más preciso.
Available Functionsvoid setTurnVelocity(
double velocity,
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La velocidad de giro varía del 0% al 100% al usar |
|
|
La unidad de velocidad: |
Esta función no devuelve un valor.
NotesLa velocidad de giro es utilizada por las funciones de giro posteriores del tren de transmisión a menos que se proporcione una velocidad específica en la llamada a la función.
// 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);
setStopping#
setStopping establece cómo el robot dejará de moverse: frenando, dejándose llevar por inercia o manteniéndose en reposo.
void setStopping(
brakeType mode );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
Cómo se detendrá el robot:
|
Esta función no devuelve un valor.
NotesEl modo de parada se utiliza en las llamadas posteriores
stopa menos que se proporcione un modo de parada específico en la llamada a la función.Si no se utiliza esta función, el robot utilizará el freno
brakeal detenerse.
setTimeout#
setTimeout establece cuánto tiempo intentará el robot completar un movimiento. Si no lo logra en ese tiempo, dejará de intentarlo y pasará a la siguiente línea de código. Esto evita que el robot se quede atascado en un movimiento.
void setTimeout(
int32_t time,
timeUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La cantidad de tiempo que el robot puede intentar terminar un movimiento. Este debe ser un número entero positivo. |
|
|
La unidad de tiempo: |
Esta función no devuelve un valor.
NotesEl tiempo de espera solo se aplica a las funciones del tren motriz que se mueven a un objetivo, como
driveForyturnFor.
// Turn right after driving forward.
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getters#
isDone#
isDone devuelve un valor booleano que indica si el robot ha terminado de moverse. Esto se puede usar para controlar la sincronización de otros comportamientos en función del movimiento del robot.
bool isDone( void );
Esta función no acepta ningún parámetro.
Return Valuestrue- El robot ha terminado de moverse.false- El robot sigue moviéndose.
isMoving#
isMoving devuelve un valor booleano que indica si el robot se está moviendo. Esto permite controlar la sincronización de otras acciones en función del movimiento del robot.
virtual bool isMoving( void );
Esta función no acepta ningún parámetro.
Return Valuestrue- El robot se está moviendo.false- El robot no se está moviendo.
velocidad#
velocity devuelve la velocidad a la que se desplaza el robot.
Puede devolver la velocidad como un porcentaje, en rpmo en dps. Un valor positivo indica que el robot avanza. Un valor negativo indica que retrocede.
double velocity(
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver la velocidad en: |
Devuelve la velocidad de la transmisión como un valor booleano double en la unidad seleccionada.
// 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#
La corriente current indica la cantidad de corriente eléctrica que consume el sistema de transmisión. La corriente es la cantidad de electricidad que fluye a través del sistema de transmisión. Puede expresarse en amperios (amperios) o como porcentaje, según la unidad.
Un valor de corriente más alto significa que el tren motriz está utilizando más corriente eléctrica. Esto puede suceder cuando el robot está empujando contra un objeto o tratando de moverse cuando está atascado.
Esto se puede usar para verificar si el tren motriz tiene dificultades durante un movimiento. Si la corriente se mantiene alta, el tren motriz puede calentarse o usar la energía de manera menos eficiente.
Available Functions1 - Devuelve la corriente eléctrica de la transmisión en amperios.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Devuelve la corriente eléctrica del tren motriz como un porcentaje.
double current( percentUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver corriente en: |
|
|
La unidad para devolver corriente en: |
Devuelve la corriente del sistema de transmisión como un double en la unidad seleccionada.
potencia#
power devuelve cuánta potencia está utilizando el sistema de transmisión, medida en vatios. La potencia muestra la rapidez con la que el sistema de transmisión consume energía.
Un valor de potencia más alto significa que el tren motriz está utilizando la energía más rápido. Esto puede suceder cuando el robot está empujando contra un objeto o tratando de moverse cuando está atascado.
Esto se puede usar para comparar movimientos o verificar si el tren motriz tiene dificultades. Si la potencia se mantiene alta, el tren motriz puede calentarse o usar la energía de manera menos eficiente.
Available Functionsdouble power(
powerUnits units = powerUnits::watt );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad de potencia: |
Devuelve la potencia de la transmisión como un double en vatios.
torque#
El par de torsión muestra la fuerza con la que la transmisión puede empujar o tirar mientras las ruedas giran.
torque devuelve cuánto torque está utilizando el sistema de transmisión, medido en Newton-metros (Nm) o pulgadas-libra (InLb).
Un valor de par más alto significa que el tren motriz está empujando o tirando con más fuerza. Esto puede suceder cuando el robot está empujando contra un objeto o tratando de moverse cuando está atascado.
Esto se puede usar para verificar si la transmisión tiene dificultades o para comparar cuánto empuje necesitan los diferentes movimientos.
Available Functionsdouble torque(
torqueUnits units = torqueUnits::nm );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver el par es: |
Devuelve el par de transmisión como un double en la unidad seleccionada.
eficiencia#
efficiency devuelve la eficiencia con la que el sistema de transmisión utiliza la energía, como un porcentaje del 0% al 100%.
La eficiencia muestra qué parte de la potencia de la transmisión se está utilizando para el movimiento. Un valor de eficiencia más alto significa que se está utilizando más potencia del tren motriz para moverse. Un valor de eficiencia más bajo puede ocurrir cuando el tren motriz está trabajando duro pero no se mueve mucho, como cuando el robot está atascado o empujando contra un objeto.
Esto se puede usar para comparar movimientos o verificar si el tren motriz está desperdiciando energía en lugar de usarla para el movimiento.
Available Functionsdouble efficiency(
percentUnits units = percentUnits::pct );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver la eficiencia en: |
Devuelve la eficiencia del sistema de transmisión como un double en la unidad seleccionada.
temperatura#
temperature devuelve la temperatura promedio del sistema de transmisión como un porcentaje del 0% al 100%.
La temperatura muestra qué tan calientes están los motores del tren motriz. Una temperatura más alta significa que los motores se calientan mientras funcionan. Los motores deben permanecer por debajo de 55°C para seguir funcionando a pleno rendimiento.
Si los motores se calientan demasiado, bajarán su corriente máxima para protegerse. A 70°C, los motores dejarán de funcionar hasta que se enfríen.
Esto se puede usar para verificar si el tren motriz se está calentando demasiado durante movimientos repetidos, carreras largas o cuando está empujando contra un objeto.
Available Functionsdouble temperature(
percentUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver la temperatura en: |
Devuelve la temperatura promedio del tren de transmisión como un double en la unidad seleccionada.
Un valor devuelto de
50%significa que la temperatura promedio del motor es de aproximadamente45°C(113°F).El rango típico de temperatura de funcionamiento para el sistema de transmisión es de aproximadamente
20°C(68°F) a70°C(158°F).
voltaje#
voltage devuelve el voltaje eléctrico del sistema de transmisión.
El voltaje es la presión eléctrica suministrada a los motores del tren motriz. Esto se puede utilizar con los valores de corriente y potencia para comprender cómo el tren motriz está utilizando la energía eléctrica.
Available Functionsdouble voltage(
voltageUnits units = voltageUnits::volt );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver el voltaje en: |
Devuelve el voltaje del tren motriz como un double en la unidad seleccionada.