Python específico para robots#
Introducción#
El Hero Bot, Flex, incluye un motor de garra, un motor de brazo, un sensor de visión AI, un sensor de distancia y un sensor del sistema de posicionamiento del juego (GPS).
Todos los métodos estándar de VEXcode VR están disponibles para su uso en el V5 26-27 Override Playground.
A continuación se muestra una lista de todos los métodos específicos de Robot disponibles:
Transmisión: mueva y gire el robot.
Acciones
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
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
heading— Devuelve el rumbo actual del robot de 0 a 359,99 grados.rotation— Devuelve la rotación actual del robot.is_done— Devuelve si el robot ha terminado de moverse, como un valor booleano.is_moving— Devuelve si el robot se está moviendo, como un valor booleano.velocity: devuelve la velocidad a la que conduce el robot.
Movimiento: mueva y siga los motores del robot.
Acciones
spin— Hace girar un motor hacia adelante o hacia atrás para siempre.spin_for— Hace girar un motor para una distancia específica.spin_to_position— Hace girar un motor a una posición específica.stop— Detiene el giro de un motor.
Mutadores
set_position— Cambia la posición actual del motor a un nuevo valor.set_velocity— Le dice a un motor qué tan rápido debe girar.set_timeout— Establece cuánto tiempo intentará un motor terminar un movimiento.
Getters
is_done— Devuelve si el motor ha terminado de moverse, como un valor booleano.is_spinning— Devuelve si el motor está girando, como un valor booleano.position— Devuelve la posición actual del motor.velocity: devuelve la velocidad a la que gira el motor.
AI Vision – Captura y analiza objetos utilizando el sensor de visión AI.
Getters
take_snapshot– Devuelve una tupla de objetos detectados para una firma específica.
Propiedades
.width– Ancho del objeto detectado en píxeles..height– Altura del objeto detectado en píxeles..centerX– Posición X del centro del objeto en píxeles..centerY– Posición Y del centro del objeto en píxeles..originX– Posición X de la esquina superior izquierda del objeto en píxeles..originY– Posición Y de la esquina superior izquierda del objeto en píxeles..id– ID de clasificación del objeto detectado.
Consola: imprima los valores en la consola y el monitor.
Imprimir
brain.screen.print— Muestra texto, números o valores de variables en la Consola.brain.screen.next_row— Mueve el cursor de la consola al inicio de la siguiente fila.brain.screen.clear_screen: borra todas las filas de la consola.
Monitor
monitor_variable— Agrega una o más variables predefinidas a la pestaña Monitor.monitor_sensor— Agrega uno o más valores de sensor a la pestaña Monitor.
Detección: utilice los diversos sensores del robot.
Distancia
found_object– Devuelve si el sensor de distancia detecta un objeto dentro del alcance.object_distance– Devuelve la distancia entre el sensor de distancia y el objeto detectado más cercano.
GPS
x_position– Devuelve la coordenada x actual del sensor GPS en el campo.y_position– Devuelve la coordenada y actual del sensor GPS en el campo.heading– Devuelve el rumbo al que se enfrenta actualmente el robot en función del sensor GPS.
Los ejemplos de esta página utilizan la Ubicación de inicio C de la lista de verificación previa al partido del patio de recreo.
Tren de transmisió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.
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.
Usage:
drivetrain.drive(direction)
Parámetros |
Descripción |
|---|---|
|
La dirección en la que se mueve el robot: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
wait(0.5, SECONDS)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# 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():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
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.
Usage:
drivetrain.turn(direction)
Parámetros |
Descripción |
|---|---|
|
La dirección en la que gira el robot: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# 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 ángulo: |
|
Opcional. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, 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 es 0 grados.
Usage:
drivetrain.turn_to_heading(heading, units, wait)
Parámetros |
Descripción |
|---|---|
|
El rumbo al que debe enfrentarse el robot es de -359 a 359 grados. |
|
Opcional. La unidad de ángulo: |
|
Opcional. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_heading(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, 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. 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 gira a una rotación de 360 grados, girará a la izquierda una vez, porque 360 es menos de 720.
Usage:
drivetrain.turn_to_rotation(rotation, 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 ángulo: |
|
Opcional. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_to_rotation(-110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
parada#
stop detiene el movimiento del robot.
Usage:
drivetrain.stop()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn(LEFT)
wait(0.78, SECONDS)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# 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. |
|
Opcional. La unidad de ángulo: |
def main():
# Make facing the Neutral Goal the new heading
drivetrain.set_heading(110, 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. set_rotation cambia la rotación actual del robot a un 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 ángulo: |
def main():
# Make facing the Neutral Goal the new rotation
drivetrain.set_rotation(110, DEGREES)
drivetrain.turn_to_rotation(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout establece cuántos segundos 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(time, units)
Parámetros |
Descripción |
|---|---|
|
El número de segundos que el robot puede intentar terminar un movimiento. Esto puede ser un |
|
Opcional. La unidad de tiempo: |
def main():
# Turn to face the Neutral Goal
drivetrain.set_timeout(0.8, SECONDS)
drivetrain.turn_for(LEFT, 180, DEGREES)
# 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():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.set_drive_velocity(100, PERCENT)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# 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 to face the Neutral Goal faster
drivetrain.set_turn_velocity(100, PERCENT)
drivetrain.turn_for(LEFT, 110, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getters#
encabezado#
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():
# Turn to the Goal, then show heading
drivetrain.turn_for(LEFT, 110, DEGREES)
brain.screen.print("Heading: ")
brain.screen.print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
rotación#
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():
# Spin to find a Pin, then show rotation
drivetrain.turn_for(RIGHT, 450, DEGREES)
brain.screen.print("Rotation: ")
brain.screen.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. |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.spin_for(FORWARD, 800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait(0.5, SECONDS)
while not drivetrain.is_done():
wait(5, MSEC)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
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. |
def main():
# Raise the Arm once stopped near the Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES, wait=False)
wait (0.5, SEC)
while drivetrain.is_moving():
wait(5, MSEC)
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
velocidad#
velocity devuelve la velocidad a la que conduce el robot, como un porcentaje de -100% a 100%.
Usage:
drivetrain.velocity(units)
Parámetros |
Descripción |
|---|---|
|
Opcional. La unidad de velocidad: |
def main():
# Show speed while driving to the Goal
drivetrain.drive_for(FORWARD, 150, MM)
brain.screen.print("Velocity: ")
brain.screen.print(drivetrain.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Movimiento#
Flex utiliza el motor del brazo para levantar y bajar el brazo, y el motor de la garra para abrir y cerrar la garra.
Cada motor tiene su propio comportamiento de dirección. Las descripciones de las direcciones explican cómo cada dirección mueve ese motor en Flex.
Acciones#
girar#
spin hace girar un motor en una de dos direcciones para siempre. El motor continuará girando hasta que se le dé otra acción, como girar en una dirección diferente o detenerse.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
La dirección en la que gira el motor:
|
def main():
# Raise the Arm before driving toward a Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
spin_for#
spin_for hace girar un motor para una distancia específica. El giro es relativo a la posición actual del motor. El proyecto esperará hasta que el motor termine de girar antes de que se ejecute la siguiente línea de código.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
La dirección en la que gira el motor:
|
|
La distancia que gira el motor. |
|
Opcional. La unidad de distancia: |
|
Opcional.
|
def main():
# Raise the Arm to carry the Pin to the Goal
arm_motor.spin_for(FORWARD, 800, DEGREES)
# VR threads — Do not delete
vr_thread(main)
spin_to_position#
spin_to_position hace girar un motor a una posición específica.
La posición de un motor es la distancia a la que ha girado, medida en DEGREES o TURNS. Un giro equivale a 360 grados. Al comienzo de un proyecto, la posición del motor del brazo se establece en 0 grados. El motor de garra es la excepción: comienza a 467 grados (completamente cerrado). La posición del motor también se puede configurar utilizando el método set_position.
Los valores de posición son absolutos. Esto significa que la dirección del giro depende de la posición actual del motor.
Por ejemplo, si el motor arranca a 0 grados y gira a una posición de 720 grados, girará hacia adelante dos vueltas. Si luego gira a una posición de 360 grados, girará en reversa una vuelta, porque 360 es menos de 720.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
El valor de posición al que girará el motor. |
|
Opcional. La unidad de posición: |
|
Opcional.
|
def main():
# Raise the Arm, then release the Pin
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
parada#
stop detiene el giro de un motor.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Raise the Arm partway to hold the Pin
arm_motor.spin(FORWARD)
wait(1, SECONDS)
arm_motor.stop()
# VR threads — Do not delete
vr_thread(main)
Mutadores#
set_position#
La posición de un motor es la distancia a la que ha girado, medida en DEGREES o TURNS. Un giro es igual a 360 grados. set_position cambia la posición actual del motor a un nuevo valor.
Por ejemplo, si un motor ha girado a 180 grados, ajustar la posición a 0 grados restablecerá esa posición de 180 a 0 grados. Entonces el motor puede girar a posiciones basadas en ese nuevo valor.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
El valor de posición que se debe establecer para el motor. |
|
Opcional. La unidad de posición: |
def main():
# Reset encoder, raise Arm, place Pin
arm_motor.set_position(0, DEGREES)
arm_motor.spin_to_position(800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_velocity#
set_velocity le dice a un motor qué tan rápido debe girar. Un porcentaje más alto hace que el motor gire más rápido y un porcentaje más bajo hace que el motor gire más lento.
Cada proyecto comienza con cada motor girando al 50% de velocidad por defecto.
Nota: Una velocidad más alta hace que el motor gire más rápido, pero puede ser menos preciso. Una velocidad más baja hace que el motor gire más lento, pero puede ser más preciso.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
La velocidad para girar es de 0% a 100%. Esto puede ser un |
|
La unidad de velocidad: |
def main():
# Raise the Arm fast to release the Pin
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_for(FORWARD, 800, DEGREES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout establece cuánto tiempo intentará un motor terminar un movimiento. Si el motor no puede terminar en ese tiempo, dejará de intentarlo y pasará a la siguiente línea de código. Esto evita que el motor se atasque en un movimiento.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
La cantidad de tiempo que el motor puede intentar terminar un movimiento. Esto puede ser un |
|
La unidad de tiempo: |
def main():
# Score a Pin in a Neutral Goal
drivetrain.turn_for(LEFT, 110, DEGREES)
arm_motor.set_timeout(1, SECONDS)
arm_motor.spin_for(FORWARD, 1800, DEGREES)
drivetrain.drive_for(FORWARD, 25, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Getters#
is_done#
is_done devuelve si el motor ha terminado de moverse, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del motor.
True: el motor ha terminado de moverse.False: el motor todavía está en movimiento.
Este método funciona junto con los siguientes métodos de movimiento que tienen el parámetro wait: spin_for y spin_to_position.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Raise the Arm while driving to the Goal
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while not arm_motor.is_done():
drivetrain.drive(FORWARD)
wait(5, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
is_spinning#
is_spinning devuelve si el motor está girando, como un valor booleano. Esto se puede utilizar para controlar el tiempo de otros comportamientos basados en el movimiento del motor.
True: el motor está girando.False— El motor no está girando.
Este método funciona junto con los siguientes métodos de movimiento que tienen el parámetro wait: spin_for y spin_to_position.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Raise the Arm while driving to the Goal, then release the Pin
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.1, SECONDS)
while arm_motor.is_spinning():
drivetrain.drive_for(FORWARD, 25, MM)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
cargo#
La posición de un motor es la distancia a la que ha girado, medida en DEGREES o TURNS. Un giro equivale a 360 grados. La position devuelve la posición actual del motor.
Al comienzo de un proyecto, la posición del motor del brazo se establece en 0 grados. El motor de garra es la excepción: comienza a 467 grados (completamente cerrado). Si el motor gira un giro completo hacia adelante, la posición aumenta. Si el motor gira en la otra dirección, la posición disminuye.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
La unidad para devolver la posición del motor en: |
def main():
# Raise the Arm, then release the Pin
while arm_motor.position(DEGREES) < 800:
arm_motor.spin(FORWARD)
wait(2, MSEC)
arm_motor.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
velocidad#
velocity devuelve la velocidad a la que gira el motor.
Un valor positivo significa que el motor está girando hacia adelante. Un valor negativo significa que el motor está girando en reversa.
Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:
motor |
Comando |
|---|---|
|
|
|
|
Parámetros |
Descripción |
|---|---|
|
La unidad de velocidad a devolver: |
def main():
# Show Arm Motor velocity while raising
arm_motor.set_velocity(100, PERCENT)
arm_motor.spin_to_position(800, DEGREES, wait=False)
wait(0.2, SECONDS)
brain.screen.print(arm_motor.velocity(PERCENT))
# VR threads — Do not delete
vr_thread(main)
Visión de IA#
Getters#
take_snapshot#
take_snapshot filtra los datos del marco del sensor de visión de IA en una sola firma, una descripción guardada de algo que el sensor puede reconocer, como un elemento de juego en el campo, y devuelve una tupla.
La tupla almacena objetos ordenados de mayor a menor por ancho, comenzando en el índice 0. Se puede acceder a las propiedades de cada objeto utilizando su índice. Se devuelve una tupla vacía si no se detectan objetos coincidentes.
Usage:
ai_vision.take_snapshot(signature)
Parámetros |
Descripción |
|---|---|
|
Filtra el conjunto de datos para incluir solo los datos de la firma dada. Las firmas disponibles son:
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn to face the Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn(LEFT)
elif ai_objects[0].centerX > 180:
drivetrain.turn(RIGHT)
else:
drivetrain.stop()
break
# VR threads — Do not delete
vr_thread(main)
Propiedades#
Hay siete propiedades que se incluyen con cada objeto almacenado en una tupla después de usar take_snapshot.
Todos los valores de propiedad, excepto .id, describen la posición y el tamaño del objeto detectado en la vista del sensor de visión AI en el momento en que se utilizó take_snapshot. Estos valores se miden en píxeles, en función de la resolución de 320 por 240 píxeles del sensor.
.width#
.width devuelve el ancho del objeto detectado en píxeles, que es un número entero entre 1 y 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].width > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.height#
.height devuelve la altura del objeto detectado en píxeles, que es un número entero entre 1 y 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].height > 200:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.centerX#
.centerX devuelve la coordenada x del centro del objeto detectado en píxeles, que es un entero entre 0 y 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerX < 140:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.centerY#
.centerY devuelve la coordenada y del centro del objeto detectado en píxeles, que es un número entero entre 0 y 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].centerY > 230:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.originX#
.originX devuelve la coordenada x de la esquina superior izquierda del cuadro delimitador del objeto detectado en píxeles, que es un número entero entre 0 y 320.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Turn and approach the next Cup and Pin
drivetrain.set_turn_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originX < 100:
drivetrain.turn_for(LEFT, 5, DEGREES)
else:
drivetrain.drive_for(FORWARD, 25, INCHES)
break
# VR threads — Do not delete
vr_thread(main)
.originY#
.originY devuelve la coordenada y de la esquina superior izquierda del cuadro delimitador del objeto detectado en píxeles, que es un número entero entre 0 y 240.
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Approach the next Cup and Pin
drivetrain.set_drive_velocity(30, PERCENT)
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
if ai_objects[0].originY > 140:
drivetrain.stop()
break
else:
drivetrain.drive(FORWARD)
# VR threads — Do not delete
vr_thread(main)
.id#
.id devuelve el ID de la Clasificación de IA detectada como un número entero.
Clasificación de IA |
id |
Firma |
|---|---|---|
RedBluePin |
0 |
|
BlueYellowPin |
1 |
|
RedYellowPin |
2 |
|
YellowPin |
3 |
|
Copa |
4 |
|
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
drivetrain.turn_for(LEFT, 70, DEGREES)
# Display the ID of the next closest object
while True:
ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)
if ai_objects:
brain.screen.print(ai_objects[0].id)
break
# VR threads — Do not delete
vr_thread(main)
Consola#
La Consola muestra texto, números y valores de variables mientras se ejecuta un proyecto. Los métodos de consola también pueden mover el cursor a una nueva fila, borrar la consola y agregar variables o valores de sensor a la pestaña Monitor.
Imprimir#
brain.screen.print#
brain.screen.print muestra texto, números o valores de variables en la Consola utilizando la posición actual del cursor.
Use brain.screen.next_row cuando desee que el siguiente valor impreso comience en una nueva fila.
Usage:
brain.screen.print(value)
Parámetros |
Descripción |
|---|---|
|
El texto, el número o el valor de la variable que se mostrará en la Consola. |
def main():
# Display a message in the Console
brain.screen.print("Hello, robot!")
# VR threads — Do not delete
vr_thread(main)
brain.screen.next_row#
brain.screen.next_row mueve el cursor a la columna 1 en la siguiente fila de la Consola. El siguiente valor impreso aparecerá en esa fila.
Usage:
brain.screen.next_row()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Print on two rows
brain.screen.print("Row 1")
brain.screen.next_row()
brain.screen.print("Row 2")
# VR threads — Do not delete
vr_thread(main)
brain.screen.clear_screen#
brain.screen.clear_screen borra todas las filas de la consola y mueve el cursor a la fila 1.
Usage:
brain.screen.clear_screen()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Display text, then clear it after two seconds
brain.screen.print("This will disappear...")
wait(2, SECONDS)
brain.screen.clear_screen()
# VR threads — Do not delete
vr_thread(main)
Monitor#
monitor_variable#
monitor_variable agrega una o más variables predefinidas a la pestaña Monitor en VEXcode. Esto le permite ver el cambio de valor de una variable mientras se ejecuta un proyecto.
Las variables deben ser globales para que monitor_variable las monitoree con éxito. Proporcione cada nombre de variable como una cadena.
Usage:
monitor_variable(“variable”)
monitor_variable(“variable1”, “variable2”)
Parámetros |
Descripción |
|---|---|
|
El nombre de una variable global predefinida para monitorear, dada como una cadena. Para monitorear más de una variable, separe cada nombre de variable con una coma. |
def main():
# Monitor the number of loops
global loops
monitor_variable("loops")
# Turn in a full circle 3 times
for loops in range(12):
drivetrain.turn_for(RIGHT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
monitor_sensor#
monitor_sensor agrega uno o más valores de sensor a la pestaña Monitor en VEXcode. Esto le permite ver cómo cambian los valores del sensor mientras se ejecuta un proyecto.
Proporcione cada valor del sensor como una cadena.
Usage:
monitor_sensor(“sensor”)
monitor_sensor(“sensor1”, “sensor2”)
Parámetros |
Descripción |
|---|---|
|
The sensor value to monitor, given as a string. To monitor more than one sensor value, separate each sensor value with a comma. Supported sensor identifiers include:
|
def main():
# Monitor the robot's heading
monitor_sensor("drivetrain.heading")
drivetrain.turn_for(RIGHT, 450, DEGREES)
# VR threads — Do not delete
vr_thread(main)
Detección#
Distancia#
found_object#
found_object devuelve si el sensor de distancia detecta actualmente un objeto dentro de 2000 mm.
True: el sensor de distancia detecta un objeto.False— El sensor de distancia no detecta un objeto.
Usage:
distance.found_object()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Turn until something is detected, then release the Pin
drivetrain.turn(RIGHT)
while True:
wait(5, MSEC)
if distance.found_object():
drivetrain.stop()
break
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
object_distance#
object_distance devuelve la distancia entre el sensor de distancia y el objeto detectado más cercano.
Usage:
distance.object_distance(units)
Parámetros |
Descripción |
|---|---|
|
La unidad de distancia: |
def main():
# Drive until 200 mm from the Goal, then release the Pin
while distance.object_distance(MM) > 200:
wait(5, MSEC)
drivetrain.drive(FORWARD)
drivetrain.stop()
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
GPS#
x_position#
x_position devuelve la coordenada x actual de un sensor GPS (Game Positioning System™) en el campo.
Usage:
gps.x_position(units)
Parámetros |
Descripción |
|---|---|
unidades |
La unidad del valor de compensación: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.x_position(MM) > -1370:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
y_position#
y_position devuelve la coordenada y actual de un sensor GPS (Game Positioning System™) en el campo.
Usage:
gps.y_position(units)
Parámetros |
Descripción |
|---|---|
unidades |
La unidad del valor de compensación: |
def main():
# Raise the Arm, drive to the Goal, release the Pin
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive(FORWARD)
while not gps.y_position(MM) < -450:
wait(2, MSEC)
drivetrain.stop()
claw_motor.spin_for(REVERSE, 180, DEGREES)
# VR threads — Do not delete
vr_thread(main)
encabezado#
el heading devuelve el encabezado al que se enfrenta actualmente el robot en función de las lecturas del sensor GPS (Game Positioning System™) de 0 a 359 grados.
Usage:
gps.heading()
Parámetros |
Descripción |
|---|---|
Este método no tiene parámetros. |
def main():
# Raise the Arm, drive to the Goal, release the Pin
monitor_sensor("gps.heading")
arm_motor.spin_for(FORWARD, 300, DEGREES)
drivetrain.drive_for(FORWARD, 10, INCHES)
claw_motor.spin_for(REVERSE, 180, DEGREES)
# Turn left to face the Neutral Goal
drivetrain.set_turn_velocity(30, PERCENT)
drivetrain.turn(LEFT)
while not gps.heading() < 18:
wait(2, MSEC)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)