The Open Space Toolkit (OSTk) is a collection of versatile libraries for aerospace engineering use, available in:
- C++ – the reference implementation, for portability and performance.
- Python – via C++ bindings, formidable for interactive use and prototyping.
Want to get started? This is the simplest and quickest way:
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! 🚀
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.
Name | Description | Version |
---|---|---|
Core | Fundamental types, containers and utilities. | |
I/O | Addressing, networking, database connectors. | |
Mathematics | Geometry, curve fitting, optimization. | |
Physics | Physical units, time, reference frames, environment modeling. | |
Astrodynamics | Orbit, attitude, access. |
To help jump-start using OSTk, here is a simple Docker image that you can use to create your applications.
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
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",
]
You can then build the Docker image via:
docker build . -t my-app
docker run -it --rm my-app
Enjoy!
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.
Apache License 2.0