Data Loading...

VRAD Martian Survival User Guide 2021-22

356 Views
175 Downloads
954.16 KB

Twitter Facebook LinkedIn Copy link

DOWNLOAD PDF

REPORT DMCA

RECOMMEND FLIP-BOOKS

VRAD Martian Survival User Guide 2021-22

MARTIAN SURVIVAL

2021/22 USER GU I DE

VERSION 1.0

Table of Contents Table of Contents

2

1. Introduction

5

1.1 Overview of the VRAD Program

5

1.3 Creating a team and getting involved

6

2. The Game

7

2.1 Team Roles

7

2.2 Matches

8

2.3 Code

8

2.4 Scoring

8

2.5 Drones

9

2.6 Mines

9

2.7 Charging Pads

10

2.8 Home Base

10

3. Practice Projects

12

3.1 Overview

12

3.2 Creating a Project

12

3.3 Accessing and Editing Your Projects

12

3.4 Sharing a Project

13

3.5 Forking a Project

13

3.6 Creating a File in Your Project

13

3.7 Downloading a File From Your Project

14

3.8 Importing a Project File

14

4. Preseason

15

4.1 Dates

15

4.2 Competition Mode

15

4.3 Team Rankings

15

5. Competition Season

16

5.1 Dates

16

2

5.2 Competition Mode

16

5.3 Team Rankings

16

6. VRAD Championship

17

6.1 Dates

17

6.2 How to Qualify

17

6.3 Round Robin

17

6.3 Knockout Rounds

17

7. Ranking System

18

7.1 Overview

18

7.2 Team Rating Score

18

8. Accessing the Game

19

8.1 Device Requirements

19

8.2 Network Connections

19

8.3 Accessing Matches

19

Appendix A: Documentation

21

A.1 What is Python

21

A.2 Importing Modules

21

A.3 Drone API

22

Appendix B: Glossary

24

Acceleration

24

API

24

Async

24

Battery Capacity

24

Blocking

24

Championship

24

Comms Api

24

Competition Season

25

Diamonds

25

Dictionary

25

Drone

25

Drone Api

25

Float

25

3

Holding Capacity

25

Hull Points

25

Integer

26

ISCED

26

Knockout Round

26

Match

26

Match Area

26

Pre Season

26

Round Robin Round

26

Sensor Range

26

Speed

27

Team Base

27

Team Code

27

Appendix C: Match Area Maps

28

Appendix D: Version Notes

28

Appendix C: Match Area Maps

28

Appendix C: Match Area Maps

28

Appendix C: Match Area Maps

28

Appendix D: Version Notes

29

4

1. Introduction

1.1 Overview of the VRAD Program VRAD is the Virtual REC Foundation Aerial Drones Program.

The REC Foundation in partnership with Robotify is launching VRAD Season 2: the world’s first global multiplayer virtual aerial drone competition. VRAD combines the excitement of Esports and the educational value of computer science with a competition focused on real-world programming skills and gaming strategy. Coaches are responsible for registering students for VRAD teams. But it is the students who learn how to program the drones using the documentation and training spaces within the game. Students will put programming skills to the test, develop the best algorithms to win and work with teammates to test and optimize their code. Coaches are not expected nor required to teach the students how to code.

1.2 Educational Connection

1.2.1 Programming and coding skills are at a premium in today’s world with this trend likely to continue to accelerate into the future. VRAD incentivizes students to rapidly iterate and test out ideas within a defined problem space with measurable outcomes. Teams are encouraged to think of both the software and hardware elements to their game plan. 1.2.2 Game based learning and competitive design encourage students to win matches and increase their team’s ranking in the Roboduel Leaderboards. Access to the highest divisions of the Championships is the prize for those teams that put their robotics and coding learning to best use. While round robin divisions ensure that all students, regardless of ability, get to put their skills to the test.

5

1.3 Creating a team and getting involved 1.3.1 Registering a VRAD team.

1.3.1a Create a free account by clicking on the register link at

https://www.robotevents.com/

1.3.1b From the “My Account” dashboard, click “Register a Team” to create one or more VRAD teams. Note that the Primary Team Contact is considered the “coach.”

1.3.1c Pay the registration fee of $150 USD per team.

1.3.2 Accessing Roboduel

