Skip to content

THIS REPOSITORY HAS BEEN MOVED TO GITLAB

License

GPL-3.0, GPL-3.0 licenses found

Licenses found

GPL-3.0
LICENSE
GPL-3.0
COPYING
Notifications You must be signed in to change notification settings

spel-uchile/SUCHAI-Flight-Software

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Nanosatellite Flight Software

âť— IMPORTANT NOTE: This repository has been moved to GitLab

Build Status GitHub tag license

SUCHAI Flight software was originally developed to be used in the SUCHAI nanosatellite (1U CubeSat). SUCHAI was launch into orbit in June 2017 and has been working properly.

The main idea was to design a highly modular and extensible flight software architecture to help the development of CubeSats projects that are composed by large and heterogeneous teams. Provides a ready-to-use nanosatellite flight software, a flexible way to add/remove functionalities or paylodads, and supports an incremental development.

The software architecture is based on the command processor design pattern. Developers can extend the functionalities by adding new commands to the system (with low impact in the whole software) or adding new clients that can request any of the available commands depending on their custom control strategy. Commands and control modules can be added or removed with zero impact in the software main functionalities. Once a command is implemented, it can be used in the software itself and also as a telecommand.

Current implementation uses the LibCSP to communicate subsytems and the ground station. Linux port can use the LibCSP with ZMQ interface.

Visit http://spel.ing.uchile.cl to get latest news about SUCHAI project. Visit http://www.freertos.org/ to get FreeRTOS source code and documentation. Visit https://github.com/libcsp/libcsp to get the latest version of the LibCSP.

More:

Key features

  • Highly extensible and modular command processor architecture.
  • Ported to FreeRTOS and Linux.
  • Designed for medium-range microcontrollers such as ATMEL AVR32, Espressif ESP32.
  • Ported and tested on Raspberry PI.
  • Can be used as Flight Software, Ground Station Software or general purpose embedded system firmware.
  • Flight inheritance: SUCHAI I (Jun 2017)

Build status

Last architecture extracted

Build notes

SUCHAI flight software was designed to run in multiple embedded architectures using FreeRTOS. It was also ported to Linux to facilitate the development and debugging. Currently, it has been tested in the following OS/Architectures:

  • Ubuntu 18.04, 20.04 (x86_64)
  • ArchLinux, Manjaro Linux (x86_64)
  • Raspbian 9 Stretch, 10 Buster (RPi 3, 3+, 4, ZeroW)
  • FreeRTOS (ESP32, Nanomind A3200 AVR32UC3)

Linux build

Requirements

Linux's installation requires the following libraries:

Library name Ubuntu and family Archlinux and family
cmake >= 3.16 cmake cmake
gcc >= 7.5 gcc gcc
make >= 4.1 make make
python2 >= 2.7.17 python python2
zmq >= 4.2.5 libzmq3-dev zeromq
pkg-config >= 0.29.1 pkg-config pkgconf
(opt) sqlite >= 3.22 libsqlite3-dev sqlite
(opt) libpq >= 10.17 libpq-dev libpq-dev
(opt) cunit >= 2.1.3 libcunit1-dev postgresql

Clone

Clone this repository

git clone https://gitlab.com/spel-uchile/suchai-flight-software.git
cd suchai-flight-software

Build

Use the cmake to easily install internal dependencies, create the settings header include/config.h and build the example app in apps/simple:

cmake -B build
cmake --build build

Use the -DAPP option to build another app inside the apps directory

cmake -B build -DAPP=simple
cmake --build build

Use -HL or check include/config.h.in to learn how to customize the build. Pass arguments with -D option. For example, select the log level and the storage mode with -DSCH_LOG and -DSCH_ST_MODE

cmake -B build -HL
cmake -B build -DSCH_LOG=INFO -DSCH_ST_MODE=SQLITE
cmake --build build

Run

Go to the app build folder ex: cd build/apps/simple and execute

cd build/apps/simple
./suchai-app

The output should be similar to

