Transmisión#
Introducción#
El tren motriz controla el movimiento de un robot, permitiéndole avanzar, girar y detenerse con precisión.
También puede funcionar como un sistema de transmisión inteligente cuando se configura con un sensor giroscópico o un sensor inercial cerebral.
A continuación se muestra una lista de todos los métodos:
Métodos – Controlar el movimiento y el comportamiento de la transmisión.
drive – Mueve el tren motriz en una dirección específica indefinidamente.
drive_for – Mueve el sistema de transmisión durante una distancia determinada.
turn – Gira la transmisión hacia la izquierda o hacia la derecha indefinidamente.
turn_for – Gira la transmisión durante una distancia determinada.
turn_to_heading – Gira el sistema de transmisión inteligente hacia un rumbo específico mediante sensores.
turn_to_rotation – Gira la transmisión inteligente a un valor de rotación específico.
stop – Detiene una transmisión con un comportamiento configurable.
set_drive_velocity – Establece la velocidad de movimiento predeterminada para el tren motriz.
set_turn_velocity – Establece la velocidad de movimiento de giro para el tren motriz.
set_stopping – Establece el comportamiento de detención (frenado, inercia o retención).
set_timeout – Limita el tiempo que una función de transmisión espera antes de darse por vencida si se bloquea el movimiento.
get_timeout – Devuelve la duración del tiempo de espera actual de una transmisión.
set_heading – Establece el rumbo de una transmisión inteligente en un valor específico.
set_rotation – Establece el valor de rotación de una transmisión inteligente en un valor específico.
calibrar – Calibra el sensor giroscópico o el sensor inercial cerebral configurado de un sistema de transmisión inteligente.
is_moving – Devuelve si un tren motriz se está moviendo actualmente.
is_turning – Devuelve si un tren motriz está girando actualmente.
is_done – Devuelve si un tren motriz no se está moviendo actualmente.
heading – Devuelve el rumbo actual de un sistema de transmisión inteligente.
rotación – Devuelve el valor de rotación actual de una transmisión inteligente.
velocidad – Devuelve la velocidad actual de un sistema de transmisión.
potencia – Devuelve la cantidad de energía utilizada por un sistema de transmisión.
torque – Devuelve el torque generado por un sistema de transmisión.
eficiencia – Devuelve la eficiencia de un sistema de transmisión.
set_turn_threshold – Establece el umbral de giro para una transmisión inteligente.
set_turn_constant – Establece la constante de giro para una transmisión inteligente.
set_turn_direction_reverse – Establece una transmisión inteligente para que su dirección se invierta.
Constructores: inicializan y configuran manualmente la transmisión.
DriveTrain – Crea un tren de transmisión básico.
SmartDrive – Crea un sistema de transmisión configurado con un sensor giroscópico o un sensor inercial cerebral.
conducir#
drive
mueve el tren motriz en una dirección específica indefinidamente.
Uso:
drive(dirección, velocidad, unidades)
Parámetros |
Descripción |
---|---|
dirección |
La dirección en la que se debe conducir:
|
velocidad |
Opcional. La velocidad a la que se moverá la transmisión, como valor de punto flotante o entero. Si no se especifica la velocidad, la predeterminada es el 50 %. |
unidades |
Opcional. Unidad que representa la velocidad:
|
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Drive slowly in reverse then stop
drivetrain.drive(REVERSE, 20, PERCENT)
wait(2, SECONDS)
drivetrain.stop()
conducir_para#
drive_for
mueve el sistema de transmisión en una dirección específica durante una distancia establecida.
Uso:
drive_for(dirección, distancia, unidades, velocidad, unidades_v, esperar)
Parámetros |
Descripción |
---|---|
dirección |
La dirección en la que se debe conducir:
|
distancia |
La distancia que debe recorrer el tren motriz, expresada en forma de número flotante o entero. |
unidades |
La unidad que representa la distancia:
|
velocidad |
Opcional. La velocidad a la que se moverá la transmisión, como valor de punto flotante o entero. Si no se especifica la velocidad, la predeterminada es el 50 %. |
unidades_v |
Opcional. Unidad que representa la velocidad:
|
esperar |
Opcional.
|
# Drive forward and backward
drivetrain.drive_for(FORWARD, 10)
drivetrain.drive_for(REVERSE, 10)
# Quickly drive forward and backward
drivetrain.drive_for(FORWARD, 200, MM, 100, PERCENT)
drivetrain.drive_for(REVERSE, 200, MM, 100, PERCENT)
doblar#
turn
gira la transmisión hacia la izquierda o hacia la derecha indefinidamente.
Uso:
turn(dirección, velocidad, unidades)
Parámetros |
Descripción |
---|---|
dirección |
La dirección en la que girar:
|
velocidad |
Opcional. La velocidad a la que girará la transmisión, como valor de punto flotante o entero. Si no se especifica la velocidad, la predeterminada es el 50 %. |
unidades |
Opcional. Unidad que representa la velocidad:
|
# Turn right and left, then stop
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.turn(LEFT)
wait(2, SECONDS)
drivetrain.stop()
# Quickly turn right and left, then stop
drivetrain.turn(RIGHT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.turn(LEFT, 100, PERCENT)
wait(2, SECONDS)
drivetrain.stop()
turno_para#
turn_for
turns the drivetrain left or right for a specified angle or rotations.
Uso:
turn_for(dirección, ángulo, unidades, velocidad, unidades_v, esperar)
Parámetros |
Descripción |
---|---|
dirección |
La dirección en la que girar:
|
ángulo |
La cantidad de grados que girará la transmisión como un número flotante o entero. |
unidades |
La unidad que representa el valor rotacional:
|
velocidad |
Opcional. La velocidad a la que girará la transmisión, como valor de punto flotante o entero. Si no se especifica la velocidad, la predeterminada es el 50 %. |
unidades_v |
Opcional. Unidad que representa la velocidad:
|
esperar |
Opcional.
|
# Turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES)
# Quickly turn the robot right and left
drivetrain.turn_for(RIGHT, 90, DEGREES, 100, PERCENT)
wait(1, SECONDS)
drivetrain.turn_for(LEFT, 90, DEGREES, 100, PERCENT)
girar al rumbo#
turn_to_heading
gira un tren de potencia inteligente hacia un rumbo específico.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
turn_to_heading(ángulo, unidades, velocidad, unidades_v, esperar)
Parámetros |
Descripción |
---|---|
ángulo |
El encabezado para girar la transmisión para que quede como un flotante o un entero. |
unidades |
La unidad que representa el valor rotacional:
|
velocidad |
Opcional. La velocidad a la que girará el motor o el grupo de motores, como valor de punto flotante o entero. Si no se especifica la velocidad, la predeterminada es el 50 %. |
unidades_v |
Opcional. Unidad que representa la velocidad:
|
esperar |
Opcional.
|
# 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)
# Turn twice slowly
drivetrain.turn_to_heading(90, DEGREES, 20, PERCENT)
wait(1, SECONDS)
drivetrain.turn_to_heading(180, DEGREES, 20, PERCENT)
giro a rotación#
turn_to_rotation
gira una transmisión inteligente a un valor de rotación especificado.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
turn_to_rotation(ángulo, unidades, velocidad, unidades_v, esperar)
Parámetros |
Descripción |
---|---|
ángulo |
El valor rotacional para girar la transmisión para que quede como un flotante o un entero. |
unidades |
La unidad que representa el valor rotacional:
|
velocidad |
Opcional. La velocidad a la que girará el motor o el grupo de motores, como valor de punto flotante o entero. Si no se especifica la velocidad, la predeterminada es el 50 %. |
unidades_v |
Opcional. Unidad que representa la velocidad:
|
esperar |
Opcional.
|
# 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)
# Turn left then slowly spin in a circle clockwise
drivetrain.turn_to_rotation(-90, DEGREES)
wait(1, SECONDS)
drivetrain.turn_to_rotation(450, DEGREES, 20, PERCENT)
detener#
stop
detiene una transmisión.
Uso:
stop(mode)
Parámetros |
Descripción |
---|---|
modo |
Opcional. Cómo se detendrá la transmisión:
|
# Drive forward then stop
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop(COAST)
establecer_velocidad_de_transmisión#
set_drive_velocity
establece la velocidad de movimiento predeterminada de un tren de potencia. Este ajuste de velocidad se utilizará en llamadas posteriores a cualquier función de tren de potencia si no se proporciona una velocidad específica.
Uso:
set_drive_velocity(velocidad, unidades)
Parámetros |
Descripción |
---|---|
velocidad |
La velocidad a la que se moverá la transmisión, como un valor flotante o entero. |
unidades |
Opcional. Unidad que representa la velocidad:
|
# 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)
establecer_velocidad_de_giro#
set_turn_velocity
establece la velocidad de giro predeterminada de una transmisión. Esta configuración de velocidad se utilizará en llamadas posteriores a cualquier función de transmisión si no se proporciona una velocidad específica.
Uso:
set_turn_velocity(velocidad, unidades)
Parámetros |
Descripción |
---|---|
velocidad |
La velocidad a la que girará la transmisión, expresada como un valor flotante o entero. |
unidades |
Opcional. Unidad que representa la velocidad:
|
# Turn at different velocities
# Default velocity
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn slower
drivetrain.set_turn_velocity(20, PERCENT)
drivetrain.turn_for(RIGHT, 360)
wait(1, SECONDS)
# Turn faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(RIGHT, 360)
establecer_detención#
set_stopping
establece el modo de detención de un sistema de transmisión.
Uso:
set_stopping(mode)
Parámetros |
Descripción |
---|---|
modo |
Cómo se detendrá la transmisión:
|
# Drive forward and coast to a stop
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.set_stopping(COAST)
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
establecer_tiempo_de_espera#
set_timeout
establece un límite de tiempo que una función de transmisión esperará para alcanzar su objetivo. Si la transmisión no puede completar el movimiento dentro del tiempo establecido, se detendrá automáticamente y continuará con la siguiente función.
Nota: El límite de tiempo del tren motriz se utiliza para evitar que las funciones del tren motriz que no alcanzan su posición objetivo detengan la ejecución del resto del proyecto.
Uso:
set_timeout(valor, unidades)
Parámetros |
Descripción |
---|---|
valor |
El número máximo de segundos que una función de motor se ejecutará antes de detenerse y pasar a la siguiente función como un entero o un punto flotante. |
unidades |
Opcional. Unidad que representa el tiempo:
|
# Turn right after driving forward
drivetrain.set_timeout(1, SECONDS)
drivetrain.drive_for(FORWARD, 25, INCHES)
drivetrain.turn_for(RIGHT, 90)
obtener_tiempo_de_espera#
get_timeout
devuelve el tiempo de espera actual para una transmisión en milisegundos.
Uso:
get_timeout()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
# Display the timeout period after moving forward
drivetrain.set_timeout(1000, MSEC)
drivetrain.drive_for(FORWARD, 25, INCHES)
brain.screen.print("Waited " + "{:.0f}".format(drivetrain.get_timeout()) + " msec")
drivetrain.turn_for(RIGHT, 90)
establecer_encabezado#
set_heading
establece el rumbo de una transmisión inteligente.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
set_heading(heading, unidades)
Parámetros |
Descripción |
---|---|
título |
El nuevo encabezado como un valor flotante o entero. |
unidades |
Opcional. Unidad que representa el rumbo:
|
# Face the new 0 degrees
drivetrain.set_heading(90, DEGREES)
drivetrain.turn_to_heading(0, DEGREES)
rotación_del_conjunto#
El método set_rotation
establece la rotación de la transmisión inteligente.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
set_rotation(rotación, unidades)
Parámetros |
Descripción |
---|---|
rotación |
El nuevo valor rotacional como flotante o entero. |
unidades |
Opcional. Unidad que representa el rumbo:
|
# Spin counterclockwise two times
drivetrain.set_rotation(720, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
se está moviendo#
is_moving
devuelve un valor booleano que indica si un tren motriz se está moviendo actualmente.
Verdadero
– La transmisión se está moviendo.Falso
– La transmisión no se mueve.
Uso:
is_moving()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
# Stop the Drivetrain after moving forward for some time
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
while drivetrain.is_moving():
brain.screen.set_cursor(1, 1)
brain.screen.print("Still Moving...")
wait (0.1, SECONDS)
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
está girando#
is_moving
devuelve un valor booleano que indica si un sistema de transmisión inteligente está girando actualmente.
«Verdadero»: El sistema de transmisión inteligente está girando.
Falso
: La transmisión inteligente no gira.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
is_turning()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
# Detect when the Drivetrain is still turning
drivetrain.turn_for(RIGHT, 180, DEGREES, wait=False)
while drivetrain.is_turning():
brain.screen.clear_screen()
brain.screen.set_cursor(1, 1)
brain.screen.print("Turning...")
wait (0.1, SECONDS)
brain.screen.set_cursor(1, 1)
brain.screen.print("Done!")
está_hecho()#
is_done
devuelve un valor booleano que indica si un tren motriz no se está moviendo actualmente.
Verdadero
– La transmisión no se mueve.Falso
– La transmisión se está moviendo.
Uso:
is_done()
Parámetros |
Descripción |
---|---|
Este método no tiene parámetros. |
# Stop the Drivetrain and turn right after moving
# forward for some time
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
while True:
if drivetrain.is_done():
drivetrain.turn_for(RIGHT, 360)
break
else:
brain.screen.set_cursor(1, 1)
brain.screen.print("Still Moving...")
wait (0.1, SECONDS)
brain.screen.clear_screen()
título#
heading
devuelve el encabezado actual de un sistema de transmisión inteligente como un flotante.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
heading(unidades)
Parámetros |
Descripción |
---|---|
unidades |
Opcional. Unidad que representa el valor de rotación:
|
# Display the heading after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading())
rotación#
rotation
devuelve el valor rotacional actual de una transmisión inteligente como un flotante.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Parámetros |
Descripción |
---|---|
unidades |
Opcional. Unidad que representa el valor de rotación:
|
# Display the rotation after turning
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.print(drivetrain.rotation())
velocidad#
velocity
devuelve la velocidad actual de una transmisión como un valor flotante.
Parámetros |
Descripción |
---|---|
unidades |
Opcional. Unidad que representa la velocidad:
|
# Display the robot's velocity before and after moving
brain.screen.print(drivetrain.velocity())
brain.screen.next_row()
drivetrain.drive(FORWARD)
wait(1, SECONDS)
brain.screen.print(drivetrain.velocity())
drivetrain.stop()
establecer umbral de giro#
El método set_turn_threshold
establece el umbral de giro para una transmisión inteligente. Este valor se utiliza para determinar si los giros se han completado. Si es demasiado alto, los giros no serán precisos. Si es demasiado bajo, es posible que los giros no se completen.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
set_turn_threshold(valor)
Parámetros |
Descripción |
---|---|
valor |
El umbral de giro se establece en grados, como un valor decimal o entero. El umbral de giro predeterminado es 1 grado. |
# Turn and display the heading with different turn thresholds
brain.screen.set_font(FontType.PROP20)
brain.screen.print("Default threshold: ")
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())
brain.screen.next_row()
wait(2, SECONDS)
brain_inertial.reset_heading()
brain.screen.print("20 degree Threshold: ")
drivetrain.set_turn_threshold(20)
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())
establecer constante de giro#
set_turn_constant
establece la constante de giro para una transmisión inteligente. Las transmisiones inteligentes utilizan un controlador P simple al girar. Esta constante, generalmente conocida como kp, es la ganancia utilizada en la ecuación que convierte el error angular en velocidad del motor.
Nota: Este método solo funcionará con una transmisión que haya sido configurada con un sensor giroscópico o un sensor inercial cerebral.
Uso:
set_turn_constant(valor)
Parámetros |
Descripción |
---|---|
valor |
La nueva constante de giro está en el rango de 0,1 a 4,0. El valor predeterminado es 1,0. |
# Turn and display the heading with different turn constants
brain.screen.set_font(FontType.PROP20)
brain.screen.print("Default Constant: ")
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())
brain.screen.next_row()
wait(2, SECONDS)
brain_inertial.reset_heading()
brain.screen.print("0.2 Turn Constant: ")
drivetrain.set_turn_constant(0.2)
drivetrain.turn_for(RIGHT, 90, DEGREES)
brain.screen.print(drivetrain.heading())
Constructores#
Los constructores se utilizan para crear manualmente objetos DriveTrain
y SmartDrive
, que son necesarios para configurar un sistema de transmisión fuera de VEXcode.
Para los ejemplos siguientes, el sistema de transmisión configurado se llamará drivetrain_1
y se utilizará en todos los ejemplos posteriores en esta documentación de API cuando se haga referencia a los métodos de clase DriveTrain
y SmartDrive
.
Nota: Para crear un sistema de transmisión, ya se deben haber creado al menos dos objetos Motor
o MotorGroup
.
Transmisión#
DriveTrain
crea un sistema de transmisión sin sensor giroscópico ni sensor inercial cerebral.
Uso:
DriveTrain(lm, rm, wheelTravel, trackWidth, wheelBase, unidades, externalGearRatio)
Parámetro |
Descripción |
---|---|
|
El nombre de un motor o grupo de motores izquierdo creado previamente. |
|
El nombre de un motor o grupo de motores derecho creado previamente. |
|
Opcional. La circunferencia de las ruedas del tren de potencia. El valor predeterminado es 300 milímetros. |
|
Opcional. Ancho de vía de la transmisión. El valor predeterminado es 320 milímetros. |
|
Opcional. Distancia entre ejes del tren motriz. La distancia predeterminada es de 320 milímetros. |
|
Opcional. Unidad que representa los valores de
|
|
Opcional. La relación de transmisión se utiliza para compensar las distancias de conducción si el engranaje se utiliza como un número entero. |
# Create the Motors
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT2, 1.0, True)
# Construct a 2-Motor Drivetrain "drivetrain" with the
# DriveTrain class
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
# Create the left Motors and group them under the
# MotorGroup "left_motors"
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)
# Create the right Motors and group them under the
# MotorGroup "right_motors"
right_motor_a = Motor(Ports.PORT3, 1.0, True)
right_motor_b = Motor(Ports.PORT4, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)
# Construct a 4-Motor Drivetrain "drivetrain" with the
# DriveTrain class
drivetrain = DriveTrain(left_drive_smart, right_drive_smart, 200, 173, 76, MM, 1)
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
Transmisión inteligente#
SmartDrive
crea una transmisión con un sensor giroscópico o un sensor inercial cerebral.
Uso:
SmartDrive(lm, rm, g, recorrido de la rueda, ancho de vía, base de la rueda, unidades, relación de transmisión externa)
Parámetro |
Descripción |
---|---|
|
El nombre de un motor o grupo de motores izquierdo creado previamente. |
|
El nombre de un motor o grupo de motores derecho creado previamente. |
|
El nombre de un Sensor inercial o Sensor giroscópico creado previamente. |
|
Opcional. La circunferencia de las ruedas del tren de potencia. El valor predeterminado es 300 milímetros. |
|
Opcional. Ancho de vía de la transmisión. El valor predeterminado es 320 milímetros. |
|
Opcional. Distancia entre ejes del tren motriz. La distancia predeterminada es de 320 milímetros. |
|
Opcional. Unidad que representa los valores de
|
|
Opcional. La relación de transmisión se utiliza para compensar las distancias de conducción si el engranaje se utiliza como un número entero. |
# Construct a SmartDrive Drivetrain with 2 motors
brain_inertial = Inertial()
left_drive_smart = Motor(Ports.PORT1, 1.0, False)
right_drive_smart = Motor(Ports.PORT6, 1.0, True)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)
Si va a crear un sistema de transmisión inteligente con varios motores, deberá crear los Motores por separado antes de agruparlos en un Grupo de motores.
# Construct a SmartDrive Drivetrain with 4 motors
brain_inertial = Inertial()
left_motor_a = Motor(Ports.PORT1, 1.0, False)
left_motor_b = Motor(Ports.PORT2, 1.0, False)
left_drive_smart = MotorGroup(left_motor_a, left_motor_b)
right_motor_a = Motor(Ports.PORT5, 1.0, True)
right_motor_b = Motor(Ports.PORT6, 1.0, True)
right_drive_smart = MotorGroup(right_motor_a, right_motor_b)
drivetrain = SmartDrive(left_drive_smart, right_drive_smart, brain_inertial, 200)
drivetrain.drive_for(FORWARD, 200, MM)
drivetrain.drive_for(REVERSE, 200, MM)