Python específico para robots#

Introducción#

El patio de juegos VIQRC 25-26 Mix & Match presenta métodos exclusivos para la construcción diseñada para este patio de juegos, incluidas dos opciones de motor, sensor óptico y LED táctil.

Todos los métodos estándar de VEXcode VR están disponibles para su uso en el patio de juegos VIQRC 25-26 Mix & Match.

A continuación se muestra una lista de todos los métodos específicos de Playground disponibles:

Movimiento: mueve y rastrea los motores del robot.

  • Comportamiento

    • spin – Hace girar el motor o el grupo de motores seleccionado indefinidamente.

    • spin_for – Hace girar un motor o grupo durante una distancia específica en grados o vueltas.

    • spin_to_position – Gira un motor o un grupo de motores a una posición establecida.

    • stop – Detiene el giro de un motor o un grupo de motores específico.

  • Mutadores

    • set_position – Establece el valor del codificador de un motor o grupo de motores.

    • set_velocity – Establece la velocidad de un motor o grupo de motores como un porcentaje.

    • set_timeout – Limita el tiempo que un bloque de motor espera antes de darse por vencido si el movimiento está bloqueado.

  • Conseguidores

    • is_done – Devuelve un valor booleano que indica si el motor ya no está girando.

    • is_spinning – Devuelve un valor booleano que indica si el motor está girando actualmente.

    • posición – Devuelve la posición de rotación actual del motor en grados o vueltas.

    • velocidad – Devuelve la velocidad actual del motor en % o rpm.

Detección: utilice los distintos sensores del robot.

  • LED táctil

    • set_color – Establece el TouchLED en un color seleccionado.

  • Óptico

    • is_near_object – Devuelve si un objeto detectado está cerca del sensor óptico.

    • color – Devuelve el color detectado por el sensor óptico.

    • brillo – Devuelve el porcentaje de brillo detectado por el sensor.

    • hue – Devuelve el valor de tono del color detectado.

    • object_detected – Registra una función de devolución de llamada para cuando el sensor óptico detecta un objeto.

    • object_lost – Registra una función de devolución de llamada para cuando el sensor óptico pierde un objeto.

Movimiento#

Comportamiento#

girar#

spin hace girar un motor indefinidamente.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.spin(direction) — El motor de garra

motor de elevación

lift_motor.spin(direction) — El motor del elevador

Parámetros

Descripción

dirección

La dirección en la que debe girar el motor:

  • ADELANTE – Abre la garra o baja el elevador.
  • REVERSA – Cierra la garra o sube el elevador.
def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

girar_para#

spin_for hace girar un motor una cantidad determinada de grados o vueltas.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.spin_for(dirección, distancia, unidades, esperar=Verdadero) — El motor de garra

motor de elevación

lift_motor.spin_for(dirección, distancia, unidades, esperar=True) — El motor del ascensor

Parámetros

Descripción

dirección

La dirección en la que debe girar el motor:

  • ADELANTE – Abre la garra o baja el elevador.
  • REVERSA – Cierra la garra o sube el elevador.

distancia

La distancia que debe girar el motor, expresada en un número entero.

unidades

La unidad que representa la distancia a girar:

  • GRADOS
  • VUELTAS

espera

Opcional.

  • wait=True (predeterminado) - El robot espera hasta que spin_for se complete antes de ejecutar la siguiente línea de código.
  • wait=False - El robot inicia la acción y pasa a la siguiente línea de código de inmediato, sin esperar a que spin_for termine.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

girar a la posición#

spin_to hace girar un motor a una posición determinada.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.spin_to_position(ángulo, unidades, esperar=True) — El motor de garra

motor de elevación

lift_motor.spin_to_position(angle, units, wait=True) — El motor de elevación

Parámetros

Descripción

ángulo

El ángulo específico o número de vueltas que dará el motor.

unidades

La unidad que representa el ángulo a rotar:

  • GRADOS
  • GIROS

espera

Opcional.

  • wait=True (predeterminado) - El robot espera hasta que spin_to_position se complete antes de ejecutar la siguiente línea de código.
  • wait=False - El robot inicia la acción y pasa a la siguiente línea de código de inmediato, sin esperar a que spin_to_position termine.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_to_position(-2, TURNS)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

detener#

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

Dominio

motor de garra

