Google Code In 2018 with AerospaceResearch.net

Our Tasks for Google Code-In 2018

Coding

  1. ADSB: Finding the Start of a Plane message within a radio stream
  2. ADSB: Decode an ADSB message string
  3. MORSE: Decode a MORSE code message within a radio stream
  4. VISualMAth: Create a CLI (command line interface) for visma
  5. OrbitDeterminator: Satellite Tracking – Take a given TLE of any satellite and plot its orbit

Documentation/Training

  1. VISualMAth: Install and run visma and document it in a step-by-step tutorial
  2. Design a representation where our tracked satellites are and what ground station had contact with it
  3. OrbitDeterminator: Build Orbit Determinator and make a step-by-step tutorial
  4. Build pykep

Outreach/Research

  1. Find a name for our DGSN!
  2. Make a T-minus 5 talk  in the spirit of a SpaceUp.org lightning talk about space and one of our goals here
  3. Make a poll among your friends how they think open-source can help space and how space can help everyone
  4. Create a video about how to use one of our software

Quality Assurance

  1. Report a bug in OrbitDeterminator
  2. Fix 1 coding violation
  3. Check our python programmes on strange Operating Systems (BSD, SuSe Linux, Raspberry Pi, Orange-Pi, etc…)
  4. Validate the results of the SGP4 propagation model with Interpolation.

Design

  1. Layout the website by finding the right services (webpage, forum, chat, etc) you think we would need for AerospaceResearch.net
  2. Build a website for AerospaceResearch.net
  3. Design arts that can be put on our ground station hardware
  4. Design poster for AerospaceResearch.net

 

All the Tasks in Detail

Coding 1 -ADSB: Finding the Start of a Plane message within a radio stream

Bigger planes, like those we all use to travel the world, are equipped with an ADSB emitter. With the system, the planes are sending out short messages via radio to the air traffic control stations. In these different kinds of messages, there can be information about the flight number of the plane, the destination, the current location, altitude and much more. This information is used as a backup communication line for flight air traffic control. ATC is using this data in addition to other ways to detect flights and organize their path across the ATC’s sector. In this way, we all fly safer.

The cool thing about ADSB is, that it is receivable by everyone because it is a known, international standard. And because of robustness reasons, the hardware requirements to receive it are very low. So communities like FlightRadar24 have simple software defined radio (SDR) receivers everyone around the globe and transmit their received plane signals to the community web pages for us all to see, where the planes are flying.
We want you to help these communities by coding software that can find the beginning of the data signals from a recording by such an SDR receiver. We will provide you with some sample files and you will look for the beginning flag, that all ADSB signals have in common. It is a simple pulse code looking like 0101001010000 before the actual data stream. (ADSB for Dummies)

You can use several ways to find these signals, like more algorithmic approaches with xor-filters, or more mathematical ways like cross-correlation. We leave it up to you to find out what suits you best and what has the best efficiency to find these „needles in the haystack“.

The goal will be
* to find as many of the beginnings of different ADSB messages as possible.
* to determine the location within the stream we give you (index position of the start)
* to prepare the code in a way the code can be used to combine it with the other ADSB tasks of our Code-In Ideas.

And in the end, you will also have working code you can use at home to see what is flying around your home area.

Coding 2 – ADSB: Decode an ADSB message string

As presented in the first ADSB task, planes send out their information of location and destinations. If the messages are found in the recorded radio stream, they need to be decoded to extract the information. ADSB has several different kinds of ways to „frame“ information, but in this task, we will concentrate on the DF17 frame. We think it is the most interesting one in terms of data inside and also the best documented in many sources on the internet.

We will provide you with some test strings in HEX strings and we want you to write a programme, that can extract the data from it. This can be done independently from the first task.

A hex string comes in pairs and looks like this…

8D75804B580FF2CF7E9BA6F701D0
8D75804B580FF6B283EB7A157117

We want you to follow these instructions and decode the example strings.

The goal will be

  • to decode the hex string
  • to combine the pair of strings and extract the location
  • to get familiar with the error correction in the hex string (optional)
  • to get familiar with the geocoding of the longitude, latitude, and altitude, because it can be in isometric units or others.
  • to test the code with actual ADSB signals you decode and check on FlightRadar24 if you find your planes there.
  • to prepare the code in a way the code can be used to combine it with the other ADSB tasks of our Code-In Ideas.

And in the end, you will also have working code you can use at home to see what is flying around your home area.

 

Coding 3 – MORSE: Decode a MORSE code message within a radio stream

This task seems easy because we all know MORSE code. It is binary Audio decoding of characters with „dots and dashes“. Most of us things our grandpas did this but we now have cell phones and high-speed Internet that uses more sophisticated digital encodings.

