Mission Space Lab Rulebook
Mission Space Lab Overview
In Mission Space Lab 2023/24, teams need to write Python programs to accurately estimate the speed at which the International Space Station (ISS) is travelling in Earth’s orbit. Teams will test their program using a Python library we provide specially for Mission Space Lab teams. This library simulates their program’s run based on historical data from previous Astro Pi missions.
To write and test their Python program, teams can use any macOS, Microsoft Windows, or Linux computer and any code editor or integrated development environment (IDE) that supports Python. The Python library will work on any standard operating system on a local computer.
Astro Pi computers will not be provided as part of the Astro Pi Challenge, but if teams wish, they can use their own Raspberry Pi computer to write and test their program.
Mission Space Lab has two phases:
Create - Write the computer program that will collect the data you need and make your calculation.
Deploy - Your program is deployed on the ISS.
Create (6 November 2023 – 19 February 2024)
Your team’s program must meet some simple requirements so that it can be controlled automatically. Any programs that do not meet these requirements will not be given ‘flight status’ (be allowed to run on the ISS). The deadline for submissions is 19 February 2024. Submissions are made by team mentors using the unique link they received when they registered their teams.
What does your program need to output?
Your program needs to produce a numeric output of the average speed that the ISS is travelling. This is also known as the magnitude of velocity.
The output that your program produces must be a .txt file as described in the Mission Space Lab creator guide.
The numeric output should use no more than 5 significant numbers (5 digits in total including decimal places, for example, 1.2345 km/s).
The speed must be given in kilometres per second (km/s).
Your program should measure the average linear speed that the ISS is travelling around the Earth, not how much the ISS is rotating.
Deploy (April – May 2024)
Once Astro Pi Mission Control has received your program, it will be tested to make sure it works and does not contain any functionality that might adversely affect the ISS or its networks. The best programs will be selected to be deployed on the ISS and receive ‘flight status’, and we will notify the teams that created these by the end of April 2024. The selected entries will be uplinked to the ISS and deployed on the Astro Pi computers on board. The programs will run on the ISS in April – May 2024 (depending on ISS operational constraints).
After program deployment
Teams whose programs achieved ‘flight status’ will receive a certificate of participation and a set of data captured from the ISS. They will also be invited to attend a live virtual Q&A session with an ESA astronaut.
Encourage your team to decide on the ideal date they would like to finish writing their program. They should make sure they have enough time to test it fully before submitting it, and to check it against the requirements checklist.
To take part, teams must:
Be made up of participants aged 19 or younger at the time of submission
Be made up of 2–6 young people
Be supervised by a mentor such as a teacher, parent, Scout leader, or Code Club or CoderDojo leader, who will need to register on astro-pi.org and will be the main point of contact with the Astro Pi team
Have at least 50% team members who are citizens of an ESA Member State, Canada, Latvia, Lithuania, Slovakia, Slovenia, or Malta
In addition, each team member must be at least one of the following:
Enrolled full-time in a primary or secondary school located in an ESA Member State, Canada, Latvia, Lithuania, Slovakia, Slovenia, or Malta
Homeschooled (certified by the National Ministry of Education or delegated authority in an ESA Member State, Canada, Latvia, Lithuania, Slovakia, Slovenia, or Malta)
A member of a club or after-school group, such as Code Club, CoderDojo, or Scouts, located in an ESA Member State, Canada, Latvia, Lithuania, Slovakia, Slovenia, or Malta
One mentor may supervise a maximum of 10 teams per year. If you are determined to co-mentor more than 10 teams, you need to find another mentor who can be the main point of contact and have that person apply with the extra teams!
There is no limit to the number of teams that a school or club can enter, but each team can only submit one entry, and each participant can only be part of one team.
All submissions must be in English.
ESA Member States:
Austria, Belgium, Czech Republic, Denmark, Estonia, Finland, France, Germany, Greece, Hungary, Ireland, Italy, Luxembourg, the Netherlands, Norway, Poland, Portugal, Romania, Spain, Sweden, Switzerland, and the United Kingdom
Program requirements checklist
Your experiment does not rely on interaction with an astronaut.
Your program is written in Python 3 and is named main.py. It must run without errors when executed on the command line of the Flight OS using python3 main.py.
Your program does not rely on any additional libraries other than those listed in the Mission Space Lab creator guide.
Your program monitors its running time and stops after 10 minutes have elapsed.
There is no bad language, rudeness, or political statements in your program.
Your program uses at least one Sense HAT sensor or the camera.
Your program is uploaded in a zip file. If you have additional files that are required for the operation of your experiment, they can be included in the zip file too, but the zip file must contain a file called main.py, which must be how your program is run.
Your program does not use the Astro Pi’s LED matrix.
Your program does not display flags during its run.
Your program is not allowed to retain more than 42 images at the end of the 10 minutes — though it can store more than that while it is running.
Your program must not be more than 3MB, unless it includes a TensorFlow Lite (.tflite) machine learning model, in which case your program must not be more than 7MB.
Your program is well documented and easy to understand, and there is no attempt to hide or obfuscate what a piece of code does.
Your program does not start a system process, or run another program or any command usually entered on the terminal (e.g. vcgencmd).
Your program does not use networking.
Your program does not include malicious code (i.e. code that deliberately attempts to disrupt system functionality).
Requirements: Files and threads
Your program does not use threads, or if it does, it does so only by using the threading library; threads are managed carefully and closed cleanly, and their use is clearly explained through comments in the code.
Your program only saves data in the same folder where your main Python file is, as described in the Mission Space Lab creator guide (i.e. using the special __file__ variable); your program does not attempt to create new directories for storing your data, and no absolute path names are used.
Your program runs without errors and does not raise any unhandled exceptions.
Any files that your program creates have names that only include letters, numbers, dots (.), dashes (-), or underscores (_).
Your program does not use more than 250MB of space to store data.
Your zip folder must only contain the following file types: csv, txt, jpg, png, yuv, raw (camera), h264, json, toml, yaml, .tflite.
Once you have submitted your program, it will be reviewed and tested by Astro Pi Mission Control. They will assess your program according to the following:
Does your program meet the guidelines?
Is your program investigating the scientific challenge that Astro Pi Mission Control has set?
Does it output an estimate for the speed of the ISS in a file named result.txt, in the required format?
Is there a file named main.py in the submission?
Program readability and quality
Is your program easily understandable?
Does it use any prohibited libraries, or attempt to do anything malicious?
Are absolute paths used?
Are all files created in the allowed files directory?
Does your program use comments and/or docstrings?
Is it structured well, and does it include rigorous error checking?
Is reused code from other sources/authors correctly attributed?
Does the program respond to changes in the speed of the ISS?
Is the method of estimating the speed innovative?
Feasibility of the program in the ISS environment
Does the method of estimation rely on an unlikely event to occur, or astronaut interaction?
Does your program adhere to the limit of downloading only 42 photos?
Clarity and comprehensiveness
Does your program perform the calculations you have attempted to make?
Does it follow the guidance provided in the Mission Space Lab creator guide?
Astro Pi Mission Control will test your program on ground to ensure that it runs without errors and that it does not violate any of the security rules.
Once all the programs have been tested, we will email you about whether your team’s experiment has achieved flight status (by the end of April 2024). We will then prepare and upload the successful programs to the ISS. You will receive the results of your experiment by email once your experiment data has been downlinked from the ISS. This will happen in June 2024. Please note that the above timings are dependent on ISS crew operations and are therefore subject to change.