Robot-Specific Python#
Introduction#
The Rover Rescue Playground features methods exclusive to the VR Rover, including custom Drivetrain, Sensing, and Actions category methods.
The VR Rover has access to the standard VR Events, Control, Variables, and Functions commands.
Below is a list of all available Playground-specific methods:
Drivetrain - Move and monitor the VR Rover.
Actions
drive- Drives the VR Rover continuously forward or in reverse.drive_for- Drives the VR Rover for a set distance.turn- Turns the VR Rover continuously left or right.turn_for- Turns the VR Rover a specific number of degrees.turn_to_heading- Turns the VR Rover to face a specific heading.drive_to- Drives the VR Rover straight toward the selected object.turn_to- Turns the VR Rover to face the selected object.go_to- Turns and drives the VR Rover to the selected object.stop- Stops all rover movement.
Mutators
set_heading- Sets the rover’s heading value.set_timeout- Limits how long drivetrain methods wait to reach their target.set_drive_velocity- Sets the speed used by drive methods.set_turn_velocity- Sets the speed used by turn methods.
Getters
Sensing - Detect nearby objects with the rover’s Distance Sensor.
Distance
found_object- Returns whether the Distance Sensor detects an object.get_distance- Returns the distance to the nearest detected object.
Actions - Interact with the rover’s resources, enemies, and built-in AI systems.
Actions
pickup- Picks up minerals.drop- Drops minerals.use- Uses minerals to restore energy.absorb_radiation- Absorbs radiation from an enemy.standby- Puts the VR Rover into standby mode until a battery threshold is reached.
Getters
angle- Returns the direction to an object in degrees.get_distance- Returns the distance to an object in millimeters or inches.location- Returns the X or Y coordinate of an object in millimeters or inches.battery- Returns the VR Rover’s battery level.minerals_stored- Returns how many minerals the VR Rover is carrying.storage_capacity- Returns the VR Rover’s carrying capacity.level- Returns the VR Rover’s current level.exp- Returns the VR Rover’s current experience points.enemy_level- Returns the level of the closest detected enemy.enemy_radiation- Returns the radiation of the closest detected enemy.detects- Returns whether the VR Rover detects minerals or enemies in its detect radius.sees- Returns whether the VR Rover sees an object in its vision range.under_attack- Returns whether the VR Rover is currently under attack.
Callbacks
on_under_attack- Runs a callback when the VR Rover is attacked.on_level_up- Runs a callback when the VR Rover levels up.
The examples on this page use the default Playground start position.
Drivetrain#
Actions#
drive#
drive drives the VR Rover continuously forward or in reverse.
Usage:
drivetrain.drive(direction)
Parameters |
Description |
|---|---|
|
The direction the robot drives:
|
def main():
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
drive_for#
drive_for drives the VR Rover for a set distance.
Usage:
drivetrain.drive_for(direction, distance, units, wait=True)
Parameters |
Description |
|---|---|
|
The direction the robot drives:
|
|
The distance to drive, as an integer or decimal. |
|
The unit of measurement:
|
|
Optional.
|
def main():
drivetrain.drive_for(FORWARD, 200, MM)
# VR threads — Do not delete
vr_thread(main)
turn#
turn turns the VR Rover continuously left or right.
Usage:
drivetrain.turn(direction)
Parameters |
Description |
|---|---|
|
The direction the robot turns:
|
def main():
drivetrain.turn(RIGHT)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
turn_for#
turn_for turns the VR Rover a specific number of degrees.
Usage:
drivetrain.turn_for(direction, angle, units, wait=True)
Parameters |
Description |
|---|---|
|
The direction the robot turns:
|
|
The amount to turn, as an integer or decimal. |
|
The unit of measurement. In this Playground, use |
|
Optional.
|
def main():
drivetrain.turn_for(RIGHT, 90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
turn_to_heading#
turn_to_heading turns the VR Rover to face a specific heading.
Usage:
drivetrain.turn_to_heading(heading, units, wait=True)
Parameters |
Description |
|---|---|
|
The heading to turn to, from -360 to 360. |
|
The unit of measurement. In this Playground, use |
|
Optional.
|
def main():
drivetrain.turn_to_heading(90, DEGREES)
# VR threads — Do not delete
vr_thread(main)
drive_to#
drive_to drives the VR Rover straight toward the selected object.
Usage:
drivetrain.drive_to(object, wait=True)
Parameters |
Description |
|---|---|
|
Which object the VR Rover will drive to:
|
|
Optional.
|
If a mineral or enemy is not detected in the VR Rover’s visual range when drive_to is called, the rover will not drive. The base can always be targeted.
def main():
drivetrain.drive_to(MINERALS)
# VR threads — Do not delete
vr_thread(main)
turn_to#
turn_to turns the VR Rover to face the selected object.
Usage:
drivetrain.turn_to(object, wait=True)
Parameters |
Description |
|---|---|
|
Which object the VR Rover will turn toward:
|
|
Optional.
|
If a mineral or enemy is not detected in the VR Rover’s visual range when turn_to is called, the rover will not turn. The base can always be targeted.
def main():
drivetrain.turn_to(MINERALS)
# VR threads — Do not delete
vr_thread(main)
go_to#
go_to turns and drives the VR Rover to the selected object.
Usage:
drivetrain.go_to(object, wait=True)
Parameters |
Description |
|---|---|
|
Which object the VR Rover will turn and drive to:
|
|
Optional.
|
If a mineral or enemy is not detected in the VR Rover’s visual range when go_to is called, the rover will not drive. The base can always be targeted.
def main():
drivetrain.go_to(MINERALS)
# VR threads — Do not delete
vr_thread(main)
stop#
stop stops all movement of the drivetrain.
Usage:
drivetrain.stop()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
drivetrain.drive(FORWARD)
wait(2, SECONDS)
drivetrain.stop()
# VR threads — Do not delete
vr_thread(main)
Mutators#
set_heading#
set_heading sets the rover’s current heading value.
Usage:
drivetrain.set_heading(heading, units)
Parameters |
Description |
|---|---|
|
The heading value to assign. |
|
The unit of measurement. In this Playground, use |
def main():
drivetrain.set_heading(0, DEGREES)
# VR threads — Do not delete
vr_thread(main)
set_timeout#
set_timeout sets a time limit for how long drivetrain methods wait to reach their target.
Usage:
drivetrain.set_timeout(value, units)
Parameters |
Description |
|---|---|
|
The amount of time the drivetrain will wait before stopping. |
|
The unit used to represent the timeout:
|
def main():
drivetrain.set_timeout(1, SECONDS)
# VR threads — Do not delete
vr_thread(main)
set_drive_velocity#
set_drive_velocity sets the default movement speed used by drive methods.
Usage:
drivetrain.set_drive_velocity(velocity, units)
Parameters |
Description |
|---|---|
|
The default drive velocity from 0 to 100. |
|
The unit used to represent the velocity. In this Playground, use |
def main():
drivetrain.set_drive_velocity(50, PERCENT)
# VR threads — Do not delete
vr_thread(main)
set_turn_velocity#
set_turn_velocity sets the default speed used by turn methods.
Usage:
drivetrain.set_turn_velocity(velocity, units)
Parameters |
Description |
|---|---|
|
The default turn velocity from 0 to 100. |
|
The unit used to represent the velocity. In this Playground, use |
def main():
drivetrain.set_turn_velocity(50, PERCENT)
# VR threads — Do not delete
vr_thread(main)
Getters#
heading#
heading returns the drivetrain’s current heading.
Usage:
drivetrain.heading(units)
Parameters |
Description |
|---|---|
|
The unit used to report the heading. In this Playground, use |
def main():
print(drivetrain.heading(DEGREES))
# VR threads — Do not delete
vr_thread(main)
is_done#
is_done returns whether the drivetrain is no longer moving.
Usage:
drivetrain.is_done()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
wait(0.1, SECONDS)
if drivetrain.is_done():
print("Drive complete")
# VR threads — Do not delete
vr_thread(main)
is_moving#
is_moving returns whether the drivetrain is currently moving.
Usage:
drivetrain.is_moving()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
drivetrain.drive_for(FORWARD, 200, MM, wait=False)
wait(0.1, SECONDS)
if drivetrain.is_moving():
print("Still moving")
# VR threads — Do not delete
vr_thread(main)
Sensing#
Distance#
found_object#
found_object returns whether the Distance Sensor detects an object.
Usage:
distance.found_object()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
if distance.found_object():
print("Object detected")
# VR threads — Do not delete
vr_thread(main)
get_distance#
get_distance returns the distance to the nearest detected object from the Distance Sensor.
Usage:
distance.get_distance(units)
Parameters |
Description |
|---|---|
|
The unit of measurement:
|
def main():
print(distance.get_distance(MM))
# VR threads — Do not delete
vr_thread(main)
Actions#
Actions#
pickup#
pickup picks up minerals.
Usage:
rover.pickup(object)
Parameters |
Description |
|---|---|
|
The object the VR Rover can pick up:
|
def main():
rover.pickup(MINERALS)
# VR threads — Do not delete
vr_thread(main)
drop#
drop drops carried minerals.
Usage:
rover.drop(object)
Parameters |
Description |
|---|---|
|
The object the VR Rover can drop:
|
def main():
rover.drop(MINERALS)
# VR threads — Do not delete
vr_thread(main)
use#
use uses minerals to restore energy. Minerals must be on the ground to be used.
Usage:
rover.use(object)
Parameters |
Description |
|---|---|
|
The object the VR Rover can use:
|
def main():
rover.use(MINERALS)
# VR threads — Do not delete
vr_thread(main)
absorb_radiation#
absorb_radiation absorbs radiation from an enemy.
Usage:
rover.absorb_radiation(object)
Parameters |
Description |
|---|---|
|
The object the VR Rover can absorb radiation from:
|
def main():
rover.absorb_radiation(ENEMY)
# VR threads — Do not delete
vr_thread(main)
standby#
standby puts the VR Rover into standby mode until the specified battery threshold is reached.
Usage:
rover.standby(percent)
Parameters |
Description |
|---|---|
|
The battery threshold that causes the VR Rover to exit standby mode, from |
If the selected threshold is equal to or above the current battery level, the VR Rover will not enter standby mode.
def main():
rover.standby(50)
# VR threads — Do not delete
vr_thread(main)
Getters#
angle#
angle returns the direction in degrees to the selected object.
Usage:
rover.angle(object)
Parameters |
Description |
|---|---|
|
The object to report the direction of:
|
For minerals and enemies, the object must be within 1000 mm and in the VR Rover’s field of view. The base can always be reported.
def main():
print(rover.angle(MINERALS))
# VR threads — Do not delete
vr_thread(main)
get_distance#
get_distance returns the distance from the VR Rover to the selected object.
Usage:
rover.get_distance(object, units=MM)
Parameters |
Description |
|---|---|
|
The object to report distance to:
|
|
Optional. The unit used to report the distance:
|
For minerals and enemies, the object must be within 1000 mm and in the VR Rover’s field of view. The base can always be reported.
For obstacles and hazards, the method reports the visible object distance. If none is in view, it returns 1000 mm or 39.37 inches.
def main():
print(rover.get_distance(MINERALS, MM))
# VR threads — Do not delete
vr_thread(main)
location#
location returns the X or Y coordinate location of the selected object.
Usage:
rover.location(object, axis, units)
Parameters |
Description |
|---|---|
|
The object to report the location of:
|
|
Which coordinate to return:
|
|
The unit used to report the location:
|
For minerals and enemies, the object must be within 1000 mm and in the VR Rover’s field of view. The base can always be reported.
def main():
print(rover.location(MINERALS, X, MM))
# VR threads — Do not delete
vr_thread(main)
battery#
battery returns the current battery level of the VR Rover.
Usage:
rover.battery()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
print(rover.battery())
# VR threads — Do not delete
vr_thread(main)
minerals_stored#
minerals_stored returns the current amount of minerals the VR Rover has in storage.
Usage:
rover.minerals_stored()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
print(rover.minerals_stored())
# VR threads — Do not delete
vr_thread(main)
storage_capacity#
storage_capacity returns the carrying capacity of the VR Rover.
Usage:
rover.storage_capacity()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
print(rover.storage_capacity())
# VR threads — Do not delete
vr_thread(main)
level#
level returns the current level of the VR Rover.
Usage:
rover.level()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
print(rover.level())
# VR threads — Do not delete
vr_thread(main)
exp#
exp returns the number of Experience Points the VR Rover has at the current level.
Usage:
rover.exp()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
print(rover.exp())
# VR threads — Do not delete
vr_thread(main)
enemy_level#
enemy_level returns the level of the closest enemy detected by the VR Rover.
Usage:
rover.enemy_level()
Parameters |
Description |
|---|---|
This method has no parameters. |
When no enemy is detected within the rover’s detect radius, this method returns 0.
def main():
print(rover.enemy_level())
# VR threads — Do not delete
vr_thread(main)
enemy_radiation#
enemy_radiation returns the radiation of the closest enemy detected by the VR Rover.
Usage:
rover.enemy_radiation()
Parameters |
Description |
|---|---|
This method has no parameters. |
When no enemy is detected within the rover’s detect radius, this method returns 0.
def main():
print(rover.enemy_radiation())
# VR threads — Do not delete
vr_thread(main)
detects#
detects returns whether the VR Rover detects minerals or enemies in its detect radius.
Usage:
rover.detects(object)
Parameters |
Description |
|---|---|
|
The object to detect:
|
The VR Rover’s detect radius is 800 mm.
def main():
if rover.detects(MINERALS):
print("Minerals detected")
# VR threads — Do not delete
vr_thread(main)
sees#
sees returns whether the VR Rover sees the selected object in its vision range.
Usage:
rover.sees(object)
Parameters |
Description |
|---|---|
|
The object to see:
|
The VR Rover can see objects within 1000 mm and inside its 40 degree field of view.
def main():
if rover.sees(MINERALS):
print("Minerals in view")
# VR threads — Do not delete
vr_thread(main)
under_attack#
under_attack returns whether the VR Rover is currently under attack from an enemy.
Usage:
rover.under_attack()
Parameters |
Description |
|---|---|
This method has no parameters. |
def main():
if rover.under_attack():
print("The rover is under attack!")
# VR threads — Do not delete
vr_thread(main)
Callbacks#
on_under_attack#
on_under_attack registers a callback function that runs when the VR Rover takes damage from an enemy.
Usage:
rover.on_under_attack(callback)
Parameters |
Description |
|---|---|
|
The function to run when the VR Rover is under attack. |
def under_attack():
print("The rover is under attack!")
def main():
rover.on_under_attack(under_attack)
wait(0.15, SECONDS)
# VR threads — Do not delete
vr_thread(main)
on_level_up#
on_level_up registers a callback function that runs when the VR Rover moves from one level to the next.
Usage:
rover.on_level_up(callback)
Parameters |
Description |
|---|---|
|
The function to run when the VR Rover levels up. |
def level_up():
print("The rover leveled up!")
def main():
rover.on_level_up(level_up)
wait(0.15, SECONDS)
# VR threads — Do not delete
vr_thread(main)