[INFO ][1625522858][Console] 
______________________________________________________________________________
                     ___ _   _  ___ _  _   _   ___ 
                    / __| | | |/ __| || | /_\ |_ _|
                    \__ \ |_| | (__| __ |/ _ \ | | 
                    |___/\___/ \___|_||_/_/ \_\___|
______________________________________________________________________________


[INFO ][1625522858][FlightPlan] Started
[INFO ][1625522858][Communications] Started
SUCHAI>

Type help to see the list of commands. Type \exit to exit the software.

Using ZMQ interface

In Linux, LibCSP uses the ZMQ interface to communicate different nodes. To pass messages between zmq_hub interfaces, we required a ZMQ Forwarder Device (Proxy) running in background. To start the ZMQ Forwarder server:

cd sandbox/csp_zmq
python3 zmqhub.py

It is possible to change the default ports (8001, 8002) and activate a monitor socket (8003) that will print all messages to stout using:

cd sandbox/csp_zmq
python3 zmqhub.py [-h] [-i IN_PORT] [-o OUT_PORT] [-m MON_PORT] [--mon] [--con]

A test ZMQ CSP Node is also available as an example, so it is possible to test the communication between the node and the SUCHAI Flight Software. Run the example node zmqnode.py using:

cd sandbox/csp_zmq
python3 zmqnode.py

Default parameters should work directly, but it is possible to set the ports and zmqhub.py ip address to connect to remote nodes through TCP/IP.

cd sandbox/csp_zmq
python3 zmqnode.py [-n NODE] [-d IP] [-i IN_PORT] [-o OUT_PORT] [--nmon] [--ncon]

Now you can try to send a command to the Flight Software from the example ZMQ CSP Node, for example the com_ping to the node 1 (Flight Software node) on port 10 (csp ping).

cd sandbox/csp_zmq
python3 zmqnode.py 
Namespace(in_port='8001', ip='localhost', ncon=True, nmon=True, node=9, out_port='8002')
Reader started!
Writer started!
<node> <port> <message>: 1 10 com_ping
<node> <port> <message>: b'\x00\xca\x9d\x82'
829dca00
2191378944
Header S 1, D 9, Dp 55, Sp 10, Pr 2, HMAC False XTEA False RDP False CRC32 False
b'\xc8' S 1, D 9, Dp 55, Sp 10, Pr 2, HMAC False XTEA False RDP False CRC32 False

Refs:

Build for other architectures

Currently the flight software supports the following architectures (some platforms may have limited or under development support):

First install the drivers for the desired architecture python3 compile.py <OS> <ARCH> --drivers

  • Nanomind A3200: python3 compile.py FREERTOS NANOMIND
  • Atmel AV32UC3 Xplained board: python3 compile.py FREERTOS AVR32 --comm 0
  • Raspberry Pi: python3 compile.py LINUX RPI
  • Esspressif ESP32: python3 compile.py FREERTOS ESP32 --comm 0 --fp 0 --hk 0 --st_mode 0

Please refer to the documentation for more details

How to cite

Plain text

C. E. Gonzalez, C. J. Rojas, A. Bergel and M. A. Diaz, "An architecture-tracking approach to evaluate a modular and extensible flight software for CubeSat nanosatellites," in IEEE Access.
doi: 10.1109/ACCESS.2019.2927931
keywords: {cubesat;embedded software;flight software;nanosatellites;software architecture;software quality;software visualization;open source},
URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8758807&isnumber=6514899

Bibtex

@article{gonzalez2019, 
author={C. E. {Gonzalez} and C. J. {Rojas} and A. {Bergel} and M. A. {Diaz}}, 
journal={IEEE Access}, 
title={An architecture-tracking approach to evaluate a modular and extensible flight software for CubeSat nanosatellites}, 
year={2019}, 
volume={}, 
number={}, 
pages={1-1}, 
keywords={cubesat;embedded software;flight software;nanosatellites;software architecture;software quality;software visualization;open source}, 
doi={10.1109/ACCESS.2019.2927931}, 
ISSN={2169-3536}, 
month={},}

Contact

issue tracker Use the issue tracker to submit questions, requirements and bugs.

SPEL Team the SPEL team at Twitter to get latest news about the SUCHAI project