claw_motor.stop() — El motor de garra

motor de elevación

lift_motor.stop() — El motor del ascensor

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin(REVERSE)
  wait(2, SECONDS)
  lift_motor.stop()
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

Mutadores#

posición_establecida#

set_position establece la posición del codificador de un motor en el valor de posición dado.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.set_position(posición, unidades) — El motor de garra

motor de elevación

lift_motor.set_position(position, units) — El motor del ascensor

Parámetros

Descripción

posición

El entero específico que se debe configurar para el codificador del motor.

unidades

La unidad que representa el ángulo a rotar:

  • GRADOS
  • GIROS
def main():
  # Place a Pin atop another Pin
  lift_motor.set_position(100, DEGREES)
  lift_motor.spin_to_position(-500, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

establecer_velocidad#

set_velocity establece la velocidad 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

Dominio

motor de garra

claw_motor.set_velocity(velocidad, unidades) — El motor de garra

motor de elevación

lift_motor.set_velocity(velocity, units) — El motor del ascensor

Parámetros

Descripción

velocidad

La velocidad a la que girará el motor IQ, que varía de 0 a 100.

unidades

La unidad que representa la nueva velocidad:

  • PORCENTAJE
def main():
  # Place a Pin atop another Pin
  lift_motor.set_velocity(100, PERCENT)
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

establecer_tiempo_de_espera#

set_timeout establece un límite de tiempo para los comandos de movimiento de un motor. Esto evita que los comandos de movimiento que no alcanzan la posición prevista impidan la ejecución de los comandos posteriores.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.set_timeout(value, units) — El motor de garra

motor de elevación

lift_motor.set_timeout(value, units) — El motor del ascensor

Parámetros

Descripción

valor

La cantidad de tiempo que el motor esperará antes de detenerse.

unidades

La unidad para representar el tiempo de espera:

  • SEGUNDOS
  • MSEC – milisegundos
def main():
  # Place a Pin atop another Pin
  lift_motor.set_timeout(2, SECONDS)
  lift_motor.spin_for(REVERSE, 5, TURNS)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

Captadores#

está_hecho#

is_done devuelve un valor booleano que indica si el motor especificado no está girando.

  • Verdadero: el motor especificado no está girando.

  • Falso – El motor especificado está girando.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.is_done() — El motor de garra

motor de elevación

lift_motor.is_done() — El motor del ascensor

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
  wait(0.1, SECONDS)
  while not lift_motor.is_done():
      touchled.set_color(RED)
      wait(0.5, SECONDS)
      touchled.set_color(NONE)
      wait(0.5, SECONDS)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

está girando#

is_spinning devuelve un valor booleano que indica si el motor especificado está girando.

  • Verdadero – El motor especificado está girando.

  • Falso: el motor especificado no está girando.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.is_spinning() — El motor de garra

motor de elevación

lift_motor.is_spinning() — El motor del elevador

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
  wait(0.1, SECONDS)
  while lift_motor.is_spinning():
      touchled.set_color(RED)
      wait(0.5, SECONDS)
      touchled.set_color(NONE)
      wait(0.5, SECONDS)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

posición#

position devuelve la distancia total que ha girado el motor especificado.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.position(units) — El motor de garra

motor de elevación

lift_motor.position(units) — El motor del ascensor

Parámetros

Descripción

unidades

Las unidades que representan la posición del motor:

  • GRADOS
  • VUELTAS
def main():
  # Place a Pin atop another Pin
  lift_motor.spin(REVERSE)
  while not -600 > claw_motor.position(DEGREES):
      wait(2, MSEC)
  lift_motor.stop()
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

velocidad#

velocity devuelve la velocidad de rotación actual del motor.

Uso:
Se puede utilizar uno de los dos objetos de motor disponibles con este método, como se muestra a continuación:

motor

Dominio

motor de garra

claw_motor.velocity(units) — El motor de garra

motor de elevación

lift_motor.velocity(units) — El motor del ascensor

Parámetros

Descripción

unidades

La unidad que representa la posición del motor:

  • PORCENTAJE
def main():
  # Place a Pin atop another Pin
  lift_motor.set_velocity(100, PERCENT)
  lift_motor.spin_for(REVERSE, 600, DEGREES, wait=False)
  wait(0.5, SECONDS)
  brain.screen.print(lift_motor.velocity(PERCENT))
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

Detección#

LED táctil#

establecer_color#

set_color establece el color del LED táctil.

Uso:
touchled.set_color(color)

Parámetros

Descripción

color

El color para configurar el LED táctil:

  • NINGUNO – Apaga el LED táctil
  • ROJO
  • VERDE
  • AZUL
  • AMARILLO
  • NARANJA
  • PÚRPURA
  • BLANCO
  • ROJO_VIOLETA
  • VIOLETA
  • AZUL_VIOLETA
  • AZUL_VERDE
  • AMARILLO_VERDE
  • AMARILLO_NARANJA
  • ROJO_NARANJA

def main():
  # Place a Pin atop another Pin
  touchled.set_color(RED)
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)
  touchled.set_color(NONE)

