Git Product home page Git Product logo

auris's Introduction

AURIS

A new, open source mission control system in Haskell

A mission control system is the ground software that controls satellites and space probes. An example of an actual operational system can be seen here (example from the European Space Operations Center ESOC, on the monitors): ESA's SCOS-2000 or from the German Space Operations Center (GSOC): DLR GECCOS

First Screenshots

Telemetry Frame Display:

TM Frame Display

Telemetry Packet Display:

TM Packet Display

Graphical Parameter Display:

TM Parameter Display

Building

Currently, building via stack is recommended. Cabal new-* commands should also work, but currently there is no cabal.project file available.

There are some dependencies need beforehand (for Debian based systems):

sudo apt-get install build-essential autoconf libxft-dev libfltk1.3-dev libx11-dev -y

There are 3 stack.yaml files provided:

  • stack.yaml: this is for developing with non-optimized code
  • stack_opt.yaml: this is for the optimized build (much slower)
  • stack_llvm:yaml: optimized build via LLVM (much much slower)

Some users have reported build issues with fltkhs. As a workaround, you can just install fltkhs before building AURIS.

git clone http://github.com/deech/fltkhs-hello-world
cd ./fltkhs-hello-world
stack install --flag fltkhs:bundled
cd <path to AURIS checkout>
stack build

Data Processing

The architecture of the data processing backend looks like this:

The real code is a bit more involved and complicated and is constantly growing. All data processing is currently done in 'esa-space-protocols' which is the main library

User Interface

The libraries are designed so that they will be able to be used in a variety of situations: client/server, standalone as one binary, use the libraries alone in other projects etc.

A standalone executable with a GUI is called AURISi (for AURIS integrated) in the 'aurisi' directory. Currently all it does is connect to a simulator via NCTRS protocol and display incoming telemetry packets and parameters

The AURISi executable uses FLTKHS (thanks a lot Deech!) for the graphical user interface.

Database

There is a preliminary implementation of a DB backend for events (thanks to Paolo and Matthias), but it is currently not used in AURISi (I had no time to add it). There is also an implementation of storing TM Frames, but due to a bug in Selda it is not present in this repository, but in Paolo's git account and will be merged at a later point in time.

The idea is to support at least 2 backends: sqlite for testing campaigns and Postgres for MCS/CCS activities.

Satellite Information Base

Currently the MIB library is under work to load satellite information from a MIB in SCOS-2000 Format (Version 6.9). It may be, that a CDM library for EGS-CC based configurations will follow (probably).

Protocols

The currently working protocols are NCTRS (TC and TM), C&C (currently only TM) and EDEN (currently only TM). Since NCTRS is not that common anymore, other protocols will also be supported.

Work has already begun on the implementation of an SLE library, to be able to connect to ground stations without relay/routing software as for NCTRS. The SLE implementation is in a very early state and currently not usable and can be found here: esa-sle

Notes

  • The hashtables library has been forked and directly put into this mono-repo. What has been modified is that an immutable hash table type has been added (but only for the Basic ST hash table), which can be obtained by calling unsafeFreeze. This allows to pass the HashTable out of the ST monad, but also only read-only functions are allowed. Currently, only ilookup, fold and toList are implemented.
  • The timer functionality is still undecided. Currently, timer-wheel is used, but this has not been updated for newer GHC versions. Probably updatable-timers from Paolo will be the go-to, otherwise probably some posix timers or similar would have to be used (if portable). GHC's timer in the event manager is only available on Linux.

auris's People

Contributors

oswald2 avatar a686706 avatar paolino avatar jvanbruegge avatar mputz86 avatar dischoen avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.