Data analysis from SatNOGS network

Hello everyone, Xabi here.

@redb and I prepared a poster about onboard artificial intelligence for OSCW (if you don’t know what I’m talking about, I wrote a blog post which summarizes our work

In any case, during the workgroup we looked at ways to take advantage of this new tools and we came up with an interesting idea which involves SatNOGS. We want to extract telemetry data from the SatNOGS network and then analyze it to achieve the following:

  1. Create a model for Cubesats in LEO which can detect failures and even predict them.
  2. Integrate the model into a Cortex-M-like MCU so it can be used onboard without depending on GS comms.

I would like to get some feedback from you because I don’t have any experience with SatNOGS. Is this kind of data available? What do you think about this idea?



Sounds interesting. Well if you look at the DB you might have a lot of test data :stuck_out_tongue:

Hi @crespum – good to meet you again. :smile: This is a really interesting idea.

There has been discussion and work for a while on converting the observation data held in the SatNOGS database into telemetry. This depends not only on the quality of the individual observations, of course, but also on having a way to decode the data. My understanding is that right now, there are a small handful of satellites (~ 4 I think) for which there are decoders. The work is being described in a couple of threads:

Two of the dashboards that @DL4PD created for the Elfin satellites are at:

To quote @cshields’s post:

If a satellite has a struct (or multiple structs even) associated with it, they will appear on the satellite’s page. You can see an example of this here .

So much for initial display of the data…

What I understand of the current process for converting observations to telemetry:

  • creating a Kaitai struct for the satellite you want to work on; this depends on knowing how the satellite builders have opted to encode telemetry, which isn’t always published
  • getting observtions from the SatNOGS database
  • converting those observations to telemetry data using Kaitai (I think, from seeing some conversations in IRC/Matrix, that there are Python scripts people have been using to do that part, but I’m not sure if those have made it to any of the repos…maybe @kerel / @DL4PD / @cshields can shed some light?)

And as for displaying the data – the next steps are to put those data into InfluxDB, which is used as a data source by Grafana. It may be that access could be opened up to the data in InfluxDB itself, but I don’t know if that has been considered, or if the work on Grafana/InfluxDB is far enough along to do that just yet.

As an initial step, you may want to consider using the existing decoders for the Elfin or the CAS-4A satellites; this would help get the pipeline down. I’d be happy to help with that…I’ve been wanting to play around with the telemetry data for a while now. Do you have a repo set up for this project?

1 Like

The kaitai-compiler outputs codes in multiple language. Since SatNOGS uses a lot of python scripts already this was also the choice for the decoders. You only need to dig into python itself if you want to implement user processes, but this is nothing to start with :wink:
I am writing on some articles to make the entry level a little lower, but I’m a bit short at time…
If you (or anyone else) has questions on this: feel free to ask!

You simply need to “Download” a set of the telemetry for the satellite of your choice from satnogs-db. Simply follow the link for downloading the telemetry frames and choose a timeframe (last week / last month / everything). There’s a bit of manual stripping and converting needed at the moment to get binary data to feed the kaitai decoder (maybe you could also use @kerel’s scripts to fetch telemetry from db to get already converted binary data files). To get an idea how to start you can have a look at a relatively (it’s easy for me to say that, because I have already done this - but again: feel free to ask :wink: ) simple struct on my github account. There’s a lot of WIP and we’re all making a lot of progress with this. There’s a LSF repo in the pipeline to concentrate all that work.

To get such nice graphs as I did for the ELFINs you will also need a lot of work in grafana itself - and, of course, an account to do this :wink: But if someone is really interested, I bet you can get one from @cshields.

This is really something is missing in SatNOGS and I changed priorities I had myself on other issues to get this rolling. It also is a lot of work, as you can imagine that 500+ LOC in a decoder struct might have some errors or issues and sometimes you might have to start over again and again…

So: any help is really appreciated!

Here’s the github account I am using for this:
The “simple example” :wink: I was talking about is located in the ax25_frame_parser.ksy.

Don’t hesitate, just start! You will see there’s a steep learning curve and your experience grows rapidly!



Thanks for the help @DL4PD. Sounds to me like we will have a lot of questions as soon as we get started!

@saintaardvark I agree with you, the first step would be setup and understand the pipeline to decode telemetry for some satellite, let’s say the Elfin. I’ve opened an empty repo in Gitlab to host the code (named Polaris because the end goal is to identify special points on a huge amounts of data). I’ll start digging around this weekend!