Abstract

This weekend the “NASA Space Apps Challenge” took place and I participated at the EPFL, Lausanne to work on a challenge about communicating with multiple CubeSats in space.
Our amazing team decided to go all the way from “Satellites throw some bytes on us” to “You can tap a button on your iPad and see temperature curve of Satellite #1 for the last 10 days”. Our Code is on GitHub.
What a weekend!
This weekend, the NASA Space Apps Challenge took place and a few cool guys and I decided to tackle the “New command & control system for CubeSat”-Challenge.
We were participating at the EPFL, Lausanne - a very nice location with a lot of cool people there! We had a lot of fun on Saturday & Sunday and I’ll definitely try to attend next time, too.
Thanks a lot
The organization team surely did a great job and I want to thank all of them! (I can only name a few of you, but you all did a great job, so count this as a big THANK YOU! to every one of you!)
For our project, I would like to give a big thank you to the guys from the Swiss Space Center and Dr. Anton Ivanov for his patience and knowledge. Without him we wouldn’t have had a clue where to find the right specs to talk with CubeSats.
And last but not least: My teammates. You’re awesome guys! Let’s keep up the good work!
The Challenge: Command & Control CubeSats
So our challenge was to create a command & control system for CubeSat satellites.
As Dr. Anton Ivanov from the Swiss Space Center pointed out to us, there is already a solution going from the packetization layer up to the end-user.
That solution is currently capable of talking to a single satellite (currently “Swisscube 1” - call-sign “HB9EG”).
Our task now is to go down one layer and take encapsulated TC-Transfer-Frames (resp. Segments) and assemble them together to TC-Command-Packets again.
Our architecture is built upon 4 components:

- A packet-generator generating sample packets and puts them into frames and a library to reassemble packets from some given frames.
- An interface to put packets enriched by information about the sending spacecraft and the status of the packet (valid or invalid) into a database
- An API-layer to access data from the database as JSON
- A client-application for the end-user (for demo purposes)
Our result
We put our code on GitHub - more detailed documentation is in the wiki there.
We’ve been chosen as one of the two projects nominated for the global NASA challenge. (This is the other one, if I remember correctly)
The current status is:
- We have a basic version of the packet generator and the library (currently it only validates frames, but I am currently implementing the other functions [i.e. packet assembling and enrichment for the database).
- The API-Layer generates dummy data for testing purposes already (see the wiki).
- The client application exists in static mockups (more and more)

And the T-Shirt goes to…
Thanks to the sponsors (NASA, Swiss Space Center and evolucix - tell me if I missed someone) the two teams nominated for the global challenge got T-Shirts! Yay!
Perspective
I am not really sure how exactly this will go on - the team stays in touch and we’ll be giving some presentation at the Swiss Space Lab - and are participating at the global challenge. But how exactly this will all will happen is unknown to me now. Stay tuned!
