Skip to content

philiplinden/spacetime

Repository files navigation

spacetime

A Simulation of Heterogeneous Networked Lunar Clocks.

spacetime employs Agent-Based Modeling to examine lunar networks in the Cislunar Open Clock Synchronization System. It focuses on how network topology and time synchronization evolve in a growing lunar ecosystem, evaluating both centralized and decentralized Positioning, Navigation, and Timing (PNT) service network configurations. The Agent-Based Model includes Transmitters, Receivers, and Peers, simulating their movement, clock drift, and interactions. Key metrics for assessment encompass accuracy, availability, continuity, interoperability, cost, and signal integrity. Motivated by advancements in space technologies and the increase in lunar missions, the project advocates for a resilient peer-to-peer design that accommodates diverse cislunar ecosystems. The study aims to predict system performance relative to interconnected assets and considers interoperability with other missions, including the definition of a Lunar Reference Frame.

Documentation is available at philiplinden.github.io/spacetime.

Quickstart

Install the dependencies for your operating system that are needed to run Bevy: The Bevy Book - Setup

Then run the project.

cargo run

Learning

Learning is one of the main objectives of this project. As such, several code demos and iPy notebooks can be found in the learning directory.

The repository contains a mix of Python and Rust. See the docs for more discussion on code architectures for this project. It's been an exploration with surprising twists.

There are two Python demo models that run interactively in the browser. Install dependencies to a virtual environment using Python Poetry. Poetry is then used to spin up the demo projects.

From the learning directory:

# install python poetry
pip install poetry

# install all dependencies
poetry install

The Orbits model uses Nyx to spawn a collection of satellites and propagate their trajectories. Mesa is used to set up and execute the simulation.

poetry run mesa runserver learrning/demos/orbits

The Marco Polo model uses Mesa to spawn a collection of agents to play the children's game Marco Polo.

poetry run mesa runserver learning/demos/marcopolo

Attribution

This project borrows from example code provided by krABMaga/examples, nyx-space/nyx, and Canleskis/particular.

Attributions for all assets are listed in assets/README.md.

License

This repository is distributed under the Mozilla Public License 2.0 (MPL-2.0). MPL-2.0 requires that modifications to the covered code be released under the same license, thus ensuring improvements remain open-source. However, it allows the combining of the covered software with proprietary parts, providing flexibility for both academic and commercial integrations.

For more details, please see the full text of the license or read a summary by Github.

Releases

No releases published

Sponsor this project

Packages

No packages published