1 of 80

2 of 80

�Welcome & Introductions

Zero Robotics 2023 Summer Program

Educator Training

June 6th & 8th, 2023

Part II - 6/8/23

3 of 80

Group Expectations

HAVE FUN

INTERACT

ASK QUESTIONS

SHARE TIPS AND IDEAS

KEEP FOCUS

CAMERAS ON PLEASE

This training will be recorded

4 of 80

Agenda

Day 1

  • Welcome and Introductions
  • Pre-Training Survey
  • Team Registration
  • Setting Up Accounts
  • Asking Questions - Getting Answers
  • Zero Robotics Overview
  • Weekly Schedule
  • Programming: Introduce Integers, Floats, Variables, Arrays, Coordinates & moving
  • Zero Robotics Resources & Information
  • Introduce the IDE

Day 2

  • Welcome
  • Inviting Students and leads to Your Team
  • Recap
  • Booleans
  • Functions
  • Conditional Statements
  • For Loops
  • Game Overview
  • Game API
  • Tournament Structure
  • Key Dates & Weekly Schedule Outline
  • Best Practices and Activities
  • Field Day
  • Next Steps
  • Surveys and Forms

5 of 80

Inviting Students to Your Team

6 of 80

Invite Team Members

To begin:

  • Log into the ZR website
  • From the “Tournaments” menu select “Manage Teams”

7 of 80

Invite Team Members cont.

If you are a team lead a window will open with:

  • Team information
  • Team Roster

Edit the information as desired

If you are NOT a team lead? A window will open with the Team Name only like this:

8 of 80

Invite Team Members cont.

ONLY Team Leads can add new Team Members To add team members:

  • Type in the team member’s email used on the ZR site and click “Add”
  • The team member will appear in the roster below.
  • Uncheck the “is lead?” box for members that are not team leads.

*Reminder: Each user added as a Team Member must have already created ZR account.

9 of 80

Invite Team Members cont.

Team members can confirm they have been added to the team by navigating from the “Tournaments” menu to “Manage Teams”

For non team-leads a window will open with the Team Name like this:

10 of 80

Team Leaders - Contact

  1. Is your team/school listed on the TEAM CONTACT tab of the ZR website?

  • Every Educator/Mentor Working with a Team Must Complete this Google Form: https://forms.gle/tRcHVmLSvBBcreKX8
  • Team Name
  • Point of Contact Name
  • EMAIL: ZR Sign-in (Email Address Linked with Google/ZR Website)
  • EMAIL: Communication (Email for updates via emailing list)

We are asking for two emails for two purposes: Communications and Team Registration. The Team Registration Email - aka ZR Sign In - must be a gmail

11 of 80

Student Account Setup

�What do I do if my student does not have an email account, and does not have parental permission to create an email account?

  1. Email zerorobotics@mit.edu with the first name and last name of the student with subject “Sandbox Setup for (first name, last name)”
  2. The ZR team will set up that student with a “sandbox” account and reply to you with the following details:
    • username: firstname@zerorobotics.mit.edu
    • password: zerorobotics

12 of 80

Check In

Questions?

13 of 80

Day 1 Review

INTEGERS are WHOLE NUMBERS

FLOATS are DECIMALS

A VARIABLE is a container that holds a SINGLE piece of data

An ARRAY stores MULTIPLE pieces of same type of data in one place

ASTROBEE rotates using ROLL, PITCH, and YAW

14 of 80

Functions

  • What is a Function?
    • A programmer creates a function to put a set of instructions for a particular task. This function can then be “called” and used in their program.
    • Programmers find it easier to break up their code into separate sections that perform different tasks.
    • Creating functions:
      • Helps to organize the code and makes it easier to keep track of what it happening
      • It is also useful to create a function for code that is used more than once in a program instead of duplicating/repeating the code in multiple places

15 of 80

Booleans

  • A boolean is a data type in programming.
  • Like an integer holds whole numbers, and a float holds decimals, a boolean holds true or false values.
  • Booleans can be used alongside conditional statements.

16 of 80

Conditional Statements

The basics of logic statements

If this, then do that

Tell the Astrobee to:

  1. If gameTime is greater than 20, go to site 4
  2. If gameTime is less than 20, then update time

�You can keep track of this in your code by creating a “gameTime” function, which keeps track of how much time has passed in the game.

17 of 80

What are Conditionals?

  • Conditionals give instructions about when

