Python específico para robots#

Introducción#

El simulador de carreras VIQRC 22-23 Slapshot incorpora métodos exclusivos de este simulador, incluyendo dos opciones de motor, el parachoques de admisión y el sensor óptico.

Todos los métodos VEXcode VR estándar están disponibles para su uso en el entorno de pruebas VIQRC 22-23 Slapshot.

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

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

    • spin_to_position - Spins a motor to a set position.

    • stop - Stops a specific motor from spinning.

  • Mutadores

    • set_position - Sets the encoder value of a motor.

    • set_velocity - Sets the speed of a motor as a percentage.

    • set_timeout - Limits how long a motor command 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 percent.

Eventos: Ejecuta el código cuando un sensor cambia de estado.

  • Parachoques

    • pressed - Registers a callback function for when the Intake Bumper is pressed.

    • released - Registers a callback function for when the Intake Bumper is released.

  • Óptico

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

Detección: Utilice los diversos sensores del robot.

  • Parachoques

    • pressing - Returns whether the Intake Bumper is currently pressed.

  • Óptico

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

    • color - Returns the color detected by the Optical Sensor.

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

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

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

Movimiento#

Comportamiento#

girar#

spin spins a motor 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

intake_motor

intake_motor.spin(direction) - The intake motor

arm_motor

arm_motor.spin(direction) - The arm motor

Parámetros

Descripción

direction

The direction for the motor to spin:

  • FORWARD - Spins the intake in the intake direction or raises the arm.
  • REVERSE - Spins the intake in the outtake direction or lowers the arm.

def main():
    # Spin the Intake Motor to collect a Disc
    intake_motor.spin(FORWARD)
    wait(1, SECONDS)
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

girar_para#

spin_for spins a motor 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

intake_motor

intake_motor.spin_for(direction, distance, units, wait=True) - The intake motor

arm_motor

arm_motor.spin_for(direction, distance, units, wait=True) - The arm motor

Parámetros

Descripción

direction

The direction for the motor to spin:

  • FORWARD - Spins the intake in the intake direction or raises the arm.
  • REVERSE - Spins the intake in the outtake direction or lowers 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.

