open-space-collective / open-space-toolkit

Collection of versatile software libraries for space engineering applications.
Apache License 2.0
174 stars 7 forks source link
cpp engineering python space toolkit

Open Space Toolkit

Discord License

The Open Space Toolkit (OSTk) is a collection of versatile libraries for aerospace engineering use, available in:

Animation

Getting Started

Want to get started? This is the simplest and quickest way:

Binder

This will automatically start a JupyterLab environment in your web browser with Open Space Toolkit libraries and example notebooks ready to use. Nothing to download or install! πŸš€

Local JupyterLab in Docker

Alternatively, you can run a pre-installed OSTk environment on your local machine. This process has the following requirements:

The following commands will start a JupyterLab server within a Docker container where the OSTk components are already installed:

# clone this repo
git clone https://github.com/open-space-collective/open-space-toolkit.git && cd open-space-toolkit

# Run the jupyter server inside of Docker
make run-jupyter

Once the container is running, access http://localhost:8888/lab and create a Python 3 Notebook.

Components

Name Description Version
Core Fundamental types, containers and utilities. GitHub version
I/O Addressing, networking, database connectors. GitHub version
Mathematics Geometry, curve fitting, optimization. GitHub version
Physics Physical units, time, reference frames, environment modeling. GitHub version
Astrodynamics Orbit, attitude, access. GitHub version

Support

Using OSTk in your applications

To help jump-start using OSTk, here is a simple Docker image that you can use to create your applications.

Docker

ARG PYTHON_BASE_VERSION="3.11"

# Open Space Toolkit install image

FROM mcr.microsoft.com/vscode/devcontainers/python:${PYTHON_BASE_VERSION}

ARG OSTK_DATA_LOCAL_CACHE="/var/cache/open-space-toolkit-data"

## Install OSTk data install dependencies

RUN apt-get update && \
    apt-get install -y git-lfs && \
    rm -rf /var/lib/apt/lists/*

## Seed OSTk Data

ENV OSTK_PHYSICS_DATA_LOCAL_REPOSITORY="${OSTK_DATA_LOCAL_CACHE}/data"

RUN git clone \
    --branch=v1 \
    --single-branch \
    --depth=1 \
    https://github.com/open-space-collective/open-space-toolkit-data.git ${OSTK_DATA_LOCAL_CACHE} && \
    chmod -R g+w ${OSTK_DATA_LOCAL_CACHE}

## Update user id and group id with local ones

ARG USERNAME="vscode"
ARG USER_UID="1000"
ARG USER_GID=${USER_UID}
RUN sudo groupmod --gid ${USER_GID} ${USERNAME} && \
    sudo usermod --uid ${USER_UID} --gid ${USER_GID} ${USERNAME}

USER ${USERNAME}

## Install dependencies

COPY --chown=${USER_UID}:${USER_GID} pyproject.toml /home/${USERNAME}/tmp/

RUN cd /home/${USERNAME}/tmp/ && \
    pip --no-cache-dir install --user .[dev] && \
    rm -rf /home/${USERNAME}/tmp/

## Change default entrypoint to bin/zsh

ENTRYPOINT ["/bin/zsh"]

## Change default entrypoint folder to /app

WORKDIR /app

pyproject.toml

And an accompanying pyproject.toml file that should be in the same folder.

[project]
name = "my-app"
requires-python = ">=3.11"

dynamic = ["version"]

dependencies = [
    "open-space-toolkit-simulation~=X.Y.Z",
]

[project.optional-dependencies]
dev = [
    # Development libraries
    "ipython~=8.24",
]

Build and Run

You can then build the Docker image via:

docker build . -t my-app
docker run -it --rm my-app

Enjoy!

Contributing

Contributions are more than welcome!

Please read our contributing guide to learn about our development process, how to propose bugfixes and improvements, and how to build and test the code.

Special Thanks

Loft Orbital

License

Apache License 2.0