Tren de transmisión#
Introducción#
La transmisión controla cómo funciona y gira el robot de realidad virtual. El tren motriz puede moverse hacia adelante o hacia atrás, girar a la izquierda o a la derecha, girar hacia los encabezados y seguir su rotación.
Hay muchas maneras de codificar la transmisión. A continuación se muestra una lista de todos los métodos de transmisión:
Acciones: mueve y gira el robot.
drive— Mueve el robot hacia adelante o hacia atrás para siempre.drive_for— 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.turn_for— Gira el robot a la izquierda o a la derecha un número específico de grados.turn_to_heading— Gira el robot para enfrentar un rumbo específico de -359 a 359 grados.turn_to_rotation— Gira el robot a una rotación específica.stop— Detiene el movimiento del robot.
Mutadores: ajuste la configuración del tren motriz.
set_heading— Cambia el encabezado actual del robot a un nuevo encabezado.set_rotation— Cambia la rotación actual del robot a una nueva rotación.set_timeout— Establece cuánto tiempo intentará el robot terminar un movimiento.set_drive_velocity— Le dice al robot qué tan rápido debe conducir.set_turn_velocity— Le dice al robot qué tan rápido debe girar.
Getters: comprueba el estado de la transmisión.
Acciones#
drive#
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.
Usage:
drivetrain.drive(direction)
Parámetros |
Descripción |
|---|---|
|
La dirección en la que se mueve el robot: |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for 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.
Usage:
drivetrain.drive_for(direction, distance, units, wait)
Parámetros |
Descripción |
|---|---|
|
La dirección en la que se mueve el robot: |
|
La distancia que recorre el robot. Esto puede ser un |
|
Opcional. La unidad de distancia: |
|
Opcional. |
def main():
# Drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# VR threads — Do not delete
vr_thread(main)
turn#
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.
Usage:
drivetrain.turn(direction)
Parámetros |
Descripción |
|---|---|
|
La dirección en la que gira el robot: |
def main():
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for 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.
Usage:
drivetrain.turn_for(direction, angle, units, wait)
Parámetros |
Descripción |
|---|---|
|
La dirección en la que gira el robot: |
|
El número de grados que gira el robot. Esto puede ser un |
|
Opcional. La unidad de rotación: |
|
Opcional. |
def main():
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
Un rumbo es la dirección hacia la que se enfrenta el robot, medida en grados. turn_to_heading gira el robot para que se enfrente a un rumbo específico de -359 a 359 grados. El robot girará en la dirección más corta para alcanzar el rumbo objetivo.
El rumbo inicial del robot es de 0 grados.
El proyecto esperará hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código.
Usage:
drivetrain.turn_to_heading(angle, units, wait)
Parámetros |
Descripción |
|---|---|
|
La dirección a la que debe mirar el robot, en grados. Esto puede ser un |
|
Opcional. La unidad de rotación: |
|
Opcional. |
def main():
# Turn to face the cardinal directions
drivetrain.turn_to_heading(90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(270, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_rotation#
turn_to_rotation hace girar el robot a una rotación específica.
La rotación es cuánto ha girado el robot, medida en grados. Al comienzo de un proyecto, el valor de rotación se establece en 0 grados. La rotación también se puede configurar utilizando el método set_rotation.
Los valores de rotación son absolutos. Esto significa que la dirección del giro depende de la rotación actual del robot. Girar a la derecha aumenta la rotación y girar a la izquierda disminuye la rotación.
Por ejemplo, si el robot comienza a 0 grados y gira a una rotación de 720 grados, girará a la derecha dos veces. Si luego giras a una rotación de 360 grados, girará a la izquierda una vez, porque 360 es menos de 720.
El proyecto esperará hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código.
Usage:
drivetrain.turn_to_rotation(angle, units, wait)
Parámetros |
Descripción |
|---|---|
|
El valor de rotación, en grados, al que girará el robot. Esto puede ser un |
|
Opcional. La unidad de rotación: |
|
Opcional. |
def main():
# Turn left, then spin in a circle
# clockwise and face right
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
stop#
stop detiene el movimiento del robot.
Usage:
drivetrain.stop()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutadores#
set_heading#
Un rumbo es la dirección hacia la que mira el robot, medida en grados. set_heading cambia el rumbo actual del robot a un nuevo valor de rumbo.
Por ejemplo, si el robot ha girado hacia la derecha, establecer el rumbo en 0 grados hace que esa posición orientada hacia la derecha sea la nueva de 0 grados. Luego, el robot puede pasar a otras posiciones en función de ese nuevo encabezado.
Usage:
drivetrain.set_heading(heading, units)
Parámetros |
Descripción |
|---|---|
|
El valor de rumbo, en grados, a establecer para el robot. Esto puede ser un |
|
Opcional. La unidad de encabezado: |
def main():
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_rotation#
La rotación es cuánto ha girado el robot, medida en grados. Al comienzo de un proyecto, el valor de rotación se establece en 0 grados. set_rotation cambia la rotación actual del robot a un nuevo valor.
Por ejemplo, si el robot ha realizado dos giros completos a la derecha, su valor de rotación será de 720 grados. Ajustar la rotación a 0 grados restablecerá esa rotación de 720 a 0 grados. Luego, el robot puede pasar a las rotaciones en función de ese nuevo valor.
Usage:
drivetrain.set_rotation(rotation, units)
Parámetros |
Descripción |
|---|---|
|
El valor de rotación, en grados, a establecer para el robot. Esto puede ser un |
|
Opcional. La unidad de rotación: |
def main():
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout establece cuánto tiempo intentará el robot 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.
Usage:
drivetrain.set_timeout(value, units)
Parámetros |
Descripción |
|---|---|
|
La cantidad de tiempo que el robot puede intentar terminar un movimiento. Esto puede ser un |
|
Opcional. La unidad de tiempo: |
def main():
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
set_drive_velocity 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.
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.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parámetros |
Descripción |
|---|---|
|
La velocidad para conducir va del 0% al 100%. Esto puede ser un |
|
Opcional. La unidad de velocidad: |
def main():
# Drive forward at different velocities
# Default velocity
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive slower
drivetrain.set_drive_velocity(20, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
wait(1, SECONDS)
# Drive faster
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 150, MM)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
set_turn_velocity 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.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parámetros |
Descripción |
|---|---|
|
La velocidad para girar es de 0% a 100%. Esto puede ser un |
|
Opcional. La unidad de velocidad: |
def main():
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 120, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getters#
heading#
Un rumbo es la dirección hacia la que mira el robot, medida en grados. El heading devuelve el rumbo actual del robot de 0 a 359,99 grados.
El rumbo inicial del robot es de 0 grados.
Usage:
drivetrain.heading(units)
Parámetros |
Descripción |
|---|---|
|
Opcional. La unidad de encabezado: |
def main():
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Heading: ")
brain.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotation#
La rotación es cuánto ha girado el robot, medida en grados. Al comienzo de un proyecto, el valor de rotación se establece en 0 grados. La rotation devuelve la rotación actual del robot.
Girar a la derecha aumenta la rotación y girar a la izquierda disminuye la rotación. Por ejemplo, hacer dos giros completos a la derecha devolverá una rotación de 720 grados.
Usage:
drivetrain.rotation(units)
Parámetros |
Descripción |
|---|---|
|
Opcional. La unidad de rotación: |
def main():
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.print("Rotation: ")
brain.print(drivetrain.rotation(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done 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.
True: el robot ha terminado de moverse.False: el robot todavía se está moviendo.
Este método funciona junto con los siguientes métodos de transmisión que tienen el parámetro wait: drive_for, turn_for, turn_to_heading y turn_to_rotation.
Usage:
drivetrain.is_done()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
is_moving#
is_moving 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.
True: el robot se está moviendo.False— El robot no se mueve.
Usage:
drivetrain.is_moving()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |