The NASA Operational Simulator for Small Satellites (NOS3) is a suite of tools developed by NASA's Katherine Johnson Independent Verification and Validation (IV&V) Facility to aid in areas such as software development, integration & test (I&T), mission operations/training, verification and validation (V&V), and software systems check-out. NOS3 provides a software development environment, a multi-target build system, an operator interface/ground station, dynamics and environment simulations, and software-based models of spacecraft hardware.
The best source of documentation can be found at the wiki or NOS3.
Each of the applications listed below are required prior to performing the installation procedure:
- Option A, you already use Linux
- Git 2.36+
- Linux with docker and docker compose installed
- Option B, deployment of a virtual machine (VM)
Option B only. Will provision a VM with all required packages installed to be used immediately.
- Clone the repository
git clone https://github.com/nasa/nos3.git
cd nos3
- Clone the submodules
git submodule update --init --recursive
- Run
vagrant up
and wait to return to a prompt- This can take anywhere from a few minutes to hours depending on internet speeds and host PC specs It may also be wise at around this stage to shutdown the VM once it starts and to allocate it more resources if possible, preferably at least 4 cores and 8 GB of RAM, preferably 8 cores and 16 GB of RAM.
- In VirtualBox
Devices > Upgrade Guest Additions...
- Wait for this to complete
- Run
vagrant reload
to finish the upgrade - Login to the jstar user using the password
jstar123!
and get to work! - Try building and running following the instructions below
By default the nos3 repository is shared into the virtual machine at /home/jstar/Desktop/github-nos3
- Open a terminal
- Navigate to the nos3 repository
cd /home/jstar/Desktop/github-nos3
- Prepare the environment with COSMOS and docker containers
make prep
- Build FSW, GSW, and SIMS
make
- Run NOS3 including FSW, GSW, and SIMS
make launch
- Stop NOS3
make stop
- Note that COSMOS will remaining running in the background until
make stop-gsw
is done
components
contains the repositories for the hardware component apps- /fsw - cFS application
- /gsw - OpenC3 (or Ball Aerospace) COSMOS database
- /sim - NOS3 simulator
- /support - Optional folder containing a standalone checkout application
fsw
contains the repositories needed to build cFS FSW- /apps - the open source cFS apps
- /cfe - the core flight system (cFS) source files
- /nos3_defs - cFS definitions to configure cFS for NOS3
- /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
- /tools - standard cFS provided tools
gsw
contains the nos3 ground station files, and other ground based tools- /cosmos - OpenC3 (or Ball Aerospace) COSMOS files
- /OrbitInviewPowerPrediction - OIPP tool for operators
- /scripts - convenience scripts
sims
contains the nos3 simulators and configuration files- /cfg - 42 configuration files and NOS3 top level configuration files
- /nos_time_driver - time synchronization for all components
- /sim_common - common files used by component simulators including the files that define the simulator plugin architecture
- /sim_terminal - terminal for testing on NOS Engine busses
- /truth_42_sim - interface between 42 and OpenC3 COSMOS to provide dynamics truth data
We use SemVer for versioning. For the versions available, see the tags on this repository.
This project is licensed under the NOSA (NASA Open Source Agreement) License.
Please report issues and request features on the GitHub tracking system - NOS3 Issues.
If you would like to contribute to the repository, please complete this NASA Form and submit it to gsfc-softwarerequest@mail.nasa.gov with John.P.Lucas@nasa.gov CC'ed. Next, please create an issue describing the work to be performed noting that you intend to work it, create a related branch, and submit a pull request when ready. When complete, we will review and work to get it integrated.
If this project interests you or if you have any questions, please feel free to contact any developer directly or email support@nos3.org
.