# NanoSat MO Framework

The NanoSat MO Framework (NMF) is an open-source software framework for small satellites based on CCSDS Mission Operations services.
The framework supports the development of space software in form of Apps that can be operated from ground. The NanoSat MO Framework supports missions by facilitating the development, distribution, and deployment of Apps on satellite missions.
The NanoSat MO Framework facilitates the monitoring and control of the satellite and also provides a set of services for software management, enabling the onboard Apps to be installed, uninstalled and upgraded remotely from ground.
The NanoSat MO Framework is currently flying on-board of ESA's OPS-SAT mission and it is being integrated with ESA's Phi-Sat-2 mission.

## History

The development of the NanoSat MO Framework began in late 2014, with the European Space Agency recognizing the need for a standardized software framework to support the development and operations of small satellites. The initial goal of the project was to create a software framework for nanosatellites based on CCSDS Mission Operations services inspired by today's smartphone technologies in order to reduce the time and cost required to bring these satellites into orbit. The research and development was performed by the European Space Agency in partnership with Graz University of Technology.
Over the next few years, the NanoSat MO Framework underwent significant development and testing, with input from a wide range of stakeholders in the space industry and academia. The framework was designed to be modular and flexible, allowing space missions to easily customize it for their specific requirements. In 2017, the first version of the NanoSat MO Framework was released as open-source software, making it freely available to the space industry and academic community.
The NMF was first flown in space on-board of the European Space Agency's OPS-SAT mission, which was launched on December 18, 2019. OPS-SAT is a CubeSat designed to test new technologies for space missions and serve as a testbed for the verification and validation of space systems. During the OPS-SAT mission, the NMF was used to demonstrate a range of capabilities, including the ability to deploy and run software Apps on the spacecraft, to interact with other on-board systems and sensors, and to perform data acquisition, storage, and downlink transfers. The mission was a success, with the NMF demonstrating its effectiveness and utility in the end-to-end orchestration of space software and operations.
In 2020, the NanoSat MO Framework was selected to be used in the upcoming ESA's Phi-Sat-2 mission. The mission will run Artificial Intelligence directly on board for Earth Observation purposes. The NanoSat MO Framework will facilitate the development of the AI Apps and it will support their whole life-cycle including development, deployment, and operations.

## Architecture specifications

The NanoSat MO Framework is built upon the CCSDS Mission Operations services Architecture and therefore it inherits its properties such as being transport-agnostic, multi-domain, and programming language independent. Additionally, it is independent from any specific satellite platform.
The software framework includes five sets of MO services. The first three are Standardized by the CCSDS and the other two are bespoke interfaces:
* COM services
* Common services
* Monitor and Control services
* Platform services
* Software Management services
* Mission Planning services
The NanoSat MO Framework is split in two segments. First, the “Ground Segment” just like in any traditional spacecraft system. Second, the “NanoSat Segment” which is the equivalent of the space segment but because the target of the framework are small satellites, it contains a more specialized name. An NMF Composite is a software component that consists of interconnected services specialized for a certain purpose and to be deployed on the NanoSat segment or Ground segment. The NMF Composites are based on SOA's service composability design principle that encourages reusing existing services and combine them together to build an advanced solution. The naming convention for the NMF Composites is: <Segment> MO <Purpose>.
The defined set of NMF Composites are:
* NanoSat MO Monolithic
* NanoSat MO Supervisor
* NanoSat MO Connector
* Ground MO Adapter
* Ground MO Proxy
The objective of the NMF Composites is to provide prebuilt components that allow quick development of new software solutions that are interoperable in end-to-end scenarios.
The NanoSat MO Framework defines an NMF App as an on-board software application based on the NanoSat MO Framework. An NMF App can be developed by integrating the NanoSat MO Connector component into the software application. NMF Apps can be started, monitored, stopped, and/or killed by the NanoSat MO Supervisor component.

## Reference implementation in Java

The reference implementation provides a concrete implementation of the specifications of the NanoSat MO Framework in the Java programming language. It was used to discover problems, errors and ambiguities in the interfaces. The implementation is mature and the first version is available online.
There is a Software Development Kit (SDK) in order to facilitate the development of software based on the NanoSat MO Framework. NMF Apps are written in Java (programming language) and have Apache Maven as a prerequisite. The project's source code and several release versions are available via GitHub.
The reference implementation in Java is currently maintained by the European Space Agency and it is available online for free (on GitHub) under the open-source European Space Agency Public License.

## NMF SDK

The NanoSat MO Framework Software Development Kit (NMF SDK) is a set of development tools and software source code that facilitate the creation of applications with the NanoSat MO Framework.
It is composed of:
* Demos for NMF Ground software development
* Demos of NMF Apps
* Consumer Test Tool (CTT)
* NMF Package Assembler
* NMF Playground (with a satellite simulator)
* Documentation
The NMF SDK is the starting point for a software developer willing to develop applications with the NMF.

## Satellite Missions

The NanoSat MO Framework is designed to be highly modular and configurable, allowing it to be tailored to the specific needs of different missions. It is also designed to be interoperable, meaning that it can work with a variety of different satellite platforms.
Typically, the development activities for integrating the NMF in a mission, include implementing the Platform services for the specific mission and the tailoring of the NanoSat MO Supervisor. If a custom or tailored data exchange (transport) with ground is used, then the transport binding must be implemented.
The following missions are (or will be) using the NanoSat MO Framework: Phi-Sat-2, and OPS-SAT.

### Phi-Sat-2

Phi-Sat-2 is a small satellite mission funded by the European Space Agency and developed by Open Cosmos. One of the unique features of the Phi-Sat-2 mission is the use of an artificial intelligence processor on board the satellite, which is used to process images of Earth taken by the satellite's camera.
The Phi-Sat-2 mission is using the NanoSat MO Framework for its mission operations. It bundles the AI software as AI Apps that can be easily developed, deployed, and operated from ground. The use of the NanoSat MO Framework allows the Phi-Sat-2 mission team to streamline their development process and focus on the scientific objectives of the mission.

### OPS-SAT

An implementation for ESA's OPS-SAT mission was developed in order to validate the software framework in-flight. OPS-SAT is a CubeSat built by the European Space Agency (ESA) and launched in December 2019, and it is intended to demonstrate the improvements in mission control capabilities that arise when satellites can fly more powerful on-board computers. For example, OPS-SAT experimenters can use the NMF SDK for quick development of software capable of running on ground and/or in space. The NanoSat MO Framework apps are able to publish telemetry, receive telecommands or access the GPS device on OPS-SAT.

### Software Simulator

The Software Simulator is not an actual mission. However, it was developed as part of the NMF SDK in order to provide simulated data towards the NMF Apps during the development and testing phases.