to do something

  • An “if-­then” statement is an example of a conditional.
  • For example: Suppose we want the satellite to wait 20 seconds before it moves to Site 4?
  • This example is described in the flow diagram to the right
  • gameTime is a variable that starts at 0
  • use the Get Time function to see how much time has elapsed
  • If gameTime is greater than 20, then go to Site 4; otherwise, do nothing and just keep updating the time

18 of 80

Create A New Project and Declare Variables

  • Open the ZR IDE
  • Select “New Project”
    • Project name: New Project
    • Graphical Editor
    • Game: FreeMode
  • Go to Init Page/Variables accordion
  • Create a variable
    • type: float
    • name: gameTime
    • description: current time since starting the game
  • Set Initial value to: 0

19 of 80

Programming with Conditionals

  • We want to create the following conditional statement:
    • If gameTime>20, Then run “Move To Site 4
  • Click on the Logic accordion and select “if-­then
  • Drag and drop the “If -­Then” block into the plan

NOTE: The Get Time function is currently not available, but when the IDE is complete, the function will return the number of seconds that have passed since the game began.

20 of 80

Programming with Conditionals cont.

  • Your new program will check if 20 seconds have passed and then if so, move to Site 4.

  • Compile, Simulate
    • Maximum Time: 180 seconds

  • Simulate and View Results!

  • The Blue Astrobee should start to move after: Elapsed Time is > 20

21 of 80

What is the 2023

Zero Robotics Challenge?

22 of 80

LUNABEE 2023

Your Mission: Retrieve lunar dust samples for analysis as part of the Artemis Engineering Team.

Your Goal: Program the satellite to receive visual indication of active research sites on the Moon, collect 24 grams of lunar dust, and successfully drop them to the base station!

23 of 80

2023 Game Overview

24 of 80

ZR 2023 MS Game Intro

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.

25 of 80

ZR 2023 MS Game: Your Mission/Goal

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.

26 of 80

ZR 2023 MS Game – Your Task: 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. Using addition and multiplication, 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)

27 of 80

ZR 2023 MS Game – Your Task: 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

28 of 80

Base -> 9: Collect 9 samples

1

2

3

4

5

6

7

8

9

+

9 g

29 of 80

Site 9 -> 3: Collect 3 more samples

1

2

3

4

5

6

7

8

9

+

=

9 g

9 g

3 g

12 g

30 of 80

Site 3 -> 2: Duplicate samples with a power of 2

1

2

3

4

5

6

7

8

9

x 2

=

12 g

12 g

24 g

31 of 80

Site 2: Bring 24 samples back to the base station

1

2

3

4

5

6

7

8

9

24 g

24 g

32 of 80

Collect V.S. Duplicate

Collect by roll 90 degrees clockwise

Duplicate by roll 90 degrees counterclockwise

33 of 80

Scoring

Teams earn points by:

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

Teams lose points by:

  • Battery depletion
  • Exceeding 24 samples collected

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

34 of 80

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)

35 of 80

Check In

�Questions, Feedback, or Best Practices?

Drop in chat

36 of 80

Game API

Intro to 2023 Game API Functions

37 of 80

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

38 of 80

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.

39 of 80

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)

40 of 80

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)

41 of 80

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

float GetTime()

  • Returns the current simulation time in seconds

42 of 80

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 site number 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.

43 of 80

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

44 of 80

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.

45 of 80

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

46 of 80

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 go to the same square, you cannot deposit your samples if you are at Site 5, you must move back to base to deposit samples.

47 of 80

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.

48 of 80

APIs

GetScore and EndGame

float 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

49 of 80

5 Minute Break

Questions or Feedback?

Raise hand button or drop in chat

50 of 80

Tournament

Practice Round

At the end of Week 2 of the summer program, teams will submit their code and a competition will be run. The matches will be averaged to determine rankings. These ranking results will create 10 Alliances, each with ~6 teams.

Alliances Competitions

The Alliances competition will be a round robin for each of the 10 alliances, with every team playing each other at least once within their alliances. The team with the most wins in each alliance will be the champion of their group. All ten champions of the Alliances Competition will advance to the Final ISS Competition.

ISS Final Competition

During the first several days of week 5 of the summer program all teams in each Alliances will have an opportunity to collaborate to try to improve their 1st place Alliance winner’s code prior to Final submittal deadline. Teams from the same alliances are encouraged to try to beat the alliance's winner’s code and then share their solution with the alliance's winner. The alliance's winner will submit the final code from their alliances for the Final Competition to run on the ISS.

51 of 80