1.3.2a On completion of the VRAD registration a coach will receive their login credentials and a team code for Robotify via email. 1.3.2b Students must create a robotify.com account and enter their team code, provided by their coach, to be added to their team. 1.3.3 VRAD team registration gives teams access to the competition for all of preseason and the competition season. Teams will be given the opportunity to participate in the VRAD Championship in March 2022. Further registration will be required in March to participate in the Championship.

6

2. The Game

2.1 Team Roles 2.1.1 The Team

2.1.1a Teams are made up of a maximum of three (3) students and one (1) coach. 2.1.1b Teams are defined as either Middle School Teams or High School Teams. Note that students may be enrolled in a High School, but if eligible according to the dates below, may choose to be on a Middle School team. Likewise, students enrolled in Middle Schools or Primary Schools may choose to be on a High School team, if eligible. 2.1.1c Middle School Teams must consist of only eligible Middle School Students. 2.1.1d High School Teams must consist of only eligible High School Students OR consist of eligible High School Students and eligible Middle School Students. 2.1.1e Once a Team is registered as a Middle School Team or as a High School Team, that team may not change grade levels.

2.1.2 The Coach

2.1.2a Coaches are responsible for teammanagement and registration and for ensuring students participate according to the rules of the game and competitions. 2.1.2b Coaches must be adults according to their local laws, but may be teachers, club organisers, parents, or otherwise associated with the team.

2.1.2c Coaches may not create code for use in competitions.

2.1.3 The Students

2.1.3a High School Students must be born before 1 May 2008 and after 1 May 2002, i.e. they must be between 13 and 18 years of age on 1 May 2021. 2.1.3b Middle School Students must be born before 1 May 2011 and after 1 May 2006, i.e they must be between 10 and 14 years of age on 1 May 2021.

7

2.1.3c Students must be enrolled in ISCED level 2 or 3 education, for example Middle or High School in the USA, or late Primary or Secondary School in the Republic of Ireland.

2.2 Matches 2.2.1 A match takes place between two teams of one (1) to three (3) players.

2.2.2 Matches are 10 minutes in duration.

2.2.3 At the end of a match the team with the highest score wins. Tie breaking rules are dependent on the competition and competition phase.

2.3 Code 2.3.1 Teams may upload prewritten code to execute during a match.

2.3.2 Teams may write new code during a match.

2.3.4 Both prewritten uploaded and new code must be created by the team using said code. 2.3.5 All code must be written by students. Code found to be written by a coach will be deemed ineligible for use in the competition. 2.4 Scoring 2.4.1 A team scores points by returning diamonds to their home base. Each diamond is worth one (1) point.The first player to score will get a 5x score multiplier on their first deposit. 2.4.2 A team’s end of match score is equal to the number of diamonds they have mined and delivered to their base at the end of a match. 2.4.3 Diamonds are found at Mines, shown in image 2.4. Mines contain a randomised number of diamonds in the range 1 to 5. 2.4.4 A Drone can mine and carry a number of diamonds equal to its capacity. A diamond only scores a point if it is delivered by a drone to the team base.

8

2.5 Drones 2.5.1 There are 4 different drone classes:

● hauler - big and heavy, large capacity. ● conman - ability to drop a fake mine ● speedster - fast and lightweight ● basic - jack of all trades, master of none

2.5.2 The drone class can be changed using the droneX.setClass() command. This command can only be run at a base. If the drone is carrying objects, the carried objects must first be deposited at the base before classes are changed. The default class is basic. 2.5.3 There are a total of 8 drones in the game with a max of 4 drones per team. On each team of 4 drones, 1 drone is remote controlled and the other 3 drones can be automatically controlled via python code. 2.5.4 A player can be in control of a minimum of 1 drone and a maximum of 4 drones. Each player will always have at least 1 drone. 2.5.5 In situations where there are unassigned drones, the unassigned drone can be requested by another player using the VradDrone.request(drone_no) .

2.6 Mines 2.6.1 Distribution and Discovery

2.6.1a Mines are randomly distributed throughout the match area at the beginning of each match. Mines are visible at the beginning of a match in an undiscovered state. 2.6.1b Mines are discovered by flying a drone, with active sensors, within sensor range of a mine. Once a mine has been discovered it is highlighted with a purple cylinder. 2.6.1c Each mine has a set of coordinates associated with it. Once a mine has been discovered by a team, that team can access the mine’s coordinates through the comms API.