You are partly right because MORSE code is still used on some satellites as a way to transmit simple but very robust Information strings, so-called beacon signals. Mostly, it is the satellite’s name, but also it is the „I am still alive“ Signal and giving data like temperature or power Levels that each satellite operator needs to have! Especially in the world of „CubeSats“ is still widely used.  And in addition to that, ham radio satellites, the OSCARs, transmit morse code back to Earth that they received by Amateur Radio Operators from the round before.

So we want you to decode MORSE code from a  recorded radio stream from an SDR Receiver that we will give you, or you can even receive by yourself.

The goal will be

  • to decode series of dots and dashes to ASCII characters
  • to match the MORSE „Speed“ of the signal to find out what the shorter dots are and what the longer dashes are in these series.
  • to think about possible „distortions“ that can happen during a MORSE code transmission that will perhaps make it more difficult to decode. Perhaps you can come up with a compensation technique like „what is the most likely letter in the wrongly received word I am looking for here „trans_ission“.
  • to investigate the effects of signals coming from satellites to Earth and what Doppler-Shift means for MORSE code signals

And in the end, you will also have working code you can use at home to see what your neighboring ham radio Operators are talking about. And more interestingly, what satellites are sending you down!

 

Coding 4 – VISual MAth: Command Line Interface – Create an easy to use command line interface for visma

Maths gets tougher once the numbers start to vanish, and alphabets start to take over?

‚VISual MAth – visma‘ aims to make life simpler, visma provides step by step solution to basic algebraic equations. The project aims to help people solve complex problems and learn. It can help students in learning concepts. It can be used in research-oriented, double-checking the solution to problems.

There are two types of application users, the ones who like the GUI and the ones who like the CLI. The GUI for visma has already been made. But there are many ‚cool‘ people who tend to stick with the terminal. The goal is to make visma accessible from the terminal/console. More on how this is to be done can be seen here.

The goal will be

  • to create a simple CLI using python
  • to give an appropriate output for an equation/expression query
  • to display a graph-plot in the CLI (Bonus points)

 

Coding 5 – OrbitDeterminator: Satellite Tracking – Take a given a TLE of any satellite and plot its orbit

Our team at AerospaceResearch.net is trying to track satellites in orbit to know anytime where they are. This shall help the satellite operator, especially for CubeSats. And one of the best ways to have a quick and effective overview of your satellite is to have it displayed. We don’t have a nice looking way to do that yet, so you can help us and thus the Operators by coding a satellite 3d-orbit representative. As an Inspiration, have a look on http://stuffin.space/ and then apply something like this to the data we have. So if you love 3d graphics, this is your task.

We will give you positions in (x, y, z, t) or in longitude, latitude, time tuples, and you will display the tracks. It sounds easy, but it will be crowded up there so think about how to give Operators a quick Access to the important data they need „where is my satellite and where will it be near other satellites, that could harm it“.

The goal will be

  • to code a visual representation of Satellite Orbits
  • to make the data understandable quickly by the Operator
  • to make it look nice (we know it is a vague requirement, but the design is important here)
  • to think about filters how to select your satellite and find it within so many other satellites.

In the end, you should have a great way to see where all satellites are, how they move and see the full picture that Earth is covered in layers and layers of Satellite Orbits.

Documentation/Training 1 – VISualMAth: Install and run visma and document it in a step-by-step tutorial

To get started developing with visma the first and foremost thing would be to run it yourself. Here is a quick guide of what visma is capable of.

The goal will be

  • to explore all features of visma
  • to add documentation for newly added features (CLI)
  • to update wiki elaborating how to use these features
  • to create a demo gifs on how to use visma

Documentation/Training 2 – Design a representation where our tracked satellites are and what ground station had contact with it

Like the already mentioned coding part of where the satellites we tracked are right now, it would be really interesting for us to see, where the satellite data was received on the ground. So whenever a satellite is transmitting data, only a few ground station can actually receive it and after a while, the satellite passed it and the ground station will lose contact again.

We would like you to design, how this could be represented. We have not yet spent much time in thinking about it, so it will be a wildcard for you to digitally sketch how you think it would be visually stunning on the one side, but also easy to understand in less than 5 seconds of watching it.

The goal will be

  • to find ways in how this can be represented in an awesome way
  • to find the right tools how to implement it and tell us the pros and cons of it
  • to define the data you will require from the database of satellites and ground stations

In the end, we want to proudly show where people on earth are using our ground Station and tell them where they helped to receive data from space that is now hopefully making their lives better.

Documentation/Training 3 – OrbitDeterminator: Build Orbit Determinator and make a step-by-step

