Robot-Specific Python#

Introduction#

The VIQRC 23-24 Full Volume Playground features methods exclusive to the build designed for this Playground, including two motor options and its Optical Sensor.

All standard VEXcode VR methods are available for use in the VIQRC 23-24 Full Volume 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 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.

  • Mutators

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

  • 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 % or rpm.

Sensing - Utilize the robot’s various sensors.

  • Optical

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

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

Motion#

Actions#

spin#

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

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

motor

Command

arm_motor_group

arm_motor_group.spin(direction) — Intake Motors

intake_motor_group

intake_motor_group.spin(direction) — Conveyor Motors

Parameters

Description

direction

The direction for the motor to spin:

  • FORWARD — Spins the Conveyor up or the Intake in the intake direction.
  • REVERSE — Spins the Conveyor down or the Intake in the outtake direction.
def main():
    # Spin the intake motor forward then stop
    intake_motor_group.spin(FORWARD)
    wait(0.5, SECONDS)
    intake_motor_group.stop()

# VR threads — Do not delete
vr_thread(main)

spin_for#

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

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

motor

Command

arm_motor_group

arm_motor_group.spin_for(direction, distance, units, wait) — Intake Motors

intake_motor_group

intake_motor_group.spin_for(direction, distance, units, wait) — Conveyor Motors

Parameters

Description

direction

The direction for the motor to spin:

  • FORWARD – Spins the Conveyor up or the Intake in the intake direction.
  • REVERSE – Spins the Conveyor down or the Intake in the outtake direction.

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, without waiting for spin_for to finish.

def main():
    # Spin the intake motor forward then stop
    intake_motor_group.spin_for(FORWARD, 1, TURNS)

# VR threads — Do not delete
vr_thread(main)

spin_to_position#

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

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

motor

Command

arm_motor_group

arm_motor_group.spin_to_position(angle, units, wait=True) — Intake Motors

intake_motor_group

intake_motor_group.spin_to_position(angle, units, wait=True) — Conveyor Motors

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, without waiting for spin_to_position to finish.

def main():
    # Spin the intake motor forward then stop
    intake_motor_group.spin_to_position(55, DEGREES)

# VR threads — Do not delete
vr_thread(main)

stop#

stop stops a motor or motor group from spinning.

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

motor

Command

arm_motor_group

arm_motor_group.stop() — Intake Motors

intake_motor_group

intake_motor_group.stop() — Conveyor Motors

Parameters

Description

This method has no parameters.

def main():
    # Spin the intake motor forward then stop
    intake_motor_group.spin(FORWARD)
    wait(0.5, SECONDS)
    intake_motor_group.stop()

# VR threads — Do not delete
vr_thread(main)

Mutators#

set_position#

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

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

motor

Command

arm_motor_group

arm_motor_group.set_position(position, units) — Intake Motors

intake_motor_group

intake_motor_group.set_position(position, units) — Conveyor Motors

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 current motor position to 90 degrees
    intake_motor_group.set_position(90, DEGREES)
    # Spin the intake motor back to 0 degrees
    intake_motor_group.spin_to_position(0, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_velocity#

set_velocity sets the speed of a motor or motor group.

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

motor

Command

arm_motor_group

arm_motor_group.set_velocity(velocity, units) — Intake Motors

intake_motor_group

intake_motor_group.set_velocity(velocity, units) — Conveyor Motors

Parameters

Description

velocity

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

units

The unit that represents the new velocity:

  • PERCENT
def main():
    # Spin the intake motor forward then stop
    intake_motor_group.set_velocity(75, PERCENT)
    intake_motor_group.spin_to_position(180, DEGREES)

# VR threads — Do not delete
vr_thread(main)

set_timeout#

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.

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

motor

Command

arm_motor_group

arm_motor_group.set_timeout(value, units) — Intake Motors

intake_motor_group

intake_motor_group.set_timeout(value, units) — Conveyor Motors

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():
    # Spin the intake motor forward then stop
    intake_motor_group.set_timeout(2, SECONDS)
    intake_motor_group.spin_to_position(270, DEGREES)

# VR threads — Do not delete
vr_thread(main)

Getters#

is_done#

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.

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

motor

Command

arm_motor_group

arm_motor_group.is_done() — Intake Motors

intake_motor_group

intake_motor_group.is_done() — Conveyor Motors

Parameters

Description

This method has no parameters.

is_spinning#

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.

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

motor

Command

arm_motor_group

arm_motor_group.is_spinning() — Arm Motor Group

intake_motor_group

intake_motor_group.is_spinning() — Intake Motor Group

Parameters

Description

This method has no parameters.

position#

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

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

motor

Command

arm_motor_group

arm_motor_group.position(units) — Intake Motors

intake_motor_group

intake_motor_group.position(units) — Conveyor Motors

Parameters

Description

units

The units that represent the motor’s position:

  • DEGREES
  • TURNS

velocity#

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

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

motor

Command

arm_motor_group

arm_motor_group.velocity(units) — Intake Motors

intake_motor_group

intake_motor_group.velocity(units) — Conveyor Motors

Parameters

Description

units

The unit that represent the motor’s position:

  • PERCENT

Sensing#

Optical#

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:
optical.is_near_object()

Parameters

Description

This method has no parameters.

color#

color returns the color detected by the Optical Sensor:

Color Returned:

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

Usage:
optical.color()

Parameters

Description

This method has no parameters.

brightness#

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

Usage:
optical.brightness()

Parameters

Description

This method has no parameters.

hue#

hue returns the hue detected by the Optical 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° at the top to 360°.

Usage:
optical.hue()

Parameters

Description

This method has no parameters.

object_detected#

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

Usage:
optical.object_detected(callback, arg)

Parameters

Description

callback

A function that will be called when an object is detected.

arg

Optional. A tuple that is used to pass arguments to the callback function.

object_lost#

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

Usage:
optical.object_lost(callback, arg)

Parameters

Description

callback

A function that will be called when a detected object is lost.

arg

Optional. A tuple that is used to pass arguments to the callback function.