All Projects → Cubium → Cubium

Cubium / Cubium

Licence: MIT license
🛰️ Minimalist software system for CubeSats and high-altitude balloon systems

Programming Languages

C++
36643 projects - #6 most used programming language
python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to Cubium

CubeSatSim
CubeSatSim, the AMSAT CubeSat Simulator
Stars: ✭ 201 (+548.39%)
Mutual labels:  satellites, cubesat
gr-quetzal1
This repository includes the UHF specifications for Quetzal-1, information on demodulating and decoding beacons from the satellite, as well as a graphical application to view beacon data.
Stars: ✭ 19 (-38.71%)
Mutual labels:  satellites, cubesat
spacelab
SpaceLab Organization Info
Stars: ✭ 14 (-54.84%)
Mutual labels:  satellites, cubesat
obdh2
On-Board Data Handling Module 2
Stars: ✭ 12 (-61.29%)
Mutual labels:  cubesat, flight-software
keeptrack.space
🌎📡 TypeScript Astrodynamics Software for Non-Engineers. 3D Visualization of satellite data and the sensors that track them.
Stars: ✭ 61 (+96.77%)
Mutual labels:  satellites
PWSat2OBC
Source code of the PW-Sat2 On Board Computer (OBC) software.
Stars: ✭ 53 (+70.97%)
Mutual labels:  cubesat
spacetech-kubesat
IBM Space Tech - Cognitive Autonomous Framework
Stars: ✭ 75 (+141.94%)
Mutual labels:  cubesat
DemonEditor
Enigma2 channel and satellite list editor for GNU/Linux and macOS.
Stars: ✭ 80 (+158.06%)
Mutual labels:  satellites
kubos-old
An open source platform for satellites
Stars: ✭ 68 (+119.35%)
Mutual labels:  cubesat
AstriaGraph
A tool for visualizing Resident Space Objects (http://astria.tacc.utexas.edu/AstriaGraph/)
Stars: ✭ 31 (+0%)
Mutual labels:  satellites
google map satellite download
谷歌地图卫星影像下载,合并,导出geotiff工具
Stars: ✭ 24 (-22.58%)
Mutual labels:  satellites
gr-satnogs
SatNOGS GNU Radio Out-Of-Tree Module
Stars: ✭ 38 (+22.58%)
Mutual labels:  satellites
satellite-passes-api
query next satellite passes 🛰️
Stars: ✭ 23 (-25.81%)
Mutual labels:  satellites
trusat-frontend
The React codebase for space-sustainability tool TruSat
Stars: ✭ 31 (+0%)
Mutual labels:  satellites
HAMRadio
How-To and Wiki pages for PW-Sat2 Ground Segment equipment and software dedicated for radio amateurs.
Stars: ✭ 21 (-32.26%)
Mutual labels:  cubesat
Star Tracker
Development of SPEL - Open Star Tracker (SOST) - Will be tested in our new space projects
Stars: ✭ 38 (+22.58%)
Mutual labels:  cubesat
Mercury-GS
An Open Source Program that allows users to interact with a Spacecraft in a lab environment, pre-launch.
Stars: ✭ 18 (-41.94%)
Mutual labels:  cubesat
1KCubeSat Hardware
Hardware design files for my $1000 CubeSat.
Stars: ✭ 65 (+109.68%)
Mutual labels:  cubesat
Picosat Horus
Desenvolvimento e produção de um picossatélite para realizações de medições atmosféricas e envio de telemetria por RF.
Stars: ✭ 26 (-16.13%)
Mutual labels:  cubesat
Fprime
F' - A flight software and embedded systems framework
Stars: ✭ 8,642 (+27777.42%)
Mutual labels:  flight-software

Cubium

Build Status

Cubium is a free and open-source flight software for Linux-based spacecraft systems. Cubium allows for a more standardized and streamlined method of handling systems with many connected components by providing the neccesarry network to allow automatic discovery and communication between components. Developed with undergraduate CubeSat teams using systems such as Beaglebone Blacks and Raspberry Pis in mind, Cubium's purpose is to lower the bar of entry for satellite development.

Cubium is designed using the Space Plug-and-play Architecture (SPA), a specification for a kind of modular satellite software architecture. It has a proven mission-success track record on Air Force and Space Dynamics Laboratory payloads.

For a fun introduction on the inner workings of Cubium, see this illustrated writeup.

For a very detailed look into the machinations of SPA in general, see Jacob Holt Christensen's dissertation.

Project Status

  • Version Alpha 2.0.0
    • Added interfacing with Python components
    • Major bugfixes
    • Architecture ready for flight testing
  • Version Alpha 1.2.0
    • Support for sending strings between components
  • Version Alpha 1.1.0
    • Finalized architecture for software demo shown at SmallSat conference
  • Version Alpha 1.0.0
    • All necessary framework completed for support of basic component systems.
  • Version Alpha 0.0.6
    • Successful transmission of SPA messages across processes via socket communication
  • Version Alpha 0.0.5
    • Major backend refactoring of SPA Messages
  • Version Alpha 0.0.4
    • Added a basic subscription service
      • Direct component-to-component subscription
      • Non-prioritized publishing
    • Improvements to message handling
    • Additional tests for components
  • Version Alpha 0.0.3
    • Basic implementations of:
      • Local SpaMessages
      • Components
      • Local Subnet Manager
  • Version Alpha 0.0.2
    • Debian dev environment complete
  • Version Alpha 0.0.1
    • Planning API's and project planning

Getting Started

Developer Tools

Cubium relies on a handful of developer tools. The following is a list of things we'll be using:

  • Vagrant - Virtual development environment
  • Git - Version control system
  • Google Test - Unit testing framework
  • Doxygen - Documentation generator
  • CMake - Build system automation

Set up Vagrant

Cubium uses Vagrant to create a development environment to match the devices that Cubium will run on. It also eliminiates "well, it works on my system" bugs.

For instructions on getting the dev environment up and running, see the wiki page

Build Project

TL;DR

  • Run CMake in project directory cmake .
  • Run generated makefile make [optional-target]

Cubium uses CMake for a build system. Makefiles are generally platform-dependent, so CMake generates a different Makefile for each system in order to allow for cross-plaform functionality.

Build Docs

TL;DR

  • Run Doxygen with project doxyfile doxygen ./Doxyfile
  • View your docs. They should now live in docs/

Cubium uses the documentation generator Doxygen to build documentation. Annotated source code is parsed by Doxygen to generate LaTeX and HTML files.

Doxygen is configured with a file titled Doxyfile.

  • Build Documentation
    • Invoke commandline tool
      • doxygen Doxyfile

This will read all configuration options from the Doxyfile, find and parse the source code, and generate the documentation.

If the documentation is successfully built, there should be a new directory title docs/ that should contain both HTML and LaTeX documentation.

  • Read Docs
    • Open up docs/html/index.html in your web browser to browse docs

Running Tests

Cubium tests use the Google Test testing framework for unit testing. Test test test.

  • To run test suite:
    • Generate a makefile with CMake cmake .
    • Build tests with makefile make runTests
    • Run test executable ./runTests

Testing

Cubium uses Google Test for unit testing and CMake for a build system. The short version of running tests is this:

Classes should be kept small and have functioning unit tests. When adding a new header file for a class, a header file of the same name should be added to the test/ directory.

To add a new class to the project:

  • Create header file my_class_name.hpp (File names should be snake case - lowercase words seperated with underscores)
    • Define class
    #ifndef MY_CLASS_NAME_HPP
    #define MY_CLASS_NAME_HPP
      class MyClassName{};
    #endif
    • Must have include guards
    • Class name should be UpperCamelCase, where each first letter of a words is capitalized. Including the first word.
  • Add new testing file test/my_class_name.hpp
  • Write tests for your class
    #include "../path/to/my_class_name.hpp"
    
    TEST(MyClassName, myMethod){
      MyClassName myClass;
      EXPECT_EQ(myClass.myMethod(),0);
    }
    • Be sure to include class header in test file
  • Include your test header in main test file
    • Open test/gtest_main.cpp
    • Include your new test header file
  • Hooray! Now you can run your tests! :D

Documentation

Cubium uses Doxygen to build documentation from source code. This means that one can add comments with a special format in the code so that Doxygen may build pretty HTML docs that can be referenced by all other developers and users.

Here is an example of what this might look like to document a function.

  //! I am the brief message, I give a short overview of what a method does. I need to be followed by a whitespace

  //! \param myParam - I describe myParameter
  //! \return - I describe a return value
  bool example(int myParam){return true;}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].