Skip to content

Commit

Permalink
Modifying readmes
Browse files Browse the repository at this point in the history
  • Loading branch information
henrysg1 committed May 10, 2024
1 parent c9dceb2 commit 74b8c96
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 77 deletions.
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
This is the Mission Control Software repository for the University of Nottingham's CubeSat program.
# UoN CubeSat Repository

Information will be added here.
This repository holds the source code for the Yamcs application, basic web interface and back-end server to run the CubeSat MCS.

The **uon-yamcs-instance** directory contains all files used to run the Yamcs application, including the satellite emulator. This is the main directory, and information about the application can be found in this directory.

The **uon-web-interace** directory contains the files for a React-based web interface, which uses API calls to interface with the running Yamcs application. This development has been paused, as it was decided to focus on the development of the Yamcs application, but it is possible that it could be continued in the future.

The **mcs-server** directory contains code that can be run on the back-end to start all application features in one go. This is how the server is launched for the web page.

A live demo can be seen [here](http://uoncubesatmcs.com). Note that this server may be stopped in the future due to running costs.
4 changes: 3 additions & 1 deletion mcs-server/README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
# UoN CubeSat Back-End Server

To run the app type : `node server.js`
This will open the yamcs app as well as the frontend app (in the branch you are currently into)
This will open the yamcs app, the simulator and the frontend app (in the branch you are currently on)
46 changes: 4 additions & 42 deletions uon-web-interface/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Getting Started with Create React App
# UoN CubeSat Web Interface

This project was bootstrapped with [Create React App](https://github.com/facebook/create-react-app).
This directory contains the code for a React app that integrates with the Yamcs server. For the app to get information, the Yamcs application must first be started. The tracker on the home page currently follows the live path of the ISS, however, this will be updated to be the path of the CubeSat once launched.

**Development of this web interface has been paused, as it is largely redundant when compared to the provided Yamcs Web Interface**

## Available Scripts

Expand Down Expand Up @@ -28,43 +30,3 @@ The build is minified and the filenames include the hashes.\
Your app is ready to be deployed!

See the section about [deployment](https://facebook.github.io/create-react-app/docs/deployment) for more information.

### `npm run eject`

**Note: this is a one-way operation. Once you `eject`, you can't go back!**

If you aren't satisfied with the build tool and configuration choices, you can `eject` at any time. This command will remove the single build dependency from your project.

Instead, it will copy all the configuration files and the transitive dependencies (webpack, Babel, ESLint, etc) right into your project so you have full control over them. All of the commands except `eject` will still work, but they will point to the copied scripts so you can tweak them. At this point you're on your own.

You don't have to ever use `eject`. The curated feature set is suitable for small and middle deployments, and you shouldn't feel obligated to use this feature. However we understand that this tool wouldn't be useful if you couldn't customize it when you are ready for it.

## Learn More

You can learn more in the [Create React App documentation](https://facebook.github.io/create-react-app/docs/getting-started).

To learn React, check out the [React documentation](https://reactjs.org/).

### Code Splitting

This section has moved here: [https://facebook.github.io/create-react-app/docs/code-splitting](https://facebook.github.io/create-react-app/docs/code-splitting)

### Analyzing the Bundle Size

This section has moved here: [https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size](https://facebook.github.io/create-react-app/docs/analyzing-the-bundle-size)

### Making a Progressive Web App

This section has moved here: [https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app](https://facebook.github.io/create-react-app/docs/making-a-progressive-web-app)

### Advanced Configuration

This section has moved here: [https://facebook.github.io/create-react-app/docs/advanced-configuration](https://facebook.github.io/create-react-app/docs/advanced-configuration)

### Deployment

This section has moved here: [https://facebook.github.io/create-react-app/docs/deployment](https://facebook.github.io/create-react-app/docs/deployment)

### `npm run build` fails to minify

This section has moved here: [https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify](https://facebook.github.io/create-react-app/docs/troubleshooting#npm-run-build-fails-to-minify)
86 changes: 54 additions & 32 deletions uon-yamcs-instance/README.md
Original file line number Diff line number Diff line change
@@ -1,61 +1,83 @@
# Yamcs QuickStart
# UoN CubeSat YAMCS Instance

This repository holds the source code to start a basic Yamcs application that monitors a simulated spacecraft in low earth orbit.
This repository contains the source code of the Yamcs application used to communicate with a satellite with Lithium-2 Radios. To find more information regarding the specific features of this communication as well as the changes made in Yamcs, the thesis associated with this work should be read.

You may find it useful as a starting point for your own project.
This application contains a **Mission Database** that can process incoming **telemetry** following the Packet Utilisation Standard and send **commands**, which will be interpreted by the included **Satellite Emulator**, provided that the simulation script is running.

This application uses the provided Yamcs web interface. The web interface runs on port 8090 and uses basic YAML security for different account accesses.

## Prerequisites
## Running YAMCS

* Java 11+
* Linux x64/aarch64, macOS x64, or Windows x64
The basic information and prerequisites for running Yamcs can be found [Here](https://yamcs.org/getting-started)

A copy of Maven 3.1+ is also required, however this gets automatically downloaded an installed by using the `./mvnw` shell script as detailed below.
To start the main YAMCS instance, run:

Note that Yamcs does not currently support running on Apple M1 or M2. We hope to address this soon.
mvn yamcs:run

This will then start the server and web inteface, which can be seen at http://localhost:8090

## Running Yamcs

Here are some commands to get things started:

Compile this project:
## Telemetry

./mvnw compile
To start the **Satellite Emulator** for **TM/TC**, run the simulator script:

Start Yamcs on localhost:
python simulator.py

./mvnw yamcs:run
This script uses TCP to establish a link to the satellite emulator scripts, which emulate the sending and receival of commands and telemetry. By default, the emulator scheduler should send housekeeping data once it has started and the TCP connection is made.

Same as yamcs:run, but allows a debugger to attach at port 7896:
## Telecommanding

./mvnw yamcs:debug

Delete all generated outputs and start over:
The **Mission Database** created in this application contains several CCSDS telecommands. In future, all CCSDS telecommands will need to be added. The structure of these packets complies with the [CCSDS Space Packet Protocol](https://public.ccsds.org/Pubs/133x0b2e1.pdf#page=32) and the [ECSS-E-ST-70-41C](https://ecss.nl/standard/ecss-e-st-70-41c-space-engineering-telemetry-and-telecommand-packet-utilization-15-april-2016/) standards.

./mvnw clean
Telecommands can be sent through the "Commanding" section on YAMCS web interface.

This will also delete Yamcs data. Change the `dataDir` property in `yamcs.yaml` to another location on your file system if you don't want that.
## Instances

In the **yamcs.yaml** file (located in yamcs-instance/src/main/yamcs/etc) five instances are currently being loaded when yamcs starts. These are ADCS, COMMS, OBC, JAM and SAIL. Each instance has been configured to meet the requirements of the respective sub-system, with the COMMS instance being used for sending commands to the satellite. The file for each instance's configuration is the **yamcs.subsystemName.yaml**.

## Telemetry
## Data-Links

To start pushing CCSDS packets into Yamcs, run the included Python script:
In each **yamcs.subsystemName.yaml** file (located in yamcs-instance/src/main/yamcs/etc), a data-link has been established for receival of telemetry, and one for the COMMS output. Every time a packet gets sent or received, the count of the respective data-link is increased.

python simulator.py
* Telemetry Data-Links
* "OBC", receiving data through port 10015.
* "ADCS", receiving data through port 10016.
* "COMMS", receiving data through port 10017.
* "JAM", receiving data through port 10018.
* "SAIL", receiving data through port 10019.

This script will send packets at 1 Hz over UDP to Yamcs. There is enough test data to run for a full calendar day.
* Telecommanding Data-Links
* "tcp-out", which is connected to the COMMS instance and is sending data at port 10025.

The packets are a bit artificial and include a mixture of HK and accessory data.
For now, simulator.py sends packets to all TM Data-Links. Given that TCP is used, only one port can be used for each link.

## Mission Database

## Telecommanding
The Mission Database describes the telemetry and commands that are processed by YAMCS. It tells YAMCS how to decode packets or how to encode telecommands.

This project defines a few example CCSDS telecommands. They are sent to UDP port 10025. The simulator.py script listens to this port. Commands have no side effects. The script will only count them.
The .xml files (located in yamcs-instance/src/main/yamcs/mdb) contain all the information regarding the parameters, the containers and the commands used in AcubeSAT YAMCS Instance.

The mdb is split across multiple folders to ensure readability and maintainability. The folders, as well as their contents are the following:

## Bundling
- The **subystemName folders** which are split between two xmls:
- `subsystemName-dt.xml` --> Contains complex datatypes used by the subsystem.
- `subsystemName-xtce.xml` --> Contains all of the subsystem's parameters.
- The **common folder** which contains two subfolders:
- The **dt folder** which contains **ParameterTypes** and more specifically:
- `base-dt.xml` --> Contains primitive datatypes.
- `dt.xml` --> Contains complex datatypes used by the OBC and ADCS subsystems.
- `file-handling-dt.xml` --> Contains the datatypes required for the file handling and the image transmission.
- `ST[01]-dt.xml` --> Contains the enumeration datatypes used in ST[01].
- `time-based-dt.xml` --> Contains the complex datatypes used in ST[11].
- `writeable-dt.xml` --> Contains writeable argument datatypes used in ST[20].
- The **pus folder** which contains:
- `pus.xml` --> Contains the headers used to make up the telemetry and the telecommand packets, as well as the necessary parameters that make up the headers.
- The **frames folder**:
- `frames-dt.xml` --> Contains the necessary complex datatypes used in frames.
- `frames.xml` --> Contains the frame packets, as well as the required parameters to make them up.
- The **services folder**:
- `ST[x].xml` --> Contains the parameters and the packets for service ST[x].
- `Logger.xml` --> Contains a custom telemetry packet used for transporting message logs.

Running through Maven is useful during development, but it is not recommended for production environments. Instead bundle up your Yamcs application in a tar.gz file:
## Connection to Lithium-2 Radio

./mvnw package
By default, this application adds additional bytes to each packet, so that it is possible to communicate using the Lithium-2 radio. If it is decided that this does not need to be used, then the addition of bytes can be removed by setting the **LITHIUM_CONNECTED** variable to **False** in satellite_emulator/config.py.

0 comments on commit 74b8c96

Please sign in to comment.