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.
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.
KubeSat technical architecture is available here
Setup development environment bootstrapped in a docker container.
Docker should be installed and running on your machine.
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.