Between reality and cyberspace
NASA Space Apps Challenge Lausanne - C&C CubeSat Project

Abstract

CubeSats are small sats for educational purposes

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:

  1. A packet-generator generating sample packets and puts them into frames and a library to reassemble packets from some given frames.
  2. An interface to put packets enriched by information about the sending spacecraft and the status of the packet (valid or invalid) into a database
  3. An API-layer to access data from the database as JSON
  4. A client-application for the end-user (for demo purposes)
For the sake of simplicity, the first to steps are both done in the packet generator, but can be easily deferred by using the packet generation functions and the packet reassembling functions separately.

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!