Tren de transmisión#

Introducción#

El tren motriz incluye ruedas y motores que controlan la forma en que el robot conduce y gira. Las transmisiones se pueden encontrar en compilaciones como Code Base 2.0, Super Car o un robot personalizado.

Las transmisiones utilizan el Sensor de inercia en el cerebro para detectar accidentes y ayudar al robot a moverse y girar con precisión. Al inicio de cada proyecto, la transmisión calibra el sensor de inercia automáticamente. Mantenga el robot quieto durante unos 2 segundos durante la calibración, para que el robot pueda moverse y girar correctamente.

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.

  • drive_until — Mueve el robot hacia adelante hasta que el sensor ocular detecta un objeto o el robot detecta un choque.

  • 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. El robot girará en la dirección más corta para alcanzar el rumbo objetivo.

  • 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_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.

  • set_stopping — Indica cómo dejará de moverse el robot: frenando, deslizándose o sosteniéndose.

  • set_timeout — Establece cuánto tiempo intentará el robot terminar un movimiento.

  • 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.

Getters — Compruebe el estado del movimiento.

  • get_heading — Devuelve el rumbo actual del robot de 0 a 359 grados.

  • get_rotation — Devuelve la rotación actual del robot.

  • get_velocity — Devuelve la velocidad a la que conduce el robot, como un porcentaje de -100% a 100%.

  • get_yaw — Devuelve la guiñada actual del robot.

  • get_roll — Devuelve el rollo actual del robot.

  • get_pitch — Devuelve el tono actual del robot.

  • get_crashed — Devuelve si el robot ha detectado un bloqueo, como un valor booleano.

  • is_stopped — Devuelve si el robot ha terminado de moverse, como un valor booleano.

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.

Uso:
drivetrain.drive(direction)

Parámetros

Descripción

direction

La dirección en la que se mueve el robot: FORWARD O HACIA REVERSE.

# Build Used: Code Base 2.0
def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_thread(main)

drive_for#

drive_for mueve el robot hacia adelante o hacia atrás una distancia específica.

Usage:
drivetrain.drive_for(direction, distance, units, wait)

Parámetros

Descripción

direction

La dirección en la que se mueve el robot: FORWARD O HACIA REVERSE.

distance

La distancia que recorre el robot. Esto puede ser un número entero o un decimal.

units

Opcional. La unidad de distancia: MM (milímetros, por defecto) o INCHES.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de moverse antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

# Build Used: Code Base 2.0
def main():
    # Drive back and forth
    drivetrain.drive_for(FORWARD, 100, MM)
    drivetrain.drive_for(REVERSE, 4, INCHES)
    

# Start threads — Do not delete
start_thread(main)

drive_until#

drive_until mueve el robot hacia adelante hasta que el sensor ocular detecta un objeto o el robot detecta un choque.

Uso:
drivetrain.drive_until(condition, wait)

Parámetros

Descripción

condition

La condición que detiene al robot: OBJECT o CRASH.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de moverse antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

# Build Used: Code Base 2.0
def main():
    # Turn right after a crash
    drivetrain.drive_until(CRASH)
    drivetrain.turn_for(RIGHT, 90)

# Start threads — Do not delete
start_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 orden, como conducir o detenerse.

Uso:
drivetrain.turn(direction)

Parámetros

Descripción

direction

La dirección en la que gira el robot: LEFT o RIGHT.

