Nos3 Architecture
Figure 1 shows the architecture of NOS3. To get started with NOS3, a NOS3 user 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 will be installed via Ansible, including AIT, COSMOS, 42, and the NOS Engine libraries and NOS Standalone Server. An alternative to starting with Vagrant is to receive an already generated VirtualBox Virtual Machine with the various packages installed. To build and run the core flight software, simulators, and so on, the source code will need to be present as described below..
Source code for various simulators is accessible on the virtual machine through shared folders which allow access to the same files on the host computer and the virtual machine computer. Build tools can be used on the virtual machine to build and install 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 that 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 the NOS engine command bus on which all of the simulators can be nodes.
The cFS source code is also present on the virtual machine through the shared folders. Build tools can also be used to build and install the generic flight software. 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 Figure 1, 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.