1 of 23

2023 Game Overview

2 of 23

ZR 2023 MS Game Background

To prepare for human activities on the Lunar surface, each team needs to control Astrobee and collect 24 grams of Lunar dust samples for analysis.

There are 9 research sites already established on the Lunar surface and are numbered from #1-9. At each site, there are the same site number of grams of Lunar dust samples and the same site number of bottles of sample enhancers.

Due to the power limitation, only 3 research sites will be active and operating at a time.

Potential Game Field Example. Active sites are in blue. Inactive sites are in grey.

3 of 23

ZR 2023 MS Game Background

An astronaut will observe the site status from the space station and use hand signals to tell Astrobee which sites are active.

Your task is to control the Astrobee robot, navigate it to the active sites, collect samples and/or mix samples with enhancers, and obtain 24 grams of dust samples to bring back to the base.

Once Astrobee enters the field and start moving, you will only have 3 minutes to navigate and collect and the sites status will change after 3 minutes.

*Relevant topics: Artemis Missions, Lunar Dust, Machine Learning, AI.

4 of 23

ZR 2023 MS Game – Phase 1

  1. Astronaut tells Astrobee which 3 sites are active by using hand signals following ASL.
  2. Astrobee receives the 3 site numbers, and you can get the values from game API Get Active Sites

  1. Find an algorithm that can give you 24. If the 3 site numbers are a, b, and c, what are some possible combinations?

American Sign Language (ASL)

5 of 23

Base -> 9: Collect 9 samples

1

2

3

4

5

6

7

8

9

+

9 g

6 of 23

Site 9 -> 3: Collect 3 more samples

1

2

3

4

5

6

7

8

9

+

=

9 g

9 g

3 g

12 g

7 of 23

Site 2: Bring 24 samples back to the base station

1

2

3

4

5

6

7

8

9

24 g

24 g

8 of 23

ZR 2023 MS Game – Phase 2

1

2

3

4

5

6

7

8

9

Research Sites Map

  1. After finding out an algorithm that will give you 24, design the path that Astrobee will travel to collect/duplicate samples.
  2. In the example, path of Astrobee follows
    • Base #5 -> Site #9 (collect samples -> samples = 9 grams)
    • Site #9 -> Site #3 (collect samples -> samples = 12 grams)
    • Site #3 -> Site #2 (duplicate samples -> samples = 24 grams)
    • Site #2 -> Base (24 grams of samples are brought back)

C

C

D

9 of 23

Collect V.S. Duplicate

Collect by roll 90 degrees clockwise

Duplicate by roll 90 degrees counterclockwise

10 of 23

Scoring

Points Earned:

Collection Score: 5 points for each sample (maximum of 24 samples)

