2026 Middle School Program
Info
Leaderboard
Submission Log
Section 01
Mission Briefing
Memo · Internal · Combined
Members of the BLU family,
NASA has opened the Asteroid Belt to commercial exploration. Any agency that successfully documents new asteroids will win future mission contracts, a huge opportunity for BLU. To be the first company out there, we've outfitted our BluBee™ with the newest propulsion and control systems from R&D, products of trillion-dollar research. It is solar-powered, so it can recharge whenever it's under the sun.
But the game has changed. The RED space agency has announced their own mission with their own RedBee™. We have competition, and a hunch they too will be pulling out their newest technology for this run.
There is a silver lining. If our R&D department can get its hands on information about RED's new transportation technology, especially pictures, it would be even more valuable than the asteroid data itself. The BluBee™ is already equipped with a camera, although it isn't powerful enough to take pictures without light from the sun.
Your mission, then, is to develop an autonomous piloting system that does all of the following:
- [01]Collect as much asteroid data as possible, as quickly as possible.
- [02]Photograph the RedBee™ to capture intel on their new technology.
- [03]Prevent the same asteroids from being documented by both agencies.
- [04]Avoid being photographed, RED will try to steal our strategy.
- [05]Manage energy wisely. Recharge from the sun when necessary.
Section 02
Background
Read first · Context
Before the rules, the why. AsteroidBee is a story wrapped around real spaceflight engineering. Every mechanic in this manual — sunlight and shadow, energy budgets, free-flying robots, cameras for inspection — mirrors a real challenge that engineers solve to keep spacecraft alive and useful. This section gives you the context that makes the game make sense.
2.1 / Humans In Space & The ISS
People have lived and worked in space continuously for over two decades. The International Space Station (ISS) is the largest crewed structure ever built in orbit, circling Earth at roughly 400 km and completing a full lap about every 90 minutes. That means a crew sees a sunrise and a sunset roughly 16 times every day. Astronauts run thousands of science experiments there — on materials, plants, the human body, and robotics — that are difficult or impossible to perform on the ground.
Zero Robotics connects students to that work. The autonomous control software you write in this competition descends from real research code that has run on hardware aboard the ISS. You are not playing at engineering — you are doing a simplified version of it.
2.2 / Sunlight, Shadow & Power
Because a spacecraft laps the planet so quickly, it spends roughly half of every orbit in direct sunlight and the other half in Earth's shadow, a period called eclipse. In sunlight, solar panels generate power and recharge the batteries. In eclipse, there is no sun, so the spacecraft must run entirely on stored battery charge until it comes back around into the light.
This single fact drives a huge amount of real spacecraft design, and it is exactly the Light Zone / Dark Zone mechanic in AsteroidBee. Your satellite recharges in the Light Zone and runs down its reserves in the Dark Zone. Managing that cycle — gathering energy while you can, spending it wisely while you can't — is the same problem a real mission planner faces.
// Why Zero Robotics?
Zero Robotics turns a hard, real engineering problem into something you can program, test, and win.
- You explore robotics, space science, and teamwork on a shared challenge.
- You develop solutions iteratively — write, simulate, observe, improve — the way engineers actually work.
- The simulation models real spacecraft dynamics, so the habits you build transfer to the real thing.
2.3 / The Astrobee Robot
Astrobee is a family of free-flying robots that operate inside the ISS. There are three of them — Bumble, Honey, and Queen — and each is a cube roughly 32 cm on a side. They took over from the earlier SPHERES robots, which served as the ISS robotic test platform for more than a decade. Astrobee helps astronauts by taking inventory, recording experiments with its cameras, and carrying small payloads, freeing the crew for work that needs a human.
Astrobee maneuvers using electric, fan-driven propulsion rather than burning fuel, and it carries cameras it uses to navigate and to inspect its surroundings. In AsteroidBee, your satellite is an Astrobee: it moves by firing thrusters (drawn from a limited fuel budget), it watches the field with sensors, and it carries a camera that — just like a real inspection robot — only produces a usable image when its target is properly lit.
Fleet
Bumble · Honey · Queen
Size
~32 cm cube
Replaced
SPHERES
2.4 / Cameras As Instruments
Imaging is one of the most valuable things a spacecraft can do: weather satellites photograph storms, survey craft map asteroids, and inspection robots photograph other vehicles to check for damage. A camera is only as good as its light, though — point it at something in shadow and you get nothing. That constraint is the heart of AsteroidBee's scoring: a photograph of your opponent is only worth points when they are in the Light Zone, your camera is on, and you are facing them. The story calls it espionage; the engineering is real orbital imaging.
// Note · Story vs. Simulation
The mission briefing is the fun framing — BLU vs. RED, asteroids, stolen intel. The rules in the rest of this manual are the real specification. Wherever the story and the numbers seem to disagree, the numbers win.
Section 03
Game Overview
180s · 2 players · simulation
Matches of AsteroidBee are played between two Astrobee satellites controlled by programs written by two separate teams. Each team competes to have the most points when the round ends. Points are earned by photographing the opposing satellite and uploading those pictures, or by collecting score-generating items (the asteroids) scattered around the playing field.
Dynamic Light and Dark zones have various impacts on the satellites, representing how a real satellite in orbit is half-illuminated by the sun and half in Earth's shadow (eclipse). Pictures cost energy to take and can only be taken when the target is in the Light Zone. Zones shift mid-round.
Each satellite has a finite amount of energy. Energy regenerates in the Light Zone or by picking up Energy Packs. Mirror items, when deployed, prevent the user from taking pictures, but reflect any pictures the opponent takes back at them, making them worthless.
Round Length
180s
Fuel Allocation
60s
Max Energy
5.0
Items in Field
9
3.1 / Game Layout
The 2026 competition is conducted in simulation. Play happens in the Interaction Zone; satellites that leave it are out of bounds. Position is measured from the center of the satellite (radius 0.11 m). Satellites at the bounds are stopped from moving further out.
X Bounds
[ −0.64, +0.64 ]
Y Bounds
[ −0.80, +0.80 ]
Z Bounds
[ −0.64, +0.64 ]
Section 04
The Satellite
Astrobee · 12-thruster · 2D
Each team writes software to command an Astrobee satellite. An Astrobee moves using twelve thrusters, though for the middle school game, Z-axis motion is disabled. Like any real spacecraft, the Astrobee has a power source (LiPo batteries). Resources are limited and must be used wisely.
4.1 / Time
180 seconds
Each round lasts 180 seconds. After 180s, scores are final and compared.
4.2 / Fuel
60 seconds of thrust
Total sum of fuel used in seconds of individual thruster firing. When exhausted, the satellite will only fire thrusters to avoid out-of-bounds or collisions.
4.3 / Code Size
≤ 100 percent of alloc
Check via IDE: Simulation → Code Size Estimate. Submissions over 100% will be rejected.
4.4 / Player ID
0 = self, 1 = opponent
Always identify as playerID = 0, regardless of being assigned BLU or RED. Reassignment is automatic.
4.5 / Initial Deployment
Write code assuming your player is the Blue Astrobee, this adjustment is handled automatically if you're assigned Red. The satellite radius is 0.11 m; position relative to game features is determined by the center.
4.6 / Noise
Although both competitors run the same challenge with identical satellites, the two may be affected by random perturbations differently, producing small or even large variations in score. This is intended. It reflects uncertainties in real satellite dynamics and sensing. The best solutions will be robust to these variations and a wide range of object parameters.
Section 05
Gameplay Mechanics
Energy · Zones · Items · Pictures
5.1 / Energy
Energy is the most prohibitive resource. Both players start with 5.0 energy (also the maximum). In the Light Zone, energy regenerates at +0.5/sec. Maneuvering costs 0.3 energy per 1 second of fuel used.
5.2 / Light & Dark Zones
The positive Y sector starts in the Dark Zone; the negative Y starts in the Light Zone. Zones swap at T=60s and T=150s. Out-of-bounds light matches the adjacent in-bounds area, satellites stranded in the dark with no energy stay stuck until the swap. Call getLightSwitchTime() to know when.
Light Zone
Exposed · Powered
- You can be photographed
- Energy regenerates at +0.5/s
- Required for opponent pictures to score
5.3 / Items
Nine items are scattered across the field (IDs 0–8). Each can be used only once and does not regenerate. To collect: the center of your satellite must be within 0.05 m of the item and moving slower than 0.01 m/s.
Position within 0.05m AND velocity under 0.01m/s. Both conditions required.
Both must be true
Proximity
Satellite center within 0.05 m of item center.
Near-stop
Satellite moving slower than 0.01 m/s.
Energy Pack
IDs 0, 1, 2, 3 · 4 in field
Used instantly on pickup. Refills satellite to maximum energy (5.0).
Score+
IDs 4, 5, 6 · 3 in field
Used instantly on pickup. Adds 1.5 points to your score.
Mirror
IDs 7, 8 · 2 in field
Held until deployed. Active for 24 seconds: you cannot photograph, but opponent pictures of you are worth 0.
5.4 / Picture Taking
The way to score the most points is by photographing the other satellite. All seven conditions below must be met for a successful picture:
// Photo Point Formula
points = 2.1 + 0.1 / (distance − 0.5 + 0.1)
Closer = more points. If the opponent has an active mirror, the picture is worth zero. Every attempt, successful or not, adds 0.01 points as a tiebreaker. Use getPicPoints() to preview a shot before spending the 1.0 energy. Note: getPicPoints() returns the base value 2.0 + 0.1 / (d − 0.4); a shot that actually lands scores about 0.1 more — the formula above (2.1 + …) already includes that +0.1 success bonus.
// Important Notes
- takePic() spends 1.0 energy and disables your camera for 3 seconds whether or not the picture succeeds — check your conditions before you shoot.
- Use getPicPoints() to preview what a shot is worth (costs 0.1 energy) before committing the full 1.0.
- If the opponent has an active mirror, your picture of them is worth 0. If you have an active mirror, you cannot take pictures at all.
- A target in the Dark Zone cannot be photographed for points — they must be lit.
- Every attempt adds +0.01 as a tiebreaker, but spamming the camera burns energy you'll wish you had.
5.5 / Scoring Summary
Tiebreaker: whichever satellite is closer to the origin (0, 0) at game end wins.
Section 06
Tournament Schedule
Session 1 / 2026
Jun
22
Program Begins
Day 1 of summer
Jul
6
Practice Round
Due 5pm EST
Jul
10
Round 1 Code
Due 5pm EST
Jul
13
Field Day
Alliance announce
Jul
31
Final Submission
Due 5pm EST
Aug
7
Live Finals
Aboard the ISS
6.1 / Independent Competition
The program starts with two phases of regional simulation. Practice Code is submitted at the end of Week 3, results are not official and exist to guide teams in improving code during Week 4. Submission deadline is 5pm local time on the Thursday/Friday of Week 3.
To qualify for finals, teams must submit both Practice Code and Round 1 Code.
To enter a program, use the Submit tool under Simulate on the IDE page. You may change your submission as many times as you like before the deadline; only the final submission counts. Late submissions are not accepted unless ZR staff determines emergency circumstances made timely submission impossible.
6.2 / Final Competition
After Round 1 code is submitted, teams are assigned an ALLIANCE. Alliances must work together to test, compare, and combine their code to submit to the finals. The final code is submitted by the alliance. Finals take place aboard the International Space Station with live video transmission, all teams are invited to watch.
// Finals Time Priority
- Running all submissions at least once
- Completing the tournament bracket
- Running all submissions during live video
Note: real spacecraft use battery packs and CO? tanks that can exhaust mid-match. The competition will have "Loss of Signal" (LOS) periods when the live feed is unavailable. ZR will attempt to make sure every team sees a live match of their player, but completing the competition takes priority. Results from simulated matches may be used if necessary.
Section 07
Code Submission
Test · Debug · Submit
All coding and testing happens in the Zero Robotics web IDE. You write your autonomous pilot, simulate it against sample opponents until it behaves the way you want, and then submit it to the tournament. This section covers how to test effectively and how to get your code into the competition.
// Important · How Your Code Runs
Your program is not a recipe that plays out top to bottom over the match. The init portion runs once at the start. The main control function then runs once per control cycle — about once per second — for the entire 180 seconds.
Because the same code runs every cycle, a multi-step plan ("go here, then turn, then photograph") needs a step variable and if conditions that decide what to do this cycle. This is the single most important idea for writing a working strategy.
7.1 / Local Simulation & Debugging
Before submitting, run your code in the IDE's simulator. The simulation models the Astrobee's motion and all the constraints in this manual within a virtual environment, so you can watch your strategy play out and find problems early.
Run your player against a sample opponent and watch the match in the visualizer. Re-run as often as you like.
Print values to the console to see what your code is "thinking" each cycle. Use double parentheses; do not prefix with api.
Watch your resources during a run to find where energy or fuel is being wasted.
Under Simulation. Your program must stay at or under 100% of the size allocation or it will be rejected.
// Debugging Tip
Change one thing at a time and re-simulate. If a run surprises you, add a DEBUG(( )) line that prints the value you are unsure about — your position, your energy, the result of a check — and watch it in the console. Most "my robot won't move" bugs are an if condition that is never true, or running out of energy or fuel.
7.2 / Submitting Your Code
When your code is ready, submit it from the IDE using the Submit tool under Simulate. You may change your submission as many times as you like before a deadline — only your final submission counts. Late submissions are not accepted unless ZR staff determine that emergency circumstances made timely submission impossible.
To qualify for finals, your team must submit both the Practice Round code and the Round 1 code. See Section 06 — Tournament Schedule for dates.
// Code Upload Guidelines
Before you hit submit
- Your code compiles and runs in simulation without errors.
- Your player behaves as you intend against a sample opponent.
- You understand that scores vary from run to run due to random perturbation: a robust strategy beats a lucky one.
- You submit through the IDE before the 5pm EST deadline for that round.
Section 08
Season Rules & Ethics
Fair Play · Conduct
8.1 / Tournament Rules
- MIT/ILC can use, reproduce, and publish any submitted code.
- When game intent and behavior contradict, MIT clarifies and updates the manual or code.
- Teams must report all bugs as soon as they are found. A bug is a contradiction between intent and behavior. Intent overrides bug behavior up to code freeze.
- Code/manual freeze is 3 days before the submission deadline. Within the freeze, code overrides intent and the manual. No bug fixes happen during freeze.
- Game challenge additions and TBA values may be announced based on lessons from earlier tournament phases.
8.2 / Ethics Code
- ZR will work diligently upon report of any unethical situation, case by case.
- Report bugs as soon as they're found. Intentional abuse of an unreported bug may be considered unethical.
- Do not manipulate scoring methods to change rankings.
- Do not attempt to access restricted ZR information.
- No vulgar/offensive language, harassment, or intentional annoyances on the ZR website.
- Code submitted to competition must be written only by students.
- Don't modify api or game objects. Simulation requests must be manual via the website, no API calls for simulation.
Section 09
Resources & Guidelines
Deadlines · Support · Policy
Everything below lives on the Zero Robotics website under the 2026 Middle School Program tournament tabs. Dates are subject to change — check the website and your Weekly Emails regularly for updates and announcements.
9.1 / Key Deliverables
These are the major milestones for the season. All code deadlines are 5:00pm EST. To advance to finals, a team must submit both Practice Round and Round 1 code.
9.2 / Surveys & Evaluations
All students and educators are required to complete pre- and post-program surveys. Your feedback is critical to assessing and improving the program. Have students complete the pre-survey by the end of Day 1, and the post-survey on the last day of the program (or on ZR Finals day). All survey links live on the Surveys & Evaluations tab.
9.3 / Using ChatGPT & Generative AI
Generative AI tools like ChatGPT can help you understand concepts and get unstuck. They also carry a risk: leaning on them too hard can keep you from truly understanding the code you submit, which leads to mistakes you can't diagnose.
// Policy · AI Assistance
Teams may use ChatGPT and other AI tools during the game, but we ask that you include a note in your code write-up describing how you used them. Transparency keeps the competition fair. Our goal is for you to genuinely understand the code you write — if AI helped you get there, just say how.
9.4 / Getting Help: Forums & Office Hours
The Forums on the Zero Robotics website are the primary place to ask questions, share ideas, report bugs, and get answers from the ZR team and other teams. The ZR team also holds office hours — great for getting feedback on your code or clarification on the rules. Schedules and any changes are posted on the website and in the Weekly Emails.
// Tip · Ask Early
If you hit something confusing, post it on the Forums sooner rather than later — chances are another team is wondering the same thing, and an early answer can save your whole week. Remember to report any suspected bug as soon as you find it (see Section 08).
9.5 / Tutorials & API Reference
New to the IDE or to programming? Start with the step-by-step materials on the Training Resources and Educator Materials tabs, which walk through creating a project, writing your first moves, and submitting code. A complete list of the functions you can call — with what each one does — is in Section 10 — User API Reference of this manual, and a printable API guide is linked at the top of this page.
Learn
Training Resources · Educator Materials
Reference
Section 10 · Printable API Guide
Ask
Forums · Office Hours
Section 10
User API Reference
Quick reference
Astrobee control functions (except DEBUG) are accessed as members of the api object, e.g. api.setPositionTarget(mypos). Game-specific functions are accessed via the game object, e.g. game.takePic().
checkHaveItemOther(itemID)
checkHaveItemNoOne(itemID)
getOtherEnergy() → float
checkInDark() / checkInDarkOther()
// Tactical Hint
getEnergy() returns the energy remaining. As your energy runs low, your thrusters fire at reduced power — the game scales your commanded thrust by how much energy you have, so you slow down before you fully stall (taking a picture, though, still needs at least 1.0 energy). Check often, you'll have time to move toward the Light Zone to recharge, stop the Astrobee so it won't drift out of bounds, or rotate to point toward your opponent for a picture.
Section 11
Change Log
Revision history
v1.1
Current
Jun 22, 2026 · Program Launch Update
- Added Section 02 — Background: human spaceflight and the ISS, sunlight/eclipse and power, the Astrobee robot, and cameras as instruments.
- Added Section 07 — Code Submission: local simulation, debugging, how your code runs, and code upload guidelines.
- Added Section 09 — Resources & Guidelines: key deliverables, surveys, generative-AI policy, Forums & office hours, and tutorials.
- Added clarifying notes throughout (picture-taking gotchas, story vs. simulation, asking for help early).
- Corrected the maneuvering energy cost (now 0.3 per fuel-second) and the low-energy thruster note to match the simulation, and clarified the getPicPoints() preview value.
- Renumbered sections and refreshed the section navigation to fit the new content.
- Minor copy fixes.
v1.0
Prior
Teacher Training Release
- Initial manual release for the Middle School Summer 2026 season.
Manual subject to change. New entries are added to the top of this log as revisions are published.
Zero Robotics