No description, website, or topics provided.
Branch: master
Clone or download
Lucas, John P Lucas, John P
Lucas, John P and Lucas, John P Fixed COSMOS install and verified using Vagrant 2.2.2 and Virtual Box…
… 5.2.22;
Latest commit 4a9d9f2 Feb 8, 2019

NASA Operational Simulator for Small Satellites

Getting Started

This repository allows the user to generate a VM in which to develop and test utilizing Vagrant and Virtual Box enabling every user to have an identical environment.

Various open source packages have been utilized and will be installed, these are explained minimally below:

  • 42 - Spacecraft dynamics and visualization, NASA GSFC
  • cFS - core Flight System, NASA GSFC
  • COSMOS - Ball Aerospace
  • ITC Common - Loggers and developer tools, NASA IV&V ITC
  • NOS Engine - Middleware bus simulator, NASA IV&V ITC


Each of the applications listed below are required prior to performing the installation procedure:


  1. Open a terminal
  2. Navigate to the desired location for the repository
  3. Clone the repository
  4. Navigate to /nos3/support
  5. Run vagrant up and wait to return to a prompt
  6. Run vagrant reload and wait for the VM to restart
  7. Login to the nos3 user using the password nos3123! and get to work!


In both CentOS and Ubuntu, scripts are located on the desktop that enable the user to easily work:

  • - Build FSW and simulators
  • - Launch the ground station, FSW, and simulators
  • - Safely stop all components

Directory Layout

  • ~/nos3/ contains the repository at the time of the build locally in the VM.
    • /apps - the open source cFS apps
    • /build - the unarchived build directory
    • /cfe - the core flight system (cFS) source files
    • /docs - documentation related to cFS
    • /osal - operating system abstraction layer (OSAL), enables building for linux and flight OS
    • /psp - platform support package (PSP), enables use on multiple types of boards
    • /support - all the files needed for ground stations, ION, and installation
      • /cosmos - COSMOS database files
      • /installers - installation scripts
      • /packages - installation packages
      • /VirtualMachine - files directly releated to the VM, such as desktop scripts and launchers
      • Vagrantfile - main provisioner file used to generate the VM
    • /tools - standard cFS provided tools
    • .gitignore - list of files and directories to be ommitted from git
    • .gitmodules - list of git submodules utilized
    • CMakeLists.txt - top level cmake file to be used from inside the build directory
    • - this file


Work occurs inside the VM, via shared folders, or on the host. This repository is copied into the ~/nos3 directory on installation, but can be moved / shared to a different location. Note that changing this directory will cause the scripts provided on the desktop to malfunction.

Git Flow

The following flow for development should be adhered to when possible:

  • Master

    • Tested and verified using the approved test bed
    • Always demonstration ready and proven
    • Tagged releases should be from this branch
  • Development

    • Always builds and runs
    • The head of the project with the most features
    • Commits direct to this branch are only to be hot fixes and are not desired
  • Feature Branch

    • Have a Gitlab issue describing the end goal and path forward
    • Based out of development and merged back in after testing

Example Flow

Note that the git command line may be substitued for a GUI tool without issue.

  1. Create GitLab issue describing the goal and the path forward
  2. Open a terminal
  3. Navigate to the top level directory of the working tree.
  4. Checkout the development branch
  • git checkout development
  1. Create a new branch for development
  • git checkout -b ##-Example-Issue
  1. Stage and commit work
  • git add *
    • git commit -m "Detailed commit message explaining what changed"
  1. Commit as many times as needed
  2. Checkout the development branch
  • git checkout development
  1. Pull latest development branch
  • git pull
  1. Merge feature branch into development
  • git merge ##-Example-Issue


We use SemVer for versioning. For the versions available, see the tags on this repository.


If this project interests you or if you have any questions, please feel free to contact any developer directly or email


This project is licensed under the NOSA (NASA Open Source Agreement) License.


  • Special thanks to all the developers involved!