Battery Score: 100 - Battery Usage

  • Battery Usage: Battery Usage Rate * Distance
  • Battery Usage Rate: 0.2 * (1 + # of samples carrying)

Time Score = 180 - t

  • t = game time

Penalties:

Depletion Penalty (If you use more than 100% battery) = 2 * (Battery Usage - 100)

Sample Penalty (If you exceed 24 gram sample limit) = 5 * (Number of samples dropped - 24)

11 of 23

Scoring

Teams earn points by:

  1. Collecting samples
  2. Efficient use of battery
  3. Efficient use of time

Teams lose points by:

  1. Battery depletion
  2. Exceeding 24 samples collected

Total Score: 0.5 * Battery Score (B) + 0.25 * Time Score (T) + 0.25 * Collection Score (C) - Total Penalties

12 of 23

Block Shapes and Meanings

“Plug” puzzle piece: represents some value or piece of information

Note: “Get Carried Samples” is something called a function. It does a series of operations/actions. In this case, the function also gives you (“returns”) information after it runs. In this case, the function returns the amount of sample the robot is carrying. Not all functions return something, but this one does, so we can treat it as a “plug” piece that holds a value.

“Socket” puzzle piece: represents something that requires information/input

Note: some functions require information input. For example, the “Move to Site” function does the action of moving to a given site, but you must provide it with the input of which site you want to move to. This is when we need to put a “plug” with information into a “socket” that requires information.

“Stackable” puzzle piece: some process to be executed one after the next

plug

socket

stacking

13 of 23

Game API

What is an API?

Long Version:

Application program interface (API) is a set of routines, protocols, and tools for building software applications. An API specifies how software components should interact. Additionally, APIs are used when programming graphical user interface (GUI) components.

Short Version:

Cheat sheet of custom functions pre-created for your convenience.

14 of 23

APIs Get Sites

These set of code blocks will be important for navigating the game board and determining the current status of the game board.

int site

  • Define a number that can be used to represent a game site and be used in future functions.

int GetActiveSites()

  • This code block will return a list of the three sites in the game that are currently active and can be collected

int GetCurrentSite()

  • Returns the current site Astrobee is on (Site 1-9)

15 of 23

APIs Get Site Status

These set of code blocks will return the status of a site’s samples and power level

int GetSiteSampleStatus

  • Will return a number that indicates the sample status of a particular site
  • Return: -1 (No samples available, the site is inactive)
  • Return: +1 (Samples available, the site is active)
  • Return: 0 (Empty, the sample at this site has already been collected

int GetSitePowerStatus

  • Will return a number that indicates the power status of a particular site
  • Return: -1 (No power available, the site is inactive)
  • Return: +1 (Power available, the site is active)
  • Return: 0 (Empty, the power at this site has already been collected

16 of 23

APIs Get Battery and Get Time

These set of code blocks will be important for ensuring that you are within the battery and time limits of the game

int GetBattery

  • Returns the current battery level of Astrobee. Each team starts with 100% battery which goes down based on the samples Astrobee is carrying and the distance traveled.
  • Having a negative battery amount may result in a battery penalty in the score. See game manual for more information on the battery

int GetTime

  • Returns the current simulation time in seconds

17 of 23

APIs Collect

This code block is how Astrobee will collect the samples from the site it is currently at.

When this code block is used Astrobee will collect the sample at the site it is currently at. If the current site is active it will collect samples equal to the number of the site it is at. Astrobee will collect all the samples at the site if the site is active and add the samples to the total samples Astrobee is currently carrying.

The code block will return either True or False.

If the code block returns True the samples were successfully collected.

If the code block returns False the samples were not collected and the site is either inactive or the samples were already collected.

18 of 23

APIs Duplicate

This code block is how Astrobee will duplicate the samples from the site it is currently at.

The duplicate code block will duplicate the current number of samples that are on Astrobee. How much the samples will be duplicated by will be determined by the power level at the site. The power level is determined by the site number.

For example, if Astrobee is at site 8 the power level is 8. If duplicate is used at this site all of the samples on Astrobee will be duplicated which means the samples will be multiplied by 8. For example, if Astrobee has 2 samples on board and duplicates at site 8, Astrobee will now have 16 samples (2 samples multiplied by power level 8 = 16 samples).

19 of 23

APIs

MoveTo(site)

This code block is how Astrobee will move from site to site.

The MoveTo(site) code block will be used by Astrobee to move from site to site on the game map. Notice how you need two code blocks for Move To Site to work. First you need the code block Move To Site. You can then assign Move To Site another code block that represents the site number that you want Astrobee to move to.

In the example above Astrobee will move to Site 8 but you can enter any number from 1-9 to control which site Astrobee will move to.

20 of 23

APIs

Get Samples

These set of code blocks is how you will find out how many samples you have in total, on Astrobee and at base.

int GetBaseSamples()

  • This code block will return the current number of samples that are deposited at your base.

int GetCarriedSamples()

  • This code block will return the current number of samples that are carried by Astrobee

int GetTotalSamples()

  • This code block will return the total number of samples you have. The total number of samples includes the number of samples at your base and the number of samples currently carried by Astrobee

21 of 23

APIs

MoveToBase

This code block will move Astrobee back to its base site where it can deposit the samples it is currently carrying.

Note that move to base is different from moving to Site 5, while they are in the same square you cannot deposit your samples if you are at Site 5, you must move back to base to deposit samples.

22 of 23

APIs

DepositSamples

This code block will deposit all of the samples currently carried by Astrobee adding on to the total number of samples currently at the base site. You must be at the base site in order to deposit samples.

23 of 23

APIs

GetScore and EndGame

int GetScore()

  • Returns the current score. For more information on how the score is calculated see the game manual

void EndGame()

  • Will end the current game by stopping the current simulation time