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 inercial, sensor giroscópico ni sensor GPS 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.
Clases derivadas#
La clase drivetrain sirve como clase base para las siguientes clases derivadas:
smartdrive: esta clase agrega soporte para sensor inercial, sensor GPS o sensor giroscópico para habilitar giros basados en rumbo y rotación.
Constructores de clase#
1 - Crea una transmisión utilizando objetos
motor_groupexistentes para los lados izquierdo (&l) y derecho (&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 - Crea un tren motriz utilizando objetos de
motorexistentes para los lados izquierdo (&l) y derecho (&r).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: ya sea 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 engranajes. 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 object
rightMotor, // right motor object
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 para siempre.driveFor- Mueve el robot hacia adelante o hacia atrás una distancia específica.turn- Gira el robot a la izquierda o a la derecha para siempre.turnFor- Gira el robot a la izquierda o a la derecha un número específico de grados.stop- Detiene el movimiento del robot.
Ajustes: ajusta los ajustes del tren motriz.
setDriveVelocity- Le dice al robot qué tan rápido conducir.setTurnVelocity- Le dice al robot qué tan rápido debe girar.setStopping- Indica cómo dejará de moverse el robot: frenando, desplazándose por inercia o sosteniéndose.setTimeout: establece cuántos segundos 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 conduce el robot.current: Devuelve la cantidad de corriente eléctrica que utiliza el tren motriz.power: devuelve la rapidez con la que el tren motriz consume energía.torque- Devuelve la cantidad de torque que está utilizando el tren motriz.efficiency: devuelve la eficiencia con la que el tren motriz utiliza la energía.temperature: devuelve la temperatura del tren motriz.voltage- Devuelve el voltaje eléctrico suministrado al tren motriz.
Antes de llamar a cualquier drivetrain del miembro del drivetrain objeto del tren motriz, como se muestra a continuación:
/* 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
Acciones#
unidad#
drive mueve el robot hacia adelante o hacia atrás para siempre. El robot continuará moviéndose hasta que se le dé otra acción, como girar o detenerse. Para RPM o DPS, el límite se cambia por la relación de transmisión del tren motriz.
1 - Conduce con la velocidad de conducción configurada 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 para conducir con del 0% al 100% cuando se usan |
|
|
La unidad de velocidad |
Esta función no devuelve un valor.
Notesdriveno está en espera; el proyecto continuará ejecutando la siguiente línea de código inmediatamente después de la llamada.El tren de transmisión continuará moviéndose hasta que se llame a
stopo se ejecute otra función de movimiento del tren de transmisión (comodriveForoturn).Las funciones como
isDoneyisMovingno son aplicables adrive, ya que no utiliza movimiento basado en objetivos (no tiene un parámetro dedistance).
// 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 que se ejecute la siguiente línea de código de forma predeterminada. Para RPM o DPS, el límite se cambia por la relación de transmisión del tren motriz.
1 - Conduce en la dirección especificada durante una distancia utilizando la velocidad de conducción configurada actual.
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 actual.
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 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 para conducir con del 0% al 100% cuando se usan |
|
|
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 se completara el movimiento porquewaitForCompletionse estableció enfalse.
Ejecutar otra función de movimiento del tren motriz (como
driveoturnFor) mientrasdriveForestá en curso interrumpirá el movimiento actual.Debido a que
driveForse basa en un objetivo (utiliza un parámetro de distanciadistance), funciones comoisDoneyisMovingfuncionan condriveFor.
// 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 izquierda o derecha indefinidamente. El robot seguirá girando hasta que se le indique otra acción, como conducir o detenerse. Para RPM o DPS, el límite se modifica según la relación de transmisión del sistema de propulsión.
1 - Gira con la velocidad de giro configurada 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 para girar es de 0% a 100% cuando se usan |
|
|
La unidad de velocidad |
turnno está en espera; el proyecto continuará ejecutando la siguiente línea de código inmediatamente después de la llamada.El tren de transmisión continuará girando hasta que se llame a
stopo se ejecute otra función de movimiento del tren de transmisión (comoturnForodrive).Las funciones como
isDoneyisMovingno son aplicables aturn, ya que no utiliza movimiento basado en objetivos (no tiene un parámetroangle).
// Turn right, then left, then stop
myDrivetrain.turn(right);
wait(2, seconds);
myDrivetrain.turn(left);
wait(2, seconds);
myDrivetrain.stop();
turnFor#
turnFor gira el robot a la izquierda o a la derecha un número específico de grados. El giro es relativo a la posición actual del robot. El proyecto esperará hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código de forma predeterminada. Para RPM o DPS, el límite se cambia por la relación de transmisión del tren motriz.
1 - Gira el ángulo especificado utilizando la velocidad de giro configurada 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 configurada 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: |
|
|
El ángulo que gira el robot. |
|
|
La unidad de giro: |
|
|
La velocidad para girar es de 0% a 100% cuando se usan |
|
|
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 turno, o la función regresó antes de que se completara el turno porquewaitForCompletionse estableció enfalse.
Ejecutar otra función de movimiento del tren motriz (como
turnodrive)turnForturnFor está en curso interrumpirá el movimiento actual.Debido a que
turnForse basa en un objetivo (utiliza un parámetroangle), funciones comoisDoneyisMovingfuncionan conturnFor.
// 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, controla cómo se detiene el robot para esta llamada de función.
1 - Detiene la transmisión utilizando el modo de parada configurado actualmente.
void stop();
Parameters2 - Detiene la transmisión utilizando el modo de freno 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 le dice al robot qué tan rápido conducir. Un porcentaje más alto hace que el robot conduzca más rápido y un porcentaje más bajo hace que el robot conduzca más lento. Para las RPM, el límite se cambia por la relación de transmisión del tren motriz.
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 para conducir con del 0% al 100% cuando se usan |
|
|
La unidad de velocidad |
Esta función no devuelve un valor.
NotesLa velocidad de transmisión se aplica a todas las funciones de movimiento del tren motriz posteriores (como
driveydriveFor) 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#
setTurnVelocity le dice al robot qué tan rápido debe girar. Un porcentaje más alto hace que el robot gire más rápido y un porcentaje más bajo hace que el robot 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 para girar es de 0% a 100% cuando se usan |
|
|
La unidad de velocidad: |
Esta función no devuelve un valor.
NotesLa velocidad de giro se aplica a todas las funciones de giro del tren motriz posteriores (como
turnyturnFor) 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, deslizándose o sosteniéndose.
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 aplica a todas las llamadas
stopposteriores a menos que se proporcione un modo de parada específico en la llamada a la función.
setTimeout#
setTimeout establece cuántos segundos el robot intentará terminar un movimiento. Si el robot no puede terminar en ese tiempo, dejará de intentarlo y pasará a la siguiente línea de código. Esto evita que el robot se atasque 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 de movimiento del tren motriz basadas en objetivos (como
driveForyturnFor).
// Start turning if driving takes too long
myDrivetrain.setTimeout(1, seconds);
myDrivetrain.driveFor(forward, 25, inches);
myDrivetrain.turnFor(right, 90, degrees);
Getters#
isDone#
isDone devuelve si el robot ha terminado de moverse, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el 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 todavía se está moviendo.
isMoving#
isMoving devuelve si el robot se está moviendo, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el 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 mueve.
velocidad#
velocity devuelve la velocidad a la que conduce el robot.
Un valor positivo significa que el robot está avanzando. Un valor negativo significa que el robot está conduciendo en reversa.
Available Functionsdouble velocity(
velocityUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad de velocidad: |
Devuelve la velocidad del tren motriz como un 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#
current devuelve la cantidad de corriente eléctrica que está utilizando el tren motriz. La corriente es la cantidad de electricidad que fluye a través del tren motriz. Se puede devolver en amperios (amperios) o como porcentaje, dependiendo de 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 del tren motriz en amperios.
double current( currentUnits units = currentUnits::amp );
Parameters2 - Devuelve la corriente eléctrica del tren motriz como porcentaje del máximo.
double current( percentUnits units );
Parámetro |
Tipo |
Descripción |
|---|---|---|
|
|
La unidad para devolver la corriente en: |
|
|
La unidad para devolver la corriente en: |
Devuelve la corriente del tren motriz como un double en la unidad seleccionada.
potencia#
la power devuelve la cantidad de potencia que está utilizando el tren motriz, medida en vatios. La potencia muestra la rapidez con la que el tren motriz está utilizando la 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 la cantidad de torque que está utilizando el tren motriz, medido en Newton-metros (Nm) o pulgadas-libras (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 torque en: |
Devuelve el par del tren motriz como un double en la unidad seleccionada.
eficiencia#
efficiency devuelve la eficiencia con la que el tren motriz está utilizando 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 tren motriz como un double en la unidad seleccionada.
temperatura#
temperature devuelve la temperatura promedio del tren motriz 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 media del tren motriz como un double en la unidad seleccionada.
Un valor devuelto del
50%indica 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 aproximadamente de
20°C(68°F) a70°C(158°F).
voltaje#
el voltage devuelve el voltaje eléctrico suministrado al tren motriz.
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.