Óptico#

está_cerca_del_objeto#

is_near_object devuelve un valor booleano que indica si el sensor óptico detecta o no un objeto cercano al sensor.

  • Verdadero – El objeto está cerca del sensor óptico.

  • Falso: el objeto no está cerca del sensor óptico.

Uso:
optical.is_near_object()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)
  while not not optical.is_near_object():
      wait(2, MSEC)
  lift_motor.spin_to_position(0, DEGREES)

color#

color devuelve el color detectado por el sensor óptico:

Color devuelto:

<ul><li>`NINGUNO` – No se detectó ningún color. </li><li>`ROJO`</li><li>`VERDE`</li><li>`AZUL`</li><li>`AMARILLO`</li><li>`NARANJA`</li><li>`MORADO`</li><li>`BLANCO`</li><li>`ROJO_VIOLETA`</li><li>`VIOLETA`</li><li>`AZUL_VIOLETA`</li><li>`AZUL_VERDE`</li><li>`AMARILLO_VERDE`</li><li>`AMARILLO_NARANJA`</li><li>`ROJO_NARANJA`</li></ul>

Uso:
optical.color()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)
  while not optical.color() == RED:
      wait(5, MSEC)
  lift_motor.spin_to_position(0, DEGREES)

brillo#

brightness devuelve el valor de brillo detectado por el sensor óptico como un porcentaje de 0% a 100%.

Uso:
optical.brightness()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)
  while not 30 > optical.brightness():
      wait(5, MSEC)
  lift_motor.spin_to_position(0, DEGREES)

matiz#

hue devuelve el tono detectado por el sensor óptico.

Los valores de tono varían de 0 a 359 grados, correspondientes a las posiciones en la rueda de color que se muestran a continuación.

Una rueda de color circular que muestra un espectro completo de tonos etiquetados con valores de grados alrededor del perímetro, que aumentan en incrementos de 30 grados desde 0° en la parte superior hasta 360°.

Uso:
optical.hue()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
  # Place a Pin atop another Pin
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)
  while not optical.hue() > 0:
      wait(5, MSEC)
  lift_motor.spin_to_position(0, DEGREES)

objeto_detectado#

object_detected registra una función de devolución de llamada para cuando el sensor óptico detecta un objeto.

Uso:
optical.object_detected(callback, arg)

Parámetros

Descripción

devolución de llamada

Una función que se llamará cuando se detecte un objeto.

arg

Opcional. Una tupla que se utiliza para pasar argumentos a la función de devolución de llamada.

def pin_in_open_claw():
  # Change color when claw isn't holding anything
  touchled.set_color(RED)

def main():
  # Place a Pin atop another Pin
  optical.object_detected(pin_in_open_claw)
  touchled.set_color(GREEN)
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)

objeto_perdido#

object_lost registra una función de devolución de llamada para cuando el sensor óptico pierde un objeto.

Uso:
optical.object_lost(callback, arg)

Parámetros

Descripción

devolución de llamada

Una función que se llamará cuando se pierda un objeto.

arg

Opcional. Una tupla que se utiliza para pasar argumentos a la función de devolución de llamada.

def lower_lift():
  # Lower lift when Pin not in claw
  lift_motor.spin_to_position(0, DEGREES)

def main():
  # Place a Pin atop another Pin
  optical.object_lost(lower_lift)
  lift_motor.spin_for(REVERSE, 600, DEGREES)
  drivetrain.drive_for(FORWARD, 140, MM)
  claw_motor.spin(FORWARD)