9

2.6.2 Diamonds

2.6.2a A mine generates a random number of diamonds at the beginning of each match. Once generated this number is fixed and does not replenish. 2.6.2b A mine’s diamonds can be mined by landing a drone on the mine’s landing pad and using the drone API. 2.6.2c A mine can be mined by either or both teams, as long as it has a diamond supply remaining.

2.7 Charging Pads 2.7.1 Distribution and Discovery

2.7.1a Charging pads are randomly distributed throughout the match area at the beginning of each match. Charging pads are visible at the beginning of a match.

2.7.1b Each charging pad has a set of coordinates associated with it.

2.7.2 While you can charge your drone by landing on the match area ground, drones that have landed on a charging pad will recharge quicker.Charging rates vary and are randomised between 25 and 40 amps.

2.7.3 Battery size is measured in amp hours.

2.8 Home Base 2.8.1 Drones begin each match at rest on their home base landing pad.

2.8.2 Drones cannot enter the opposition team’s home base.

2.8.3 A drone that is within the coloured cylinder surrounding their home base landing pad does not experience any battery drain. 2.8.4 A drone can deliver minerals to its home base by entering the coloured cylinder surrounding their home base landing pad, and using the drone API to deposit the minerals.

10

Red Home Base

Blue Home Base

11

3. Practice Projects

3.1 Overview 3.1.1 Students can create projects in which to practice and test code.

3.1.2 Code created in these practice projects can be used in competitions.

3.1.3 Practice projects can be either public or private.

3.1.4 Public practice projects can be shared via a link.

3.1.5 Public practice projects can be forked by anyone who has a copy of the link.

3.2 Creating a Project 3.2.1 Projects can be created in the Robotify Projects system by navigating to robotify.com/projects.

3.2.2 Step-by-step

3.2.2a Click or tap the “Create Project” button in the left hand ribbon. Alternatively click the empty project frame with the “+” symbol.

3.2.2b Give the project a name and description.

3.3.2c Select the VRAD Mars Competition environment from the available options.

3.3.2d Click or tap the “Create Project” button below the description field.

3.3 Accessing and Editing Your Projects 3.3.1 Your previously created projects can be found at robotify.com/projects.

3.3.2 Step by Step

3.3.2a Find the project frame for your project and click on it to enter the project details page. 3.3.2b Click on “Settings” to change the project name, description, or published status.

3.3.2c Click on “Code” t o open the project for editing.

12

3.4 Sharing a Project 3.4.1 Projects can be shared with teammembers and other Robotify users.

3.4.2 Step by Step

3.4.2a Access the project details page for the project you wish to share.

3.4.2b Copy the URL for the details page and send it to anyone you wish to share the project with.

3.5 Forking a Project 3.5.1 Anyone with a link to a project can create a fork of that project. 3.5.2 Forking a project will create an exact copy of that project in your projects system. 3.5.3 The owner of the original project can see a list of all forks of that project, including the username of the user who forked the project.

3.5.4 Step by Step

3.5.4a Navigate to a project through a shared project URL or via your own projects system. 3.5.4b In the project details page click the “Fork” button, this will redirect you to your project's system. 3.5.4c In your project's system, find the project, it will be named “- fork”.

3.6 Creating a File in Your Project 3.6.1 Projects with no files

3.6.1a In the left hand Files panel, click “New File +”.

3.6.1b Rename your file by right clicking it and selecting rename.

3.6.2 Projects with files

3.6.2a Right click anywhere in the left hand Files panel, click “New File”.

3.6.2b Rename your file by right clicking it and selecting rename.

13

3.7 Downloading a File From Your Project 3.7.1 In the left hand Files panel, right click the file you wish to download and select “Download”. 3.7.2 Alternatively click the dropdown arrow beside the name of the file you wish to download and select “Download”.

3.7.3 Downloaded files will be of the form .py.

3.8 Importing a Project File 3.8.1 In the top ribbon, click the dropdown arrow beside the “Save” button, click load project. 3.8.2 Select the project file(s) you would like to import, file(s) for import will be marked with a green tick. Click the import button.

3.8.3 Imported files appear in the left hand File panel.

14

