Robot Specific Blocks#
Introduction#
The V5RC Virtual Skills – Push Back Playground features blocks exclusive to the build designed for this Playground, including two motor options, an AI Vision Sensor, Bumper Switch, Distance Sensor, Optical Sensor, Touch LED, and GPS.
All standard VEXcode VR Blocks are available for use in the V5RC Virtual Skills – Push Back Playground.
Below is a list of all available Playground-specific Blocks:
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 motor – Stops a specific motor or motor group from spinning.
Settings
set motor velocity – Sets the speed of a motor or motor group as a percentage.
set motor timeout – Limits how long a motor block waits before giving up if movement is blocked.
Position
motor position – Returns the motor’s current rotational position in degrees or turns.
set motor position – Sets the encoder value of a motor or motor group.
Values
motor is done? – Returns a Boolean indicating whether the motor is no longer spinning.
motor is spinning? – Returns a Boolean indicating whether the motor is currently spinning.
motor velocity – Returns the motor’s current velocity in %.
AI Vision – Capture and analyze objects using the AI Vision Sensor.
Actions
get object data – Captures data for a specific object type, such as colors, pre-trained objects, or AprilTags.
Settings
set object item – Selects a specific object from the list.
Values
object exists? – Returns whether any classification was detected.
AI Classification is – Returns if a classification is detected.
object count – Returns how many objects were detected.
object property – Returns details such as:
Sensing – Utilize the robot’s various sensors.
Bumper
Distance
Distance found object? – Returns whether any object is currently detected.
object distance – Returns the distance of the nearest object from the Distance Sensor.
Optical
Optical found object? – Returns whether an object is detected.
Optical detects color? – Returns whether a specific color is detected.
Optical brightness – Returns brightness in %.
Optical hue – Returns hue of the detected color.
when Optical – Executes attached blocks when the Optical Sensor detects or loses an object.
GPS
GPS position – Returns the X or Y position from the GPS Sensor.
GPS heading – Returns the heading the robot is currently facing.
Motion#
Actions#
spin#
The spin block spins a selected motor or motor group in a specified direction using the current motor velocity.
spin [ClawMotor v] [open v]
Parameters |
Description |
---|---|
motor |
The motor or motor group to spin:
|
direction |
The direction to spin:
|
Example
when started :: hat events
[Pick up a second Block.]
spin [ConveyorMotor v] [up v] for [150] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [350] [mm v] ▶
spin for#
The spin for block spins a selected motor or motor group for a specific amount of rotation using the current motor velocity, measured in degrees or turns.
spin [ClawMotor v] [open v] for (90) [degrees v] ▶
Parameters |
Description |
---|---|
motor |
The motor or motor group to spin:
|
direction |
The direction to spin:
|
distance |
The rotation amount, as an integer or decimal. |
unit |
The measurement unit, which can be one of the following:
|
expanding arrow |
By default, this is a waiting block, so the drivetrain will finish moving before running the next block. To make the drivetrain start moving and immediately run the next block right away, expand the block to say and don’t wait. |
Example
when started :: hat events
[Pick up a second Block.]
spin [ConveyorMotor v] [up v] for [150] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [350] [mm v] ▶
spin to position#
The spin to position block spins a motor or motor group to a specific absolute position using the current motor velocity and motor position.
spin [ClawMotor v] to position (90) [degrees v] ▶
Parameters |
Description |
---|---|
motor |
The motor or motor group to spin:
|
position |
The target position to spin the motor or motor group to. |
unit |
The measurement unit, which can be one of the following:
|
expanding arrow |
By default, this is a waiting block, so the drivetrain will finish moving before running the next block. To make the drivetrain start moving and immediately run the next block right away, expand the block to say and don’t wait. |
Example
when started :: hat events
[Pick up a second Block.]
spin [ConveyorMotor v] to position [150] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [350] [mm v] ▶
stop motor#
The stop motor block immediately stops the selected motor or motor group.
stop [ClawMotor v]
Parameters |
Description |
---|---|
motor |
The motor or motor group to stop:
|
Example
when started :: hat events
[Pick up a second Block.]
spin [ConveyorMotor v] [up v] for [150] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [350] [mm v] ▶
stop [IntakeMotor v]
Settings#
set motor velocity#
The set motor velocity block sets the default spinning speed of a motor or motor group as a percentage for all subsequent Motor blocks in the project.
set [ClawMotor v] velocity to (50) [% v]
Parameters |
Description |
---|---|
motor |
The motor or motor group to set the velocity of:
|
velocity |
Sets the default movement velocity from 0 to 100 as a percent. |
unit |
The unit that represents the velocity:
|
Example
when started :: hat events
[Pick up a second Block.]
set [ConveyorMotor v] velocity to [100] [% v]
spin [ConveyorMotor v] [up v] for [200] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [400] [mm v] ▶
set motor timeout#
The set motor timeout block sets a time limit for how long a Motor block will wait to reach its target. If the robot cannot complete the movement within the set time, it will stop automatically and continue with the next block.
Note: The Motor’s time limit is used to prevent Motor blocks that do not reach their target position from stopping the execution of other blocks in the stack.
set [ClawMotor v] timeout to (1) seconds
Parameters |
Description |
---|---|
motor |
The motor or motor group to set the timeout of:
|
time |
The maximum number of seconds a Motor block will run before stopping and moving to the next block. |
Example
when started :: hat events
[Pick up a second Block.]
set [ConveyorMotor v] timeout to [0.5] seconds
spin [ConveyorMotor v] to position [1000] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [400] [mm v] ▶
Position#
motor position#
The motor position block returns the total distance the selected motor or motor group has rotated.
([ClawMotor v] position in [degrees v])
Parameters |
Description |
---|---|
motor |
The motor or motor group to return the position of:
|
unit |
The unit of measurement, which can be one of the following:
|
Example
when started :: hat events
[Pick up a second Block.]
while <([ConveyorMotor v] position in [degrees v]) < [150]>
spin [ConveyorMotor v] [up v]
end
stop [ConveyorMotor v]
spin [IntakeMotor v] [intake v]
drive [forward v] for [400] [mm v] ▶
set motor position#
The set motor position block sets a specific position value to a motor or motor group, which updates the encoder reading.
set [ClawMotor v] position to (0) [degrees v]
Parameters |
Description |
---|---|
motor |
The motor or motor group to set the position of:
|
position |
The encoder position value to set. |
unit |
The measurement unit, which can be one of the following:
|
Example
when started :: hat events
[Pick up a second Block.]
set [ConveyorMotor v] position to [-150] [degrees v]
spin [ConveyorMotor v] to position [0] [degrees v] ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [400] [mm v] ▶
Values#
motor is done#
The motor is done? block returns a Boolean indicating whether the motor or motor group is not spinning.
True – The motor is not spinning.
False – The motor is spinning.
<[ClawMotor v] is done?>
Parameters |
Description |
---|---|
motor |
The motor or motor group to check if it is done spinning:
|
Example
when started :: hat events
[Pick up a second Block.]
spin [ConveyorMotor v] to position [300] [degrees v] ◀ and don't wait
wait [0.1] seconds
repeat until <[ConveyorMotor v] is done?>
drive [forward v]
spin [IntakeMotor v] [intake v]
end
stop driving
stop [IntakeMotor v]
motor is spinning?#
The motor is spinning? block returns a Boolean indicating whether the motor is spinning.
True – The motor is spinning.
False – The motor is not spinning.
<[ClawMotor v] is spinning?>
Parameters |
Description |
---|---|
motor |
The motor or motor group to check if it is currently spinning:
|
Example
when started :: hat events
[Pick up a second Block.]
spin [ConveyorMotor v] to position [300] [degrees v] ◀ and don't wait
wait [0.1] seconds
while <[ConveyorMotor v] is spinning?>
drive [forward v] for [200] [mm v] ▶
spin [IntakeMotor v] [intake v]
motor velocity#
The motor velocity block returns the current rotational speed of the motor or motor group in a range from -100% to 100%.
([ClawMotor v] velocity in [% v])
Parameters |
Description |
---|---|
motor |
The motor or motor group to return the velocity of:
|
unit |
The unit that represents the velocity:
|
Example
when started :: hat events
[Pick up a second Block.]
set [ConveyorMotor v] velocity to [100] [% v]
spin [ConveyorMotor v] to position [300] [degrees v] ◀ and don't wait
wait [0.2] seconds
print ([ConveyorMotor v] velocity in [% v]) ▶
spin [IntakeMotor v] [intake v]
drive [forward v] for [400] [mm v] ▶
AI Vision#
Actions#
get object data#
The get object data block filters data from the AI Vision Sensor frame. The AI Vision Sensor can detect Game Elements on the field.
The dataset stores objects ordered from largest to smallest by width, starting at index 0. Each object’s properties can be accessed using AI Vision object property block. An empty dataset is returned if no matching objects are detected.
get [sports ball v] data from AI Vision
Parameter |
Description |
---|---|
signature |
Filters the dataset to only include data of the given signature. Available signatures are:
|
Example
Settings#
set object item#
The set object item block sets which item in the dataset to use.
set AI Vision object item to (1)
Parameters |
Description |
---|---|
item |
The number of the item in the dataset to use. |
Example
Values#
object exists?#
The object exists? block returns a Boolean indicating whether any object is detected in the dataset.
True – The dataset includes a detected object.
False – The dataset does not include any detected objects.
<AI Vision object exists?>
Parameters |
Description |
---|---|
This block has no parameters. |
Example
AI Classification is#
The AI Vision object is? block returns a Boolean indicating whether a detected object matches a specific classification.
True – The item in the dataset is the specific object.
False – The item in the dataset is not the specific object.
<AI Vision object is [sports ball v] ?>
Parameter |
Description |
---|---|
object |
Which object to compare the item to:
|
Example
object count#
The object count block returns the number of detected objects in the dataset as an integer.
AI Vision object count
Parameters |
Description |
---|---|
This block has no parameters. |
object property#
There are six properties that are included with each object (shown below) stored after the get object data block is used.
AI Vision object [width v]
Some property values are based off of the detected object’s position in the AI Vision Sensor’s view at the time that the get object data block was used. The AI Vision Sensor has a resolution of 320 by 240 pixels.
Parameter |
Description |
---|---|
property |
Which property of the detected object to use: |
width#
width returns the width of the detected object in pixels as an integer from 1 to 320.
AI Vision object [width v]
Example
when started :: hat events
[Move towards a blue barrel until its width is larger than 100 pixels.]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [width v]) [math_less_than v] [100]> then
move [forward v]
end
else
stop all movement
height#
height returns the height of the detected object in pixels as an integer from 1 to 240.
AI Vision object [height v]
Example
when started :: hat events
[Move towards a blue barrel until its height is larger than 100 pixels.]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [height v]) [math_less_than v] [100]> then
move [forward v]
end
else
stop all movement
centerX#
centerX returns the x-coordinate of the center of the detected object in pixels as an integer from 0 to 320.
AI Vision object [centerX v]
Example
when started :: hat events
[Turn slowly until a blue barrel is centered in front of the robot.]
set turn velocity to [30] %
turn [right v]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <[140] [math_less_than v] (AI Vision object [centerX v]) [math_less_than v] [180]> then
stop all movement
centerY#
centerY returns the y-coordinate of the center of the detected object in pixels as an integer from 0 to 240.
AI Vision object [centerY v]
Example
when started :: hat events
[Move towards a blue barrel until its center y-coordinate is more than 140 pixels.]
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [centerY v]) [math_less_than v] [140]> then
move [forward v]
end
else
stop all movement
originX#
originX returns the x-coordinate of the top-left corner of the detected object’s bounding box in pixels as an integer from 0 to 320.
AI Vision object [originX v]
Example
when started :: hat events
[Display if an orange barrel is to the left or the right.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [orange barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [originX v]) [math_less_than v] [160]> then
print [To the left!] on screen ▶
else
print [To the right!] on screen ▶
end
wait [0.5] seconds
originY#
originY returns the y-coordinate of the top-left corner of the detected object’s bounding box in pixels as an integer from 0 to 240.
AI Vision object [originY v]
Example
when started :: hat events
[Display if an orange barrel is close or far from the robot.]
forever
clear row [1] on screen
set cursor to row [1] column [1] on screen
get [orange barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [originY v]) [math_less_than v] [80]> then
print [Far!] on screen ▶
else
print [Close!] on screen ▶
end
wait [0.5] seconds
rotation#
rotation returns the orientation of the detected AprilTag or Color Code as an integer in degrees from 0 to 359.
AI Vision object [rotation v]
Example
when started :: hat events
[Slide left or right depending on how the Color Code is rotated.]
forever
get [Red_Blue v] data from AI Vision
if <AI Vision object exists?> then
if <[50] [math_less_than v] (AI Vision object [rotation v]) [math_less_than v] [100]> then
move [right v]
else if <[270] [math_less_than v] (AI Vision object [rotation v]) [math_less_than v] [330]> then
move [left v]
else
stop all movement
end
else
stop all movement
bearing#
bearing returns how far an object is to the left or right of the center of the AI Vision Sensor’s view as a degree. A value of 0 means it’s centered, positive values mean the object is to the right, and negative values mean the object is to the left.
when started :: hat events
[Keep the blue barrel directly in front of the robot.]
set turn velocity to [40] %
forever
get [blue barrel v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [bearing v]) [math_greater_than v] [5]> then
turn [right v]
else if <(AI Vision object [bearing v]) [math_less_than v] [-5]> then
turn [left v]
else
stop all movement
tagID#
tagID returns the identification number of the detected AprilTag as an integer.
AI Vision object [tagID v]
Example
when started :: hat events
[Move forward when AprilTag ID 0 is detected.]
forever
get [all AprilTags v] data from AI Vision
if <AI Vision object exists?> then
if <(AI Vision object [tagID v]) [math_equal v] [0]> then
move [forward v]
end
stop all movement
Sensing#
Bumper#
The Bumper blocks are the same as the blocks in the Free VR Playgrounds.
The Bumper Switch on the Push Back robot, Dex, detects whether or not a Block is currently at the bottom of the conveyor.
For information on how to use the Bumper blocks, go to its API documentation here.
Distance#
The Distance blocks are the same as the blocks in the Free VR Playgrounds.
The Distance Sensor on the Push Back robot, Dex, detects how far the back of the robot is from the nearest object, allowing it to accurately back up to goals autonomously.
For information on how to use the Distance blocks, go to its API documentation here.
Optical#
Optical found object?#
The Optical found object? block returns a Boolean indicating whether the Optical Sensor has detected an object.
True – The Optical Sensor has detected an object.
False – The Optical Sensor has not detected an object.
<[Optical v] found an object?>
Parameters |
Description |
---|---|
This block has no parameters. |
Example
Optical detects color?#
The Optical detects color? block returns a Boolean indicating whether the Optical Sensor has detected a specific color.
True – The Optical Sensor has detected the specified color.
False – The Optical Sensor has not detected the specified color.
<[Optical v] detects [red v]?>
Parameters |
Description |
---|---|
color |
Which color to check for:
|
Example
Optical brightness#
The Optical brightness block returns the amount of light detected by the Optical Sensor in a range from 0% to 100%.
([Optical v] brightness in %)
Parameters |
Description |
---|---|
This block has no parameters. |
Example
Optical hue#
The Optical hue block returns the hue value of the color detected by the Optical Sensor.
Hue values range from 0 to 359 degrees, corresponding to positions on the color wheel shown below.
([Optical v] hue in degrees)
Parameters |
Description |
---|---|
This block has no parameters. |
Example
when Optical#
The when Optical block runs its stack when the Optical Sensor detects or loses an object. You can have multiple when Optical blocks to run multiple stacks of blocks at once.
when [Optical v] [detects v] an object :: hat events
Parameters |
Description |
---|---|
action |
Which action to trigger the hat block:
|
Example
GPS#
GPS position#
The GPS position block returns the positional offset of the robot’s turning reference point from the center of a field.
([GPS v] position [X v] in [mm v])
Parameters |
Description |
---|---|
axis |
Which acis to report:
|
units |
The unit to represent the position:
|
Example
GPS heading#
The GPS heading block returns the heading that the robot is currently facing based on the GPS Sensor’s readings from the VEX GPS Field Code from 0.00 to 359.99 degrees.
([GPS v] heading in degrees)
Parameters |
Description |
---|---|
This block has no parameters. |
Example