Python específico para robots#

Introducción#

El V5RC 24-25 High Stakes Playground incorpora métodos exclusivos para el diseño de este Playground, incluyendo dos opciones de motor, sensor de visión con IA, sensor óptico, sensor de rotación y sensor de sistema de posicionamiento de juego (GPS).

Todos los métodos VEXcode VR estándar están disponibles para su uso en el entorno de pruebas V5RC 25-26 Push Back.

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

Movimiento: Mueve y rastrea los motores del robot.

  • Comportamiento

    • spin – Spins the selected motor or motor group indefinitely.

    • spin_for – Spins a motor or group for a specific distance in degrees or turns.

    • spin_to_position – Spins a motor or motor group to a set position.

    • stop – Stops a specific motor or motor group from spinning.

  • Mutadores

    • set_position – Sets the encoder value of a motor or motor group.

    • set_velocity – Sets the speed of a motor or motor group as a percentage.

    • set_timeout – Limits how long a motor block waits before giving up if movement is blocked.

  • Obtenidos

    • is_done – Returns a Boolean indicating whether the motor is no longer spinning.

    • is_spinning – Returns a Boolean indicating whether the motor is currently spinning.

    • position – Returns the motor’s current rotational position in degrees or turns.

    • velocity – Returns the motor’s current velocity in % or rpm.

Visión por IA: Captura y analiza objetos utilizando el sensor de visión por IA.

  • Obtenidos

    • take_snapshot – Returns a tuple of detected objects based on a given signature.

  • Propiedades

    • width – Width of the detected object in pixels.

    • height – Height of the detected object in pixels.

    • centerX – X position of the object’s center in pixels.

    • centerY – Y position of the object’s center in pixels.

    • originX – X position of the object’s top-left corner in pixels.

    • originY – Y position of the object’s top-left corner in pixels.

    • id – Classification or tag ID of the object.

Detección: Utilice los diversos sensores del robot.

  • Óptico

    • is_near_object – Returns whether a detected object is near the Optical Sensor.

    • color – Returns the color detected from the Optical Sensor.

    • brightness – Returns the brightness percentage detected by the sensor.

    • hue – Returns the hue value of the detected color.

    • object_detected – Registers a callback function for when the Optical Sensor detects an object.

    • object_lost – Registers a callback function for when the Optical Sensor loses an object.

  • Rotación

    • set_position – Sets the current position of the Rotation Sensor to a specific value.

    • angle – Returns the current angle of the sensor between 0 and 359.99 degrees.

    • position – Returns the total rotational position in degrees or turns.

  • GPS

    • x_position – Returns the current x coordinate of a GPS Sensor on the field.

    • y_position – Returns the current y coordinate of a GPS Sensor on the field.

    • heading – Returns the heading that the robot is currently facing based on the GPS Sensor’s readings from 0 to 359 degrees.

Los ejemplos de esta página utilizan la posición de inicio predeterminada del Playground.

Movimiento#

Comportamiento#

girar#

spin spins a motor or motor group in the specified direction indefinitely.

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

motor

Dominio

arm_motor

arm_motor.spin(direction) — Arm Motor

pusher_motor

pusher_motor.spin(direction) — Pusher Motor

Parámetros

Descripción

direction

The direction for the motor to spin:

  • FORWARD — Spins the Arm up or the Pusher down the arm.
  • REVERSE — Spins the Arm down or moves the Pusher up the arm.
def main():
    # Lift the Arm up before moving
    arm_motor.spin(FORWARD)
    wait(1, SECONDS)
    arm_motor.stop()

# VR threads — Do not delete
vr_thread(main)

girar_para#

spin_for spins a motor or motor group for a given amount of degrees or turns.

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

motor

Dominio

arm_motor

arm_motor.spin_for(direction, distance, units, wait) — Arm Motor

pusher_motor

pusher_motor.spin_for(direction, distance, units, wait) — Pusher Motor

Parámetros

Descripción

direction

The direction for the motor to spin:

  • FORWARD — Spins the Arm up or the Pusher down the arm.
  • REVERSE — Spins the Arm down or moves the Pusher up the arm.