Week 1: To Infinity and Beyond

  • Create a ZR Atmosphere!
    • REDUCE THE FEAR
    • Create HYPE
    • Do some team building activities

  • Pre Program Surveys
  • Create Accounts
  • Get a Baseline of aptitude
  • Find out where the ISS is?
  • Make & launch bottle rockets!

  • Get EXCITED about your mission
    • Game Overview Slides
    • Posters of Key Terms (and questions)
    • Find some videos about Moon dust

Week 1

June 26 - June 30

Acting Out The Game

Team Building Activities

Game Overview Part 1

Programming Tutorials

52 of 80

Week 2: Developing a Strategy

  • Write Code in IDE
  • Brainstorm Strategies
  • Develop Strategies
  • Divide into groups
  • TRY NEW STRATEGIES
  • Do some Hands on activities to help learn
    • Act Out The Game
  • Prep for Field Day
    • Permission slips
    • Questions
    • Activities
  • REDUCE THE FEAR

Week 2

July 3 - July 7

Field Days

Programming Tutorials

Game Overview Part 2

Write Code

Develop Strategy

53 of 80

Week 3: Time to Play

  • Submit Practice Code
  • Intramural competition
  • Students present different options and discuss
  • Students FINALIZE Round One Code
  • Prepare questions for Aerospace Career Day
  • SUBMIT YOUR ROUND ONE CODE!
  • REDUCE THE FEAR

Week 3

July 10 - July 14

Aerospace Career Day

(July 11th)

Code for Practice Round Due

(July 10th - 5:pm)

Code for Round One Due

(July 14th - 5:pm)

Programming Tutorials & Write Code

54 of 80

Week 4: Going The Distance

  • The main goal of week 4 is to work together with your Alliance and prepare a final code to be submitted as a Player to compete in the ISS Finals Competition. �
  • Reach out to your alliance teams�
  • Set up times to meet�
  • Assign roles:
    • Create an Alliance Name
    • Review and revise code
    • Identify who will submit code?
    • Rubberducking!

  • SUBMIT FINAL CODE for ISS!

Week 4

July 17 - July 21

Round One Results Posted

Contact & Collaborate on code with Alliance

Alliances Announced

(July 17th)

Final Code Due

(July 21st - 5:pm)

55 of 80

Week 5: Reach For the Stars

  • Showcase your team
    • Team videos�
  • Explore Careers in Aerospace field and future opportunities in Computer Science�
  • What is NASA working on?�
  • Jeopardy - Reflect on learning

ISS Finals

(August 4th)

Week 5

July 24 - July 29

Explore Future Careers

Strategy Videos & Student Presentations

Contact Media Re: Finals

56 of 80

Week 6: ISS FINALS

  • Invite Parents

  • Invite Press

  • Create EXCITEMENT

  • Prepare Loss of Signal Activities

  • Take photos

  • HAVE FUN!

  • Congratulate Yourself!

Week 6

July 31 - August 4

ISS Finals Week

August 3rd

(Tentative)

57 of 80

2023 Summer Program Suggested Timeline

Guidelines to Consider

10 - 15 hours a week

Frequent breaks or changes

Alternate physical and digital

Concrete v Abstract

Whole Group - Partners - Individual

58 of 80

Best Practices

Best Practices and Activities!!!

59 of 80

Acting Out the Game - LUNABEE

  • Students group into teams and tackle the challenge of the game using a semi-simplified, hands-on version.
  • Great way to help students understand the game and build their strategy!

60 of 80

Acting Out the Game

  1. Students create teams and begin designating roles.
    1. Astrobee Satellite
    2. Astrobee Player
    3. Astronaut/Judge
    4. Increment Counter
    5. Score Keeper
  2. Teams prepare their strategy on Strategy Sheets.
  3. Teams execute their strategy on the game tarp, then calculate their points at the end of the game.

61 of 80

Poster Tracking

Poster or board to track everyone’s issues

  • Name
  • Name of Code
  • Error
  • Date

Mark as resolved, add notes, leave suggestions, etc.

62 of 80

Code Notebooks

  1. Brainstorming/API
  2. Flowcharting/Pseudocode
  3. Error Analysis/Solutions
  4. Performance/Feedback/Beta

63 of 80

Code Notebooks

64 of 80

Coordinates Craft Activity

Can be found on page 25 in the educator guide

65 of 80

Coordinates Craft Activity

66 of 80

Coordinates Interactive Activity

Simon Says�

Draw +X -X +Y -Y +Z -Z on paper

Tape on walls, ceiling, floor

Tape on chest, back, hands, feet