4. Preseason

4.1 Dates 4.1.1 The Season 1 Preseason (hereafter referred to as Preseason) will take place from October 23, 2021 to January 10, 2022.

4.1.2 Team Rating Scores (TRS) will be reset at midnight GMT January 10, 2022.

4.2 Competition Mode 4.2.1 Game rules otherwise follow those laid out in Section 2. The Game. 4.2.2 The specifics of game rules and competition rules may be changed periodically throughout the Preseason on the basis of improvements to balance, competition, and technical improvements. Any such changes will be communicated via a number of channels and updated in this document. 4.3 Team Rankings 4.3.1 TRS will be calculated throughout the Preseason, based on the system laid out in Section 7. Ranking System.

4.3.2 Preseason TRS will not affect Championship qualification.

15

5. Competition Season

5.1 Dates 5.1.1 The Season 1 Competition Season (hereafter referred to as the Season) will take place from January 17, 2022 - March 11, 2022. 5.1.2 Team Rating Scores (TRS) will be reset before the beginning of the Competitions Season, at midnight GMT January 10, 2022.

5.2 Competition Mode 5.2.1 Competition mode will be open to teams of up to three (3) players.

5.2.2 Game rules otherwise follow those laid out in Section 2. The Game.

5.2.3 The specifics of game rules and competition rules will not change during the Competition Season except in exceptional circumstances based on required improvements to balance and competition, or technical improvements. Any such changes will be communicated via a number of channels and updated in this document. 5.3 Team Rankings 5.3.1 TRS will be calculated throughout the Season, based on the system laid out in Section 7. Ranking System. 5.3.2 The Season TRS at midnight GMT March 12, 2022 directly affects Championship division allocation as laid out in Section 6. VRAD Championship. 5.3.3 Player created matches (i.e. those not created by the matchmaking system) do not affect TRS.

16

6. VRAD Championship

6.1 Dates 6.1.1 The Season 1 Championships (hereafter referred to as the Championship) will take place from March 21, 2022 - April 1, 2022. 6.1.2 The Team Ranking Score (TRS) system is not applied to VRAD championship matches. 6.1.3 Teams will need to be available to play at match times as laid out for their division in their invitation.

6.2 How to Qualify 6.2.1 Teams must register in March 2022 to take part in the Championship.

6.2.2 TRS rankings will determine Division allocation of each team.

6.2.3 Divisions will be created on the basis of acceptance of the Championship invitation and TRS ranking.

6.3 Round Robin 6.4.1 Divisions will consist of 4-5 teams based on uptake.*

6.4.2 Week 1 of the Championship will be based on a round robin league format, with each team playing all other teams in their division once. 6.4.3 Match wins will confer 4 league points, draws 2 league points, and losses 0 league points. *Championship structure is subject to change based on the number of teams participating in the Championship. Coaches will be kept up to date. 6.3 Knockout Rounds 6.3.1 Knockout Rounds will consist of 16 teams competing in an elimination tournament.

17

6.3.2 Teams at the top of their division will be invited to participate in a series of knockout rounds. 6.3.3 The winner of all their knockout rounds will be crowned as the VRAD Season 2 Champion.

7. Ranking System

7.1 Overview 7.1.1 The Roboduel ranking system is based on the Elo rating system.

7.1.2 A Ranked Period is a period of competition time in which the ranking system is applied to matches. 7.1.3 Preseason rankings have no effect on the Competition Season or Championship qualification.

7.1.4 Competition Season rankings affect Championship division allocation.

7.1.5 At the end of a Ranking Period all team ranks are reset.

7.2 Team Rating Score 7.2.1 Each team has a Team Rating Score (TRS) expressed as a numerical value.

7.2.3 On entry into a Ranked Period a team will be assigned a TRS of 1000.

7.2.3 When a team takes part in a Ranked Match their TRS will be raised or lowered based on the match outcome and the other team’s TRS at the start of the match.

7.2.4 Teams with a higher TRS are ranked higher than teams with a lower TRS.

18

8. Accessing the Game

8.1 Device Requirements 8.1.1 Robotify Simulations will run on most devices. For VRAD competitions, it is recommended to use a device with a keyboard and mouse such as a laptop, desktop or Chromebook.

8.1.2 WebGL support is required. You can check if your device supports WebGL at get.webgl.org/webgl2