distance

La distancia que debe girar el motor como un número entero.

units

The unit that represents the distance to rotate:

  • DEGREES
  • TURNS

wait

Optional.

  • wait=True (default) — The robot waits until spin_for is complete before executing the next line of code.
  • wait=False — The robot starts the action and moves on to the next line of code right away, without waiting for spin_for to finish.

def main():
    # Lift the Arm up before moving
    arm_motor.spin_for(FORWARD, 400, DEGREES)

# VR threads — Do not delete
vr_thread(main)

girar_a_posición#

spin_to spins a motor or motor group to a given position.

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

motor

Dominio

arm_motor

arm_motor.spin_to_position(angle, units, wait=True) — Arm Motor

pusher_motor

pusher_motor.spin_to_position(angle, units, wait=True) — Pusher Motor

Parámetros

Descripción

angle

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

units

The unit that represents the angle to rotate to:

  • DEGREES
  • TURNS

wait

Optional.

  • wait=True (default) — The robot waits until spin_to_position is complete before executing the next line of code.
  • wait=False — The robot starts the action and moves on to the next line of code right away, without waiting for spin_to_position to finish.

def main():
    # Lift the Arm up before moving
    arm_motor.spin_to_position(400, DEGREES)

# VR threads — Do not delete
vr_thread(main)

detener#

stop stops a motor or motor group from spinning.

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

motor

Dominio

arm_motor

arm_motor.stop() — Arm Motor

pusher_motor

pusher_motor.stop() — Pusher Motor

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Lift the Arm up before moving
    arm_motor.spin(FORWARD)
    wait(1, SECONDS)
    arm_motor.stop()

# VR threads — Do not delete
vr_thread(main)

Mutadores#

posición_de_establecer#

set_position sets a motor’s or motor group’s encoder position to the given position value.

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

motor

Dominio

arm_motor

arm_motor.set_position(position, units) — Arm Motor

pusher_motor

pusher_motor.set_position(position, units) — Pusher Motor

Parámetros

Descripción

position

El número entero específico al que se debe configurar el codificador del motor.

units

The unit that represents the angle to rotate to:

  • DEGREES
  • TURNS
def main():
    # Make the raised Arm as the new 0 degrees position
    arm_motor.spin_to_position(400, DEGREES)
    arm_motor.set_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

establecer_velocidad#

set_velocity sets the speed of a motor or motor group.

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

motor

Dominio

arm_motor

arm_motor.set_velocity(velocity, units) — Arm Motor

pusher_motor

pusher_motor.set_velocity(velocity, units) — Pusher Motor

Parámetros

Descripción

velocity

La velocidad a la que girará el motor V5, que oscila entre 0 y 100.

units

The unit that represents the new velocity:

  • PERCENT
def main():
    # Lift the Arm up before moving
    arm_motor.set_velocity(100, PERCENT)
    arm_motor.spin_to_position(400, DEGREES)

# VR threads — Do not delete
vr_thread(main)

establecer_tiempo_de_espera#

set_timeout sets a time limit for a motor’s or motor group’s movement commands. This prevents Motion commands that do not reach their intended position from preventing subsequent commands from running.

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

motor

Dominio

arm_motor

arm_motor.set_timeout(value, units) — Arm Motor

pusher_motor

pusher_motor.set_timeout(value, units) — Pusher Motor

Parámetros

Descripción

value

El tiempo que el motor esperará antes de detenerse.

units

The unit to represent the timeout:

  • SECONDS
  • MSEC — milliseconds
def main():
    # Lift the Arm up before moving
    arm_motor.set_timeout(1, SECONDS)
    arm_motor.spin_for(FORWARD, 3, TURNS)

# VR threads — Do not delete
vr_thread(main)

Getters#

está_hecho#

is_done returns a Boolean indicating whether the specified motor or motor group is not spinning.

  • True – The specified motor is not spinning.

  • False – The specified motor is spinning.

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

motor

Dominio

arm_motor

arm_motor.is_done() — Arm Motor

pusher_motor

pusher_motor.is_done() — Pusher Motor

Parámetros

Descripción

Este método no tiene parámetros.