Our team, and hopefully you soon, is working on the OrbitDeterminator programme. It is a programme to find the orbit of satellites by just measuring their locations at a few points in time. It is already a mighty Python tool, but not that easy to handle yet.

So you would really help us by writing a step-by-step Installation guide. For this, you will Need to build and install the code and also run the examples. Perhaps you will curse us, that it is too difficult or you think everything is good as it is. But you will give us Feedback about it and then write a step-by-step tutorial.

The goal will be

  • to build and install OrbitDeterminator on your local Computer(s)
  • to familiarize yourself with it and the samples (we will help)
  • to give us feedback on so-called „issues“ on Github
  • to write the step-by-step tutorial
  • to make us follow the tutorial and give you feedback

In the end, we want to have a great new documentation that makes it easier for everyone to use our programme!

Outreach/Research 1 – Find a name for our DGSN!

The Distributed Ground Station Network, ufff, that is quite a mouth full to pronounce. It is describing our project very nicely, but we know it is a bit long. So perhaps you like finding words that describe it better or like to BACKRONYM Projects. So this is a simple task for all of you Scrabble fans out there.

Find us a new name! We leave it up to you how you approach this task, but all of you will need to understand what the Project is about and also interview us Team members. This will help you find a better name.

The goal will be

  • to suggest a new name for our DGSN.
  • to understand the project goal
  • to interview the team members
  • to think of how you want to approach it and why? (will you ask other People? Will you do a market Survey?…)
  • think internationally, some words have a different meaning in different languages. Some even are offensive and we don’t want to be offensive to anyone!

In the end, we will all discuss the suggested names and with some luck, we will rename the project and it will be your Suggestion!

 

Quality Assurance 1 – Report a bug in OrbitDeterminator

No one is perfekt and they make mistakes. We know that because we have bugs in our OrbitDeterminator. We define bugs as in „the code should run here but it exists and we don’t know why now!“.

So find one bug and report it with the issue system.

The goal will be

  • to install and run the programme.
  • to play with the sample files by just running it
  • to ask the Team members to provide Input data that you can use
  • to find a bug by using the Programme or by also understanding the code
  • to Report it with an issue that explains the bug in detail
  • to NOT fix it! (we would be happy if you help, but this task is about finding and Report it)

In the end, each found and reported bug is one bug we can tackle together to make the programme work better.

Quality Assurance 2 – Fix 1 coding violation

We all do it, it is late, we just want to finish the code and go home or sleep, so we just throw the first best idea into lines of code, run it, it works and then we push it to the repo. Most likely, the coding style rules are violated. And the next morning, even you don’t know exactly what you coded there and cannot read it.

So for the teamwork, it is essential that everyone can always read and understand your code. That means, some style-guidelines need to be followed, be it simple things like writing Python code „Pythonic“ or writing function names all capital letter or else. So you can help here by finding and Fixing These violations. You select any of our programmes on Github and make a pull-request for us to take your fix.

The goal will be

  • to find and fix one coding violation
  • for that you need to know our style Guidelines or General style guidelines and apply it
  • to fix 1 violation, and we Count as 1 the following
    • if you find „tabs“ where „spaces“ Needs to be done in python, it is to be changed for the full .PY file!
    • if you find naming convention violations, then fix all names by refactoring

In the end, we all will thank you so much for it and will be able to work faster and still understand the code better in some years time!

Quality Assurance 3 – Check our Python programmes on strange Operating Systems (BSD, SuSe Linux, Raspberry Pi, Orange-Pi, etc…)

We like to use Python for our programmes because it is independent of the Operating System and we want to be able to run it on Laptops with Linux and Windows, as well as on micro Computers like Raspberry Pi. The challenging part is that not all libraries like to work on all the different OS or are not even available. And we cannot check all „strange“ OS out there, because we don’t have them to Play with.

So your task will be to check the OrbitDeterminator or the DirectDemod on at least one „strange“ OS if it can run the example file. You Report back the OS and other config Parameter. This will allow us all to have an overview of where and how our Programme is „runnable“.

The goal will be

  • to find a „strange“ OS and Hardware you can use for the test
  • to install and run our OrbitDeterminator or DirectDemod Programme (one is enough, but you can do more)
  • Report back the result as an issue on Github that includes the Parameters of the OS and Hardware.

In the end, we hope to find the lowest suitable requirement to run our programmes on the Distributed Ground Station Network and making it accessible for everyone, even with a low budget.

Quality Assurance 4 – Validate the results of the SGP4 propagation model with Interpolation.

