Robot-Specific Python#

Introduction#

The VIQRC 21-22 Pitching In Playground features methods exclusive to this Playground, including three motor options and the Color Sensor.

All standard VEXcode VR methods are available for use in the VIQRC 21-22 Pitching In Playground.

Below is a list of all available Playground-specific methods:

Motion - Move and track the robot’s motors.

  • Actions

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

  • Mutators

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

  • Getters

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

Sensing - Utilize the robot’s various sensors.

  • Color

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

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

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

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

The examples on this page use the default Playground start position.

Motion#

Actions#

spin#

spin spins a motor indefinitely.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

intake_motor.spin(direction) - The intake motor

catapult_motor

catapult_motor.spin(direction) - The catapult motor

catapult_tension_motor

catapult_tension_motor.spin(direction) - The catapult tension motor

Parameters

Description

direction

The direction for the motor to spin depends on the selected motor.

  • FORWARD - Spins the Intake Motor in the intake direction or moves the selected catapult motor forward.
  • REVERSE - Spins the Intake Motor in the outtake direction or moves the selected catapult motor in reverse.

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

# VR threads — Do not delete
vr_thread(main)

spin_for#

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

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

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

catapult_motor

catapult_motor.spin_for(direction, distance, units, wait=True) - The catapult motor

catapult_tension_motor

catapult_tension_motor.spin_for(direction, distance, units, wait=True) - The catapult tension motor

Parameters

Description

direction

The direction for the motor to spin depends on the selected motor.

distance

The distance for the motor to spin as an integer.

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 a Ball with the Intake Motor
    intake_motor.spin_for(FORWARD, 1, TURNS)

# VR threads — Do not delete
vr_thread(main)

spin_to_position#

spin_to_position spins a motor to a given position.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

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

catapult_motor

catapult_motor.spin_to_position(angle, units, wait=True) - The catapult motor

catapult_tension_motor

catapult_tension_motor.spin_to_position(angle, units, wait=True) - The catapult tension motor

Parameters

Description

angle

The specific angle or number of turns that the motor will spin to.

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():
    # Move the Catapult Motor to a launch position
    catapult_motor.spin_to_position(2600, DEGREES)

# VR threads — Do not delete
vr_thread(main)

stop motor#

stop stops a motor from spinning.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

intake_motor.stop() - The intake motor

catapult_motor

catapult_motor.stop() - The catapult motor

catapult_tension_motor

catapult_tension_motor.stop() - The catapult tension motor

Parameters

Description

This method has no parameters.

def main():
    # Spin the Intake Motor, then stop it
    intake_motor.spin(FORWARD)
    wait(1, SECONDS)
    intake_motor.stop()

# VR threads — Do not delete
vr_thread(main)

Mutators#

set_position#

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

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

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

catapult_motor

catapult_motor.set_position(position, units) - The catapult motor

catapult_tension_motor

catapult_tension_motor.set_position(position, units) - The catapult tension motor

Parameters

Description

position

The specific integer for the motor’s encoder to be set to.

units

The unit that represents the angle to rotate to:

  • DEGREES
  • TURNS

def main():
    # Set the Catapult Motor position, then return it to 0 degrees
    catapult_motor.set_position(2600, DEGREES)
    catapult_motor.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_velocity#

set_velocity sets the speed of a motor.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

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

catapult_motor

catapult_motor.set_velocity(velocity, units) - The catapult motor

catapult_tension_motor

catapult_tension_motor.set_velocity(velocity, units) - The catapult tension motor

Parameters

Description

velocity

The speed that the motor will spin at, ranging from -100 to 100.

units

The unit that represents the new velocity:

  • PERCENT

def main():
    # Set the Catapult Motor velocity before moving it
    catapult_motor.set_velocity(75, PERCENT)
    catapult_motor.spin_to_position(2600, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

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

catapult_motor

catapult_motor.set_timeout(value, units) - The catapult motor

catapult_tension_motor

catapult_tension_motor.set_timeout(value, units) - The catapult tension motor

Parameters

Description

value

The amount of time the motor will wait before stopping.

units

The unit to represent the timeout:

  • SECONDS
  • MSEC - milliseconds

def main():
    # Limit how long the Catapult Motor waits to reach its target
    catapult_motor.set_timeout(2, SECONDS)
    catapult_motor.spin_to_position(5000, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Getters#

is_done#

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.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

intake_motor.is_done() - The intake motor

catapult_motor

catapult_motor.is_done() - The catapult motor

catapult_tension_motor

catapult_tension_motor.is_done() - The catapult tension motor

Parameters

Description

This method has no parameters.

is_spinning#

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.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

intake_motor.is_spinning() - The intake motor

catapult_motor

catapult_motor.is_spinning() - The catapult motor

catapult_tension_motor

catapult_tension_motor.is_spinning() - The catapult tension motor

Parameters

Description

This method has no parameters.

position#

position returns the total distance the specified motor has rotated.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

intake_motor.position(units) - The intake motor

catapult_motor

catapult_motor.position(units) - The catapult motor

catapult_tension_motor

catapult_tension_motor.position(units) - The catapult tension motor

Parameters

Description

units

The units that represent the motor’s position:

  • DEGREES
  • TURNS

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

# VR threads — Do not delete
vr_thread(main)

velocity#

velocity returns the current rotational speed of the motor.

Usage:
One of three available motor objects can be used with this method, as shown below:

motor

Command

intake_motor

intake_motor.velocity(units) - The intake motor

catapult_motor

catapult_motor.velocity(units) - The catapult motor

catapult_tension_motor

catapult_tension_motor.velocity(units) - The catapult tension motor

Parameters

Description

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)

Sensing#

Color#

color#

color returns the color detected by the Color Sensor:

Color Returned:

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

Usage:
color.color()

Parameters

Description

This method has no parameters.

def main():
    # Print the color detected by the Color Sensor
    brain.screen.print(color.color())

# VR threads — Do not delete
vr_thread(main)

brightness#

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

Usage:
color.brightness()

Parameters

Description

This method has no parameters.

def main():
    # Print the Color Sensor brightness
    brain.screen.print(color.brightness())

# VR threads — Do not delete
vr_thread(main)

hue#

hue returns the hue detected by the Color Sensor.

Hue values range from 0 to 359 degrees, corresponding to positions on the color wheel shown below.

A circular color wheel displaying a full spectrum of hues labeled with degree values around the perimeter, increasing in 30-degree increments from 0 degrees at the top to 360 degrees.

Usage:
color.hue()

Parameters

Description

This method has no parameters.

def main():
    # Print the hue detected by the Color Sensor
    brain.screen.print(color.hue())

# VR threads — Do not delete
vr_thread(main)

is_near_object#

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

  • True - The object is close to the Color Sensor.

  • False - The object is not close to the Color Sensor.

Usage:
color.is_near_object()

Parameters

Description

This method has no parameters.

def main():
    # Print whether the Color Sensor detects an object nearby
    brain.screen.print(color.is_near_object())

# VR threads — Do not delete
vr_thread(main)