Nos3 Architecture
The figure below shows the architecture of NOS3. To get started with NOS3, a NOS3 user only needs to install Oracle VirtualBox and Vagrant on their host computer. Both of these software packages are open source and can be run on various operating systems, including Microsoft Windows, Apple OS X, and Linux. In addition to those software packages, NOS3 is comprised of a collection of files that are stored in a git repository. To get started with NOS3, the user receives a copy of those files and places them on their computer. These files include a Vagrantfile, which is a file that is used by the Vagrant software package to create an Ubuntu Linux Virtual Machine where all of NOS3 is run. During creation of the Ubuntu Linux Virtual Machine, various software packages are installed including COSMOS, 42, and the NOS Engine libraries and NOS Standalone Server.
Finally, source code for various simulators is present on the virtual machine. Build tools can be used on the virtual machine to build and install these simulators, such as a GPS simulator, a magnetometer simulator, an antenna simulator, and more. In addition, two special software tools are built and installed as part of the simulators. The first is a NOS time driver which provides time ticks to drive time for the various simulators, 42, and the flight software. The second is a simple terminal program which can be used by the operator to command and control other simulators using a separate NOS engine command bus which all of the simulators can be nodes on.
In addition, the cFS source code is also present on the virtual machine. Build tools can be used to build and install the generic flight software also. This flight software includes hardware libraries that can interface as nodes on NOS Engine busses in place of the real hardware node and bus connections.
As shown in the figure above, TCP/IP or files can be used to provide environmental data from 42 to the various simulators. In addition, TCP/IP can be used to interface COSMOS with laboratory versions of command and telemetry applications in cFS. Finally, the NOS Engine libraries are used to provide the software busses and nodes for communication between the flight software and the simulated hardware and for distribution of simulation time.