A containerized ground station software stack that integrates:
- GreenCTLD for controlling a Green Heron RT-21 rotor controller
- GNU Radio for SDR signal processing
- Gpredict for satellite tracking (optionally containerized)
- AIT (NASA AMMOS Instrument Toolkit) for telemetry & command
- OpenMCT for a modern, web-based mission control dashboard
- Go-based Mission Control backend for REST endpoints, pass scheduling, and integration
- Docker Compose orchestration
- Rotor Control: GreenCTLD emulates a
rotctld-like interface for the RT-21. - Signal Processing: GNU Radio handles demodulation & decoding.
- Telemetry & Command: AIT decodes and processes satellite telemetry, and handles commands.
- Web Dashboard: OpenMCT for real-time monitoring, scheduling, and commanding.
- Pass Predictions: Gpredict (optionally) or built-in TLE-based pass predictions in Go.
- Scalability: Designed to run on an Intel NUC with Docker Compose, easily extended or replicated.
- Docker and Docker Compose installed on your host (e.g., Intel NUC).
- (Optional) VNC viewer if you want to run Gpredict in a container with a GUI, or run Gpredict locally.
git clone https://github.com/NU-Horizonsat/Mission-Control-Software.git
cd Mission-Control-SoftwareOpen go-mission-control/config/satellites.json and edit:
{
"satellites": [
{
"name": "ISS",
"norad_id": 25544,
"frequency": 145.800,
"commands": ["BEACON", "STATUS", "REBOOT"]
}
]
}nameis used by the UI/REST calls.norad_idis used for TLE-based pass predictions.frequencyis an example for rig/rotor control flows.commandsare sample commands recognized by your mission logic.
docker-compose up --buildThis will:
- Build all containers:
go-mission-control(the main Go REST backend)greenctld(rotor control)gnuradio(signal processing)ait(telemetry & command)openmct(web dashboard)gpredict(optional, if enabled indocker-compose.yml)
- Start them in the correct order.
- Base URL:
http://localhost:8081(example port) - Endpoints:
POST /api/send-command– Send immediate commandPOST /api/schedule-command– Schedule a command in the futurePOST /api/track-satellite– Pass rotor angles to GreenCTLDGET /api/predict-passes?satellite=ISS– Return upcoming passes (by NORAD ID or name)
- UI: Open
http://localhost:8080in your browser. - Click on your custom panels (Command, Scheduler, Tracking) to send commands or schedule them.
- Telemetry data from AIT will appear in real-time in your dashboards.
If you included the Gpredict container:
- By default, you can connect to it via VNC or run it locally.
- Configure Gpredict’s rotor interface to point to
greenctldon port4533.
- The container runs a default
flowgraph.grc. - You can modify or replace it with your own flowgraph.
- Data can be piped into AIT’s telemetry handler if you want real-time decoding.
docker-compose logs -f go-mission-control
docker-compose logs -f greenctldEnsure /dev/ttyUSB0 and /dev/ttyUSB1 are correct for your RT-21.
If you see issues with rotor commands, exec into the container and run:
./start_greenctld.shto test.