One fine day, a guy sends a pull request to our github repository. The requests contain the code of the SGP4 propagation model and a member of AerospaceResearch.net merged it by mistake. We tried to search the person but there was no clue of him as he deleted his github account. Till now we can not comment on the authenticity and quality of the code as we don’t know if the code works or not. Maybe the guy wants to help us or maybe it is a prank. We can not find him, all we can do is validate the code. Now, you being pro-active took the responsibility to validate the results of the propagation model and to show the results by plotting the difference in the outputs if there is any. You have to validate the propagation model with Interpolation which was already written by a member of the organisation.

SGP4 code is here.

Interpolation code is here.

The goals will be

  • Validate the results of the SGP4 propagation model with the results of Interpolation.
  • State the validity of the code.
  • Show your observations, understanding and the path you followed.
  • Prove why your observation is correct.

Note:

  • We don’t expect you to write any code for this but if you want to we will not resist.
  • You have to submit a report stating your understanding, observations and why you are correct. In the end, you should be able to defend your work.

In the end, we hope you will be able to find out if that person really wants to help us or it was a prank.

 

Design 1 – Layout the website by finding the right services (webpage, forum, chat, etc) you think we would need for AerospaceResearch.net

We grew as a team of space enthusiasts during the last years, but we kept our sparatanic webpage. We think it is time to change it and we would like to ask you to design a new layout for the website and suggest to us what kind of services we and the community would need.

So the task is pretty easy and the goal is to be more transparent in what we do and how everyone can make space together with everyone. So you can find forum software, interfaces to chats, layouts to include Github and more than you think we really need. You will make the full picture and present it to us. You decide, how you want to make it. You can write a small Report 1-2 pages, or make a video, or code a small prototype. Most important of all is the explanation for why you think we need it and what service we need. And please, use existing and preferable open-source solutions. Our all project is coding programmes for space, not the webpage :).

The goal will be

  • to layout the new Webpage as you think we need
  • to interview the teammembers, what they want to have
  • to find the minimum baseline requirement of our Needs
  • to find existing and preferable open-source solutions
  • to present it to us in your documentation style you like (text or video or prototype)

Design 2 – Build a website for AerospaceResearch.net

As a next step to the previous task, to layout the website for AerospaceResearch.net, we ask you here to create it! This is not just coding, this is filling it with life. We know that our project doesn’t have wide visibility amoung our „target group“. This is also mainly due to not having all of our information on the webpage yet and more importantly not the „right“ information there.

So we ask you to create content for the page. Have sections for each programm and describe it there, include screenshot, link to the download, interview our team and more. Just be creative.
We know we have a lot of content, so your goal will be to pick one (1) aspect and do that good!

The goal will be

  • to create content for the website
  • to concentrate on one aspect
  • to create text, screenshots, interviews, videos or animation as you think is interesting explaining the section.

You will learn so much about what we do and get to know many diferent people from many cultural backgrounds and their stories. And we will be so glad to finally share it to everybody.

Design 3 – Design arts that can be put on our ground station hardware

We are building small ground stations. For us technical People, they look awesome already because it is technology we like. But we also know that more People would like them when they would look better, more arty.

So we would offer all you artists out there the Chance to use free area on our ground Station Hardware for art! You decide what you would like to have on it as Long as it doesn’t interfere with the purpose of being a ground Station. So you can design Stickers we print and stick it on the beam. You can design 3d printed parts that we attach to it. You can design a cutting pattern, we cut to the boxes and will look like an engraved logo. The common theme would just be „making space together!“ and you decide of what you make out of it.

The goal will be

  • to create arts that we can put on the ground stations
  • to realize the art under the themre „making space together“
  • to not interfere with the purpose of the ground station (less then 1kg, Fitting on the free spaces, harmless for People, animals and the environment!)

In the end, your art could be put on many ground stations.

Design 4 – Design poster for AerospaceResearch.net

AerospaceReseach.net is not so an old organisation. This simply implies that the organisation needs some publicity. So, here is a task for you, design any poster from the below-given list using an open-source tool such as GIMP. You can take poster size as A3.

The list of posters is as follows:

  1. Poster about the organisation: how it works, what we do, members, achievements, etc.
  2. Poster about the work regarding GSoC: what are the projects, work on the projects, etc.
  3. A poster on GCI: about the event, tasks given to students, selected students, etc.

The above-given ideas are intuition/approach to move forward, you are allowed to improvise it. Your own ideas will also be appreciated if it is related to the organisation.

The goals will be

  • maintain the uniformity by using open-source tools only such as GIMP
  • show your designing skills
  • wild space: be creative and impress us

Note: Work done using open-source tools will only be accepted.

In the end, we may post your work on the social media.