/spacetech-kubesat

IBM Space Tech - Cognitive Autonomous Framework

Primary LanguagePythonApache License 2.0Apache-2.0

🛰️ KubeSat 🛰️

IBM SpaceTech KubeSat is an open source project for building a cognitive, autonomous framework for satellite constellations and swarms. KubeSat allows for the simulation and optimization of multi-satellite communications.

This project simulates accurate orbital mechanics for each object via OreKit; uses these calculations to place restrictions on communications between satellites, groundstation, and ground sensors; incorporates NATS.io messaging services; and publishes these communications for visualization on a web dashboard built using Cesium and Carbon.

Overview

KubeSat consists of a combination of microservices that interact with each other using NATS messaging. These services are distributed between Satellite and Groundstation nodes, and are grouped into three categories - Simulation, Satellite, and IoT/Ground station.

Simulation services include clock, config, logging, czml, dashboard, and cluster. IoT/Groundstation services include iot and groundstation services. Satellite services include orbits, data, reinforcement learning, RL training. Agriculture is the application use-case with associated service named agriculture running on each satellite node.

A template service is provided as a starting point to write new services and additional utility libraries.

Utilities

Simulation

Satellite

IoT & Ground

Technical Architecture

KubeSat technical architecture is available here

Getting Started

Setup development environment bootstrapped in a docker container.

Pre-requisite

Docker should be installed and running on your machine.

Instructions

mkdir -p /tmp/spacetech-kubesat
git clone https://github.com/IBM/spacetech-kubesat /tmp/spacetech-kubesat

/tmp/spacetech-kubesat is used as location of the cloned repository on your development machine. If cloned to a different location, set the directory location to kubesat_repo in spacetech-kubesat/dev/bootstrap.sh.

Run bootstrap.sh. This will create a container with required conda environment. This container will mount your cloned repo, so you can do development work on your machine and use the container to run and test.

bash /tmp/spacetech-kubesat/dev/bootstrap.sh

You should now have dev-kubesat container in running state. Log in and start kubesat services.

docker exec -it dev-kubesat /bin/bash
conda activate kubesat && bash /tmp/spacetech-kubesat/dev/run-kubesat.sh

STDOUT from each each service is also available as log file in the dev folder. After all services are running, kubesat dashboard is accessible at http://localhost:8080

After making any code changes to existing services, re-run conda activate kubesat && bash /tmp/spacetech-kubesat/dev/run-kubesat.sh inside the docker container to reload new environment with the updates to test your changes.

Helpful Links

Maintainers