def main():
    # Collect the preloaded Disc
    intake_motor.spin_for(FORWARD, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

girar_a_posición#

spin_to_position spins a motor 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

intake_motor

intake_motor.spin_to_position(angle, units, wait=True) - The intake motor

arm_motor

arm_motor.spin_to_position(angle, units, wait=True) - The arm 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.

def main():
    # Raise the Arm to reach over the barrier
    arm_motor.spin_to_position(600, DEGREES)

# VR threads — Do not delete
vr_thread(main)

motor de parada#

stop stops a motor 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

intake_motor

intake_motor.stop() - The intake motor

arm_motor

arm_motor.stop() - The arm motor

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Raise the Arm briefly, then stop it
    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 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

intake_motor

intake_motor.set_position(position, units) - The intake motor

arm_motor

arm_motor.set_position(position, units) - The arm 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():
    # Set the Intake Motor position, then return to 0 degrees
    intake_motor.set_position(180, DEGREES)
    intake_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

establecer_velocidad#

set_velocity sets the speed of a 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

intake_motor

intake_motor.set_velocity(velocity, units) - The intake motor

arm_motor

arm_motor.set_velocity(velocity, units) - The arm motor

Parámetros

Descripción

velocity

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

units

The unit that represents the new velocity:

  • PERCENT

def main():
    # Set the Intake Motor speed before collecting a Disc
    intake_motor.set_velocity(75, PERCENT)
    intake_motor.spin_for(FORWARD, 180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

establecer_tiempo_de_espera#

set_timeout sets a time limit for a motor’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

intake_motor

intake_motor.set_timeout(value, units) - The intake motor

arm_motor

arm_motor.set_timeout(value, units) - The arm 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():
    # Limit how long the Arm Motor waits to reach its target
    arm_motor.set_timeout(2, 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 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

intake_motor

intake_motor.is_done() - The intake motor

arm_motor

arm_motor.is_done() - The arm motor

Parámetros

Descripción

Este método no tiene parámetros.

está_girando#

is_spinning returns a Boolean indicating whether the specified motor 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

intake_motor

intake_motor.is_spinning() - The intake motor

arm_motor

arm_motor.is_spinning() - The arm motor

Parámetros

Descripción

Este método no tiene parámetros.

posición#

position returns the total distance the specified motor 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

intake_motor

intake_motor.position(units) - The intake motor

arm_motor

arm_motor.position(units) - The arm motor

Parámetros

Descripción

units

The units that represent the motor’s position:

  • DEGREES
  • TURNS

def main():
    # Print the current Arm Motor position
    brain.screen.print(arm_motor.position(DEGREES))

# VR threads — Do not delete
vr_thread(main)

velocidad#

velocity returns the current rotational speed of the 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

intake_motor

intake_motor.velocity(units) - The intake motor

arm_motor

arm_motor.velocity(units) - The arm motor

Parámetros

Descripción

units

The unit that represents the motor’s velocity:

  • PERCENT

def main():
    # Print the current Intake Motor velocity
    brain.screen.print(intake_motor.velocity(PERCENT))

# VR threads — Do not delete
vr_thread(main)

Eventos#

Parachoques#

apretado#

pressed registers a callback function for when the Intake Bumper is pressed.

Usage:
intake_bumper.pressed(callback)

Parámetros

Descripción

callback

Una función que se llamará cuando se presione el botón de admisión.

def stop_intake():
    intake_motor.stop()

def main():
    # Stop the Intake Motor when a Disc reaches the Intake Bumper
    intake_bumper.pressed(stop_intake)
    intake_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

liberado#

released registers a callback function for when the Intake Bumper is released.

Usage:
intake_bumper.released(callback)

Parámetros

Descripción

callback

Una función que se llamará cuando se suelte el tope de admisión.

def lower_arm():
    arm_motor.spin_to_position(0, DEGREES)

def main():
    # Lower the Arm when the Intake Bumper is released
    intake_bumper.released(lower_arm)

# VR threads — Do not delete
vr_thread(main)

Óptico#

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.

def stop_intake():
    intake_motor.stop()

def main():
    # Stop the Intake Motor when the Optical Sensor detects a Disc
    front_optical.object_detected(stop_intake)
    intake_motor.spin(FORWARD)

# VR threads — Do not delete
vr_thread(main)

objeto_perdido#

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

Usage:
front_optical.object_lost(callback, arg)

Parámetros

Descripción

callback

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 resume_intake():
    intake_motor.spin(FORWARD)

def main():
    # Restart the Intake Motor when the Optical Sensor no longer detects a Disc
    front_optical.object_lost(resume_intake)

# VR threads — Do not delete
vr_thread(main)

Detección#

Parachoques#

prensado#

pressing returns a Boolean indicating whether the Intake Bumper is currently pressed.

  • True - The Intake Bumper is pressed.

  • False - The Intake Bumper is not pressed.

Usage:
intake_bumper.pressing()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Print whether the Intake Bumper is pressed
    brain.screen.print(intake_bumper.pressing())

# VR threads — Do not delete
vr_thread(main)

Ó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():
    # Print whether the Front Optical Sensor detects a nearby Disc
    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():
    # Print the color detected by the Front Optical Sensor
    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.

def main():
    # Print the Front Optical Sensor brightness
    brain.screen.print(front_optical.brightness())

# VR threads — Do not delete
vr_thread(main)

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 grados en la parte superior hasta 360 grados.

Usage:
front_optical.hue()

Parámetros

Descripción

Este método no tiene parámetros.

def main():
    # Print the hue detected by the Front Optical Sensor
    brain.screen.print(front_optical.hue())

# VR threads — Do not delete
vr_thread(main)