está_girando#

is_spinning returns a Boolean indicating whether the specified motor or motor group is spinning.

  • True – The specified motor is spinning.

  • False – The specified motor is not spinning.

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

motor

Dominio

arm_motor

arm_motor.is_spinning() — Arm Motor

pusher_motor

pusher_motor.is_spinning() — Pusher Motor

Parámetros

Descripción

Este método no tiene parámetros.

posición#

position returns the total distance the specified motor or motor group has rotated.

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

motor

Dominio

arm_motor

arm_motor.position(units) — Arm Motor

pusher_motor

pusher_motor.position(units) — Pusher Motor

Parámetros

Descripción

units

The units that represent the motor’s position:

  • DEGREES
  • TURNS

velocidad#

velocity returns the current rotational speed of the motor or motor group.

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

motor

Dominio

arm_motor

arm_motor.velocity(units) — Arm Motor

pusher_motor

pusher_motor.velocity(units) — Pusher Motor

Parámetros

Descripción

units

The unit that represent the motor’s position:

  • PERCENT

Visión por IA#

Getters#

tomar_instantánea#

take_snapshot filters the data from the AI Vision Sensor frame to return a tuple.

La tupla almacena objetos ordenados de mayor a menor ancho, comenzando en el índice#propertiesSe puede acceder a las propiedades de cada objeto mediante su índice. Se devuelve una tupla vacía si no se detectan objetos coincidentes.

Usage:
ai_vision.take_snapshot(signature)

Parámetros

Descripción

signature

Which signature to get data of. The only available signature is:

  • AiVision.ALL_AIOBJS - Detects Mobile Goals, Red Rings, and Blue Rings

def main():
    # Lift the Arm to not block the AI Vision Sensor's field of view
    arm_motor.spin_for(FORWARD, 350, DEGREES)
    while True:
        brain.screen.clear_screen()

        # Display the data of the largest detected Game Element
        ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

        if len(ai_objects) is not 0:
            brain.screen.print("Center X: ", ai_objects[0].centerX)
            brain.screen.next_row()

            brain.screen.print("Center Y: ", ai_objects[0].centerY)
            brain.screen.next_row()

        else:
            brain.screen.print("No object detected.")
                
        wait(0.2, SECONDS)

# VR threads — Do not delete
vr_thread(main)

Propiedades#

There are seven properties that are included with each object stored in a tuple after take_snapshot is used.

Some property values are based off of the detected object’s position in the AI Vision Sensor’s view at the time that take_snapshot was used. The AI Vision Sensor has a resolution of 320 by 240 pixels.

.ancho#

.width returns the width of the detected object in pixels, which is an integer between 1 and 320.

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the width of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].width)

# VR threads — Do not delete
vr_thread(main)

.altura#

.height returns the height of the detected object in pixels, which is an integer between 1 and 240.

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the height of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].height)

# VR threads — Do not delete
vr_thread(main)

.centerX#

.centerX returns the x-coordinate of the detected object’s center in pixels, which is an integer between 0 and 320.

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the centerX of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].centerX)

# VR threads — Do not delete
vr_thread(main)

.centroY#

.centerY returns the y-coordinate of the detected object’s center in pixels, which is an integer between 0 and 240.

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the centerY of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].centerY)

# VR threads — Do not delete
vr_thread(main)

.originX#

.originX returns the x-coordinate of the top-left corner of the detected object’s bounding box in pixels, which is an integer between 0 and 320.

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the originX of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].originX)

# VR threads — Do not delete
vr_thread(main)

.origenY#

.originY returns the y-coordinate of the top-left corner of the detected object’s bounding box in pixels, which is an integer between 0 and 240.

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display the originY of the largest Game Element
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:
        brain.screen.print(ai_objects[0].originY)

# VR threads — Do not delete
vr_thread(main)

.identificación#

.id returns the ID of the detected AI Classification as an integer.

Clasificación de IA

identificación

Firma

Objetivo móvil

0

GameElements.MOBILE_GOAL

Anillo rojo

1

GameElements.RED_RING

Anillo Azul

2

GameElements.BLUE_RING