8.1.3 Google Chrome is the recommended browser.

8.1.3a You can download Chrome at www.google.com/intl/en_ie/chrome/

8.1.3b For the best experience hardware acceleration should be enabled, disabling hardware acceleration can cause slow frame rates. Hardware acceleration is enabled by default, if you experience low frame rates you can enable hardware acceleration by following the guide at www.howtogeek.com 8.2 Network Connections 8.2.1 A minimum internet speed of 10-15 Mbps is recommended. You can check your internet speed at www.speedtest.net.

8.2.2 Disconnection from a match will count as a loss.

8.3 Accessing Matches 8.3.1Hosting a match.

8.3.1a Click the HOST button. This will start a private lobby.

8.3.1b You can copy and send the GAME CODE to allow other players to join your lobby.

8.3.2 Joining a match.

19

8.3.2a Click the JOIN button.

8.3.2b Type or paste a game code into the text field.

8.3.3 Automatic matchmaking.

8.3.3a Click the CLICK TO PLAY button.

8.3.3b The server will automatically determine whether to host or join a public lobby based on demand. 8.3.3c You are still able to share the GAME CODE for other players to join manually.

20

Appendix A: Documentation

A.1 What is Python Python is a general purpose programming language. Python is a very versatile language which is famous for its simple programming syntax, code readability and English-like commands which make coding in Python very easy and efficient. Python is used for many different things such as web development, AI, machine learning, operating systems, mobile application development, robotics and video games. The VRAD Martian Survival competition features an in-browser python code editor which allows you to program your drones using the Python programming language.

A.2 Importing Modules

There are four drones that can be programmed in VRAD, drone1, drone2, drone3, drone4.

Modules can be imported with the following code at the top of your script:

import drone1 # import drone1 module import drone2 # import drone2 module import drone3 # import drone3 module import drone4 # import comms module

import currentDrone # import currentDrone module

import VRADDrone # import VRRADDrone module

VRADDrone is used for static functions:

Static functions: bool VRADDrone.take_control(id) - Sets the camera to focus on the specified drone. If you take control of an RC drone, you will be able to control it with the keyboard now

21

bool VRADDrone.request(id) - Requests control of the specified drone. If somebody else owns the drone, the current owner will receive a popup and they can accept or deny the request. float array VRADDrone.get_base_position(base_number) - Get the x,y,z coordinates of the specified base float array VRADDrone.get_gps(team, id) - Get the x,y,z coordinates of the specified drone. team is a string, either “red” or “blue” (internally use 0 for red, 1 for blue) float array VRADDrone.get_chargers() - Get the x, z coordinates of the discovered chargers. Returned in the form of a 2d array. float array VRADDrone.get_mines() - Get the x, z coordinates of the discovered mines. Returned in the form of a 2d array. drone1 / drone2 / drone3 / drone4 to reference drones 1-4. (Each drone is represented as an object, use the drone API methods below to instruct each drone on what behaviour to follow, example: drone1.take_off(5) )

currentDrone refers to the drone that the camera is currently fixated on, you can change this using the command:

VRADDrone.take_control(drone#);

example : VRADDrone.take_control(3); would change the camera to focus on drone3 and allow you to reference drone3 using the currentDrone object.

A.3 Drone API

Methods (functions returning bool are indicating success/failure): bool check_owner() - Returns false if you have ownership of the specified drone. True otherwise. Check if drone has other owner. string get_class()- Returns class of the drone referenced. bool set_class(type) - Sets the class of the drone referenced, must pass in as string eg: drone2.set_clas s(‘conman’); float get_heading() - In range [-180, 180). Ownership not required for this method float array get_gps() - Ownership not required for this method int get_currently_carrying()- Number of objects currently in cargo float get_battery()- In range [0, 1] returns battery remaining dictionary get_ir_>Page 1 Page 2 Page 3 Page 4 Page 5 Page 6 Page 7 Page 8 Page 9 Page 10 Page 11 Page 12 Page 13 Page 14 Page 15 Page 16 Page 17 Page 18 Page 19 Page 20 Page 21 Page 22 Page 23 Page 24 Page 25 Page 26 Page 27 Page 28 Page 29 Page 30

www.roboticseducation.org

Made with FlippingBook HTML5