# Build Used: Code Base 2.0
def main():
    # Turn right and left, then stop
    drivetrain.turn(RIGHT)
    wait(2, SECONDS)
    drivetrain.turn(LEFT)
    wait(2, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_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.

Uso:
drivetrain.turn_for(direction, angle, wait)

Parámetros

Descripción

direction

La dirección en la que gira el robot: LEFT o RIGHT.

angle

El número de grados que gira el robot. Esto puede ser un número entero o un decimal.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

# Build Used: Code Base 2.0
def main():
    # Turn right then left
    drivetrain.turn_for(RIGHT, 90)
    drivetrain.turn_for(LEFT, 90)

# Start threads — Do not delete
start_thread(main)

turn_to_heading#

Un rumbo es la dirección hacia la que se enfrenta el cerebro del 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 es 0 grados.

Una VEX GO Code Base 2.0 que muestra las direcciones de rumbo: 0 grados hacia adelante, 90 grados hacia la derecha, 180 grados hacia atrás y 270 grados hacia la izquierda.

Uso:
drivetrain.turn_to_heading(angle, wait)

Parámetros

Descripción

angle

La dirección a la que debe mirar el robot como un número entero, de -359 a 359 grados.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

# Build Used: Code Base 2.0
def main():
    # Turn to face the cardinal directions
    drivetrain.turn_to_heading(90)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(180)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(270)
    wait(1, SECONDS)
    drivetrain.turn_to_heading(0)

# Start threads — Do not delete
start_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 usando 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.

Una VEX GO Code Base 2.0 que muestra flechas girando a la derecha y a la izquierda. La flecha izquierda muestra "menos" y la flecha derecha muestra "más".

Uso:
drivetrain.turn_to_rotation(angle, wait)

Parámetros

Descripción

angle

El valor de rotación, en grados, al que girará el robot. Esto puede ser un número entero.

wait

Opcional. wait=True (predeterminado) hace que el proyecto espere hasta que el robot termine de girar antes de que se ejecute la siguiente línea de código. wait=False hace que la siguiente línea de código se ejecute de inmediato.

# Build Used: Code Base 2.0
def main():
    # Make one full turn to the right
    drivetrain.turn_to_rotation(360)
    # Make another full turn to the right
    drivetrain.turn_to_rotation(720)
    # Make one full turn to the left, returning to 360 degrees
    drivetrain.turn_to_rotation(360)
# Start threads — Do not delete
start_thread(main)

stop#

stop detiene el movimiento del robot.

Uso:
drivetrain.stop()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Code Base 2.0
def main():
    # Drive forward then stop
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_thread(main)

Mutadores#

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 sea más preciso.

Uso:
drivetrain.set_drive_velocity(velocity)

Parámetros

Descripción

velocity

La velocidad para conducir va del 0% al 100%.

# Build Used: Code Base 2.0
def main():
    # Drive at different velocities
    drivetrain.drive_for(FORWARD, 100, MM)
    wait(1, SECONDS)
    # Drive slow
    drivetrain.set_drive_velocity(20)
    drivetrain.drive_for(FORWARD, 100, MM)
    wait(1, SECONDS)
    # Drive fast
    drivetrain.set_drive_velocity(100)
    drivetrain.drive_for(FORWARD, 100, MM)

# Start threads — Do not delete
start_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 sea más preciso.

Uso:
drivetrain.set_turn_velocity(velocity)

Parámetros

Descripción

velocity

La velocidad para girar es de 0% a 100%.

# Build Used: Code Base 2.0
def main():
    # Turn at different velocities
    drivetrain.turn_for(RIGHT, 180)
    wait(1, SECONDS)
    # Turn fast
    drivetrain.set_turn_velocity(100)
    drivetrain.turn_for(RIGHT, 180)

# Start threads — Do not delete
start_thread(main)

set_stopping#

set_stopping establece cómo el robot dejará de moverse: frenando, deslizándose o sosteniéndose.

Uso:
drivetrain.set_stopping(brake)

Parámetros

Descripción

brake

Cómo se detendrá el robot:

  • BRAKE — Se detiene inmediatamente.
  • COAST — Se detiene lentamente.
  • HOLD — Se detiene inmediatamente y mantiene la posición de las ruedas.

Si no se utiliza este método, el robot utilizará el BRAKE al detenerse.

# Build Used: Code Base 2.0
def main():
    # Drive, then coast to a stop
    drivetrain.set_drive_velocity(100)
    drivetrain.set_stopping(COAST)
    drivetrain.drive(FORWARD)
    wait(2, SECONDS)
    drivetrain.stop()

# Start threads — Do not delete
start_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.

Uso:
drivetrain.set_timeout(value, units)

Parámetros

Descripción

value

La cantidad de tiempo que el robot puede intentar terminar un movimiento. Esto puede ser un número entero o un decimal.

units

Opcional. La unidad de tiempo: SECONDS (predeterminado) o MSEC (milisegundos).

# Build Used: Code Base 2.0
def main():
    # Drive as far as possible for 1 second before turning right
    drivetrain.set_timeout(1, SECONDS)
    drivetrain.drive_for(FORWARD, 25, INCHES)
    drivetrain.turn_for(RIGHT, 90)

# Start threads — Do not delete
start_thread(main)

set_heading#

Un rumbo es la dirección hacia la que mira el cerebro del 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.

Uso:
drivetrain.set_heading(value)

Parámetros

Descripción

value

El valor de rumbo, en grados, a establecer para el robot. Este puede ser un número entero del 0 al 359.

# Build Used: Code Base 2.0
def main():
    # Face the new 0 degree heading
    drivetrain.set_heading(90)
    drivetrain.turn_to_heading(0)

# Start threads — Do not delete
start_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.

Uso:
drivetrain.set_rotation(value)

Parámetros

Descripción

value

El valor de rotación, en grados, a establecer para el robot. Esto puede ser un número entero.

# Build Used: Code Base 2.0
def main():
    # Spin counterclockwise two times
    drivetrain.set_rotation(720)
    drivetrain.turn_to_rotation(0)

# Start threads — Do not delete
start_thread(main)

Getters#

get_heading#

Un rumbo es la dirección hacia la que mira el cerebro del robot, medida en grados. get_heading devuelve ese rumbo de 0 a 359 grados.

El rumbo inicial del robot es de 0 grados.

Un VEX GO Brain que muestra las direcciones de rumbo: 0 grados hacia adelante, 90 grados hacia la derecha, 180 grados hacia atrás y 270 grados hacia la izquierda.

Uso:
drivetrain.get_heading()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Code Base 2.0
def main():
    # Display the heading while turning
    monitor_sensor("drivetrain.get_heading")
    drivetrain.turn_for(RIGHT, 450)


# Start threads — Do not delete
start_thread(main)

get_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. get_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.

Una VEX GO Code Base 2.0 que muestra flechas girando a la derecha y a la izquierda. La flecha izquierda muestra "menos" y la flecha derecha muestra "más".

Uso:
drivetrain.get_rotation()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Code Base 2.0
def main():
    # Display the rotation while turning
    monitor_sensor("drivetrain.get_rotation")
    drivetrain.turn_for(RIGHT, 450)


# Start threads — Do not delete
start_thread(main)

get_velocity#

get_velocity devuelve la velocidad a la que conduce el robot, como un porcentaje de -100% a 100%.

Un valor positivo significa que el robot está avanzando. Un valor negativo significa que el robot está conduciendo en reversa.

Uso:
drivetrain.get_velocity()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Code Base 2.0
def main():
    # Display the velocity of the robot before and while moving
    console.print("Start: ")
    console.print(drivetrain.get_velocity())
    console.new_line()
    drivetrain.drive(FORWARD)
    wait(0.5, SECONDS)
    console.print("Moving: ")
    console.print(drivetrain.get_velocity())
    drivetrain.stop()


# Start threads — Do not delete
start_thread(main)

get_yaw#

La guiñada es cuánto ha girado el robot a la izquierda o a la derecha desde su posición inicial, medida en grados. get_yaw devuelve el valor de guiñada actual del robot.

Girar a la derecha aumenta el valor de guiñada, y girar a la izquierda disminuye el valor de guiñada.

Uso:
drivetrain.get_yaw()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Super Code Base 2.0
def main():
    # Change the LED color based on the yaw while
    # moving the robot by hand
    monitor_sensor("drivetrain.get_yaw")
    while True:
        if drivetrain.get_yaw() > 0:
            bumper.set_color(GREEN)
        elif drivetrain.get_yaw() < 0:
            bumper.set_color(RED)
        else:
            bumper.set_color(NONE)

# Start threads — Do not delete
start_thread(main)

get_roll#

El rollo es cuánto se inclina el robot hacia la izquierda o la derecha, medido en grados. get_roll devuelve el valor de rollo actual del robot.

Con el cerebro mirando hacia adelante, la inclinación hacia la izquierda aumenta el valor del balanceo y la inclinación hacia la derecha disminuye el valor del balanceo.

Uso:
drivetrain.get_roll()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Super Code Base 2.0
def main():
    # Change the LED color based on the roll while
    # moving the robot by hand
    monitor_sensor("drivetrain.get_roll")
    while True:
        if drivetrain.get_roll() > 0:
            bumper.set_color(GREEN)
        elif drivetrain.get_roll() < 0:
            bumper.set_color(RED)
        else:
            bumper.set_color(NONE)

# Start threads — Do not delete
start_thread(main)

get_pitch#

El tono es cuánto se inclina el robot hacia adelante o hacia atrás, medido en grados. get_pitch devuelve el valor de tono actual del robot.

Con el cerebro mirando hacia adelante, la inclinación hacia adelante aumenta el valor de tono, y la inclinación hacia atrás disminuye el valor de tono.

Uso:
drivetrain.get_pitch()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Super Code Base 2.0
def main():
    # Change the LED color based on the pitch while
    # moving the robot by hand
    monitor_sensor("drivetrain.get_pitch")
    while True:
        if drivetrain.get_pitch() > 0:
            bumper.set_color(GREEN)
        elif drivetrain.get_pitch() < 0:
            bumper.set_color(RED)
        else:
            bumper.set_color(NONE)

# Start threads — Do not delete
start_thread(main)

get_crashed#

get_crashed devuelve si el robot ha detectado un bloqueo, como un valor booleano.

  • True : se ha detectado un bloqueo.

  • False — No se ha detectado un accidente.

Uso:
drivetrain.get_crashed()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Super Code Base 2.0
def main():
    # Drive until a crash
    drivetrain.drive(FORWARD)
    while not drivetrain.get_crashed():
        wait(50, MSEC)
    drivetrain.stop()
    drivetrain.turn_for(RIGHT, 90)

# Start threads — Do not delete
start_thread(main)

is_stopped#

is_stopped 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, drive_until, turn_for, turn_to_heading y turn_to_rotation.

Uso:
drivetrain.is_stopped()

Parámetros

Descripción

Este método no tiene parámetros.

# Build Used: Code Base 2.0
def main():
    # Turn when the drivetrain is done moving forward
    drivetrain.drive_for(FORWARD, 100, MM, wait=False)
    wait(0.25, SECONDS)
    while True:
        if drivetrain.is_stopped():
            drivetrain.turn_for(RIGHT, 180)
            break
        else:
            console.print("Still moving...")
            wait(0.1, SECONDS)
            console.clear()

# Start threads — Do not delete
start_thread(main)