def main():
    # Lift the Arm to not block the AI Vision Sensor's view
    arm_motor.spin_for(FORWARD, 350, DEGREES)

    # Display if a Mobile Goal is detected
    ai_objects = ai_vision.take_snapshot(AiVision.ALL_AIOBJS)

    if len(ai_objects) is not 0:

        if ai_objects[0].id == GameElements.MOBILE_GOAL:
            brain.screen.print("This is a Mobile Goal.")
        else:
            brain.screen.print("This is not a Mobile Goal.")

# VR threads — Do not delete
vr_thread(main)

Detección#

Óptico#

is_near_object#

is_near_object returns a Boolean indicating whether or not the Optical Sensor detects an object close to the sensor.

  • True – The object is close to the Optical Sensor.

  • False – The object is not close to the Optical Sensor.

Usage:
front_optical.is_near_object()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Display if the Optical Sensor is detecting an object
    brain.screen.print(front_optical.is_near_object())

# VR threads — Do not delete
vr_thread(main)

color#

color returns the color detected by the Optical Sensor.

Color devuelto:

  • NONE – No color detected.
  • RED
  • GREEN
  • BLUE
  • YELLOW
  • ORANGE
  • PURPLE
  • CYAN

Usage:
front_optical.color()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Display the color of the ring on the Arm
    brain.screen.print(front_optical.color())

# VR threads — Do not delete
vr_thread(main)

brillo#

brightness returns the brightness value detected by the Optical Sensor as a percent from 0% to 100%.

Usage:
front_optical.brightness()

Parámetros

Descripción

Este método no tiene parámetros.

matiz#

hue returns the hue detected by the Optical Sensor.

Los valores de tono van de 0 a 359 grados, lo que corresponde a las posiciones en la rueda de colores que se muestra a continuación.

Una rueda de colores circular que muestra un espectro completo de tonalidades etiquetadas con valores de grados alrededor del perímetro, aumentando en incrementos de 30 grados desde 0° en la parte superior hasta 360°.

Usage:
front_optical.hue()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Display the hue of the ring on the Arm.
    brain.screen.print("Hue: ", optical.hue())

# VR threads — Do not delete
vr_thread(main)

objeto_detectado#

object_detected registers a callback function for when the Optical Sensor detects an object.

Usage:
front_optical.object_detected(callback, arg)

Parámetros

Descripción

callback

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.

objeto_perdido#

object_lost registers a callback function for when the Optical Sensor loses a previously detected object.

Usage:
front_optical.object_lost(callback, arg)

Parámetros

Descripción

callback

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

arg

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

Rotación#

posición_de_establecer#

set_position sets the current position of the Rotation Sensor to a value in degrees.

Usage:
pusher_rotation.set_position(position, units)

Parámetros

Descripción

posición

La posición en la que se debe colocar el sensor de rotación.

unidades

Optional. The unit of measurement:

  • DEGREES (default)
  • TURNS

ángulo#

angle returns the current angle of the sensor as a float.

Usage:
pusher_rotation.angle(units)

Parámetros

Descripción

unidades

Optional. The unit of measurement:

  • DEGREES (default) – 0 to 359.99
  • TURNS

posición#

position returns the total rotational position.

Usage:
pusher_rotation.position(units)

Parámetros

Descripción

unidades

Optional. The unit of measurement:

  • DEGREES (default) – 0 to 359 as an integer
  • TURNS – As a float

GPS#

posición_x#

x_position returns the current x coordinate of a GPS (Game Positioning System™) Sensor on the field.

Usage:
gps.x_position(units)

Parámetros

Descripción

unidades

The unit of the offset value:

  • INCHES
  • MM

posición_y#

y_position returns the current y coordinate of a GPS (Game Positioning System™) Sensor on the field.

Usage:
gps.y_position(units)

Parámetros

Descripción

unidades

The unit of the offset value:

  • INCHES
  • MM

título#

heading returns the heading that the robot is currently facing based on the GPS (Game Positioning System™) Sensor’s readings from 0 to 359 degrees.

Usage:
gps.heading()

Parámetros

Descripción

Este método no tiene parámetros.