IMPORTANT NOTE: This repository has been moved to GitLab
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.
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:
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
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:
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.
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).
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
Use the issue tracker to submit questions, requirements and bugs.
the SPEL team at Twitter to get latest news about the SUCHAI project
Nanosatellite Flight Software
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
Build status
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:
Linux build
Requirements
Linux’s installation requires the following libraries:
Clone
Clone this repository
Build
Use the
cmaketo easily install internal dependencies, create the settings headerinclude/config.hand build the example app inapps/simple:Use the
-DAPPoption to build another app inside theappsdirectoryUse
-HLor checkinclude/config.h.into learn how to customize the build. Pass arguments with -D option. For example, select the log level and the storage mode with-DSCH_LOGand-DSCH_ST_MODERun
Go to the app build folder ex:
cd build/apps/simpleand executeThe output should be similar to
Type
helpto see the list of commands. Type\exitto 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:
It is possible to change the default ports (8001, 8002) and activate a monitor socket (8003) that will print all messages to
stoutusing: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.pyusing:Default parameters should work directly, but it is possible to set the ports and
zmqhub.pyip address to connect to remote nodes through TCP/IP.Now you can try to send a command to the Flight Software from the example ZMQ CSP Node, for example the
com_pingto the node1(Flight Software node) on port10(csp ping).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> --driverspython3 compile.py FREERTOS NANOMINDpython3 compile.py FREERTOS AVR32 --comm 0python3 compile.py LINUX RPIpython3 compile.py FREERTOS ESP32 --comm 0 --fp 0 --hk 0 --st_mode 0Please refer to the documentation for more details
How to cite
Plain text
Bibtex
Contact