Call out directions like “roll your local (body) on the X axis”

“pitch your local (body) on the y axis”

“yaw your local (body) on the z axis”

The way you are facing = attitude

67 of 80

IDE Activity

  • IDE = Chessboard
  • Init = Creating your pieces� (setting up the board)
  • Main = Play the game

IDE

Init

Main

68 of 80

Variables Activity: Acrylic Box

69 of 80

Curriculum Advisory Team

Would you like to be part of our

Curriculum Adjustments Advisory Team?

The curriculum used in the previous competitions requires revisions that reflect new NASA resources, technologies, missions, as well as new CS and STEM curriculum frameworks and standards.

If you are interested in receiving a stipend to serve on a Curriculum Adjustments Advisory Team

complete THE APPLICATION found on the TUTORIALS Tab of the ZR Website (2023)

Deadline: June 16, 2023

70 of 80

Check In

�Questions, Feedback, or Best Practices to Share?

Drop in chat

71 of 80

2023 T-Shirts - Order Form

ORDER HERE

https://forms.gle/8ZtEaEwu2yYbSHkS8

DEADLINE - June 29, 2023

72 of 80

Stickers & Pins

73 of 80

Research Consent Forms

To appropriately conduct research of the 2023 season and Zero Robotics 2.0 via surveys and interviews, we need authorization from four groups and ask that you have participants and parents complete these forms electronically or hard copy:

ADULT CONSENT (teachers, mentors, 18+ students): Online - https://forms.gle/CXkLMbFrYapGEMJ27 (Printable PDF)

PARENT CONSENT (guardians of anyone under 18): Online - https://forms.gle/Heotqo6bLsuomzAU9 (Printable PDF)

CHILD ASSENT (participating students and online mentors): Online - https://forms.gle/ThZ1gygddAcrKsca8 (Printable PDF)

If you print documents for signatures, please contact Katie Magrane (Katie@MassILC.com) for instructions on getting forms to MIT. If you require evaluation tools in another language, please contact zerorobotics@mit.edu.

74 of 80

Let’s find our 2023 game documents

75 of 80

Next Steps

  • Thursday June 15th: Post-Training Tag Up�
  • Recruitment of Students�
  • Parent/Guardian/Student Permissions�
  • Sandboxed Emails & Team Management�
  • Planning for Field Day & Finals

Play/Prepare/Explore - Send questions to ZR

76 of 80

Field Day & FINALS locations

Region

Teams

Field Day Coordinator

Arizona

2 teams

Hopi, Zuni, Navajo Nations

8 teams

KARMA & NTU

California (North)

12 teams

NASA Ames

California (South)

15 teams

CSULB

Connecticut

2 teams

ILC & MIT

Florida Area

2 teams

Georgia

3 teams

Illinoi Area

1 team

Kansas Area

2 teams

Massachusetts

12 teams

ILC & MIT

Maryland

2 teams

New Jersey

4 teams

Texas

1 team

Virginia

1 team

West Virginia

1 team

77 of 80

Follow Up Q&A

POST TRAINING Q&A

Thursday- June 15, 2023

12:pm - 1:pm (EASTERN)

Registration link to join Post Training Q&A:

https://us02web.zoom.us/meeting/register/tZEkce2spjkjGd0VXdqxTmeUEQyU-CJcrHRr

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~

EMAIL QUESTIONS/CONCERNS IN ADVANCE TO:ZEROROBOTICS@MIT.EDU

This is a brief 1 hour call to check in after training and after playing with the website and game to see if you have questions or are encountering any issues. It is also a time to share some planning and activity highlights for when you start.

78 of 80

Post-Training Survey

PLEASE COMPLETE THE BELOW SURVEY NOW

https://forms.gle/oVYFf62p5PVpAGMQ9

If you are watching a recording of this training,

please pause now to complete the pre-survey.

ZeroRobotics.mit.edu

-> 2023 Middle School

-> Evaluation & Program Surveys

-> Educator Post-Training Survey

79 of 80

Socials

Like us on Facebook: https://www.facebook.com/zerorobotics/

Follow us on Twitter: https://twitter.com/ZeroRobotics

Post to Instagram: https://www.instagram.com/zero.robotics/

Like/Duet TikTok: https://www.tiktok.com/@zerorobotics

Please Tag ZR in your posts this summer!

#ZeroRobotics

#WriteCodeForSpace

#MakeSpaceForKids

#Astrobee

#LUNABEE

80 of 80

Thank You!

Good Work!

Now Go Have Fun!