Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/open-space-collective/open-space-toolkit
Collection of versatile software libraries for space engineering applications.
https://github.com/open-space-collective/open-space-toolkit
cpp engineering python space toolkit
Last synced: about 2 months ago
JSON representation
Collection of versatile software libraries for space engineering applications.
- Host: GitHub
- URL: https://github.com/open-space-collective/open-space-toolkit
- Owner: open-space-collective
- License: apache-2.0
- Created: 2018-06-10T18:26:14.000Z (over 6 years ago)
- Default Branch: main
- Last Pushed: 2024-05-21T23:47:13.000Z (8 months ago)
- Last Synced: 2024-05-22T11:47:41.391Z (8 months ago)
- Topics: cpp, engineering, python, space, toolkit
- Language: Jupyter Notebook
- Homepage:
- Size: 41 MB
- Stars: 168
- Watchers: 10
- Forks: 7
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# Open Space Toolkit
[![Discord](https://dcbadge.vercel.app/api/server/tuHRnjuzWS?style=flat-square)](https://discord.gg/tuHRnjuzWS)
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)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.![Animation](./assets/animation.gif)
## Getting Started
Want to get started? This is the simplest and quickest way:
[![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/open-space-collective/open-space-toolkit/main?urlpath=lab/tree/notebooks)
*This will automatically start a [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) 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:
- [Docker](https://docs.docker.com/get-docker/)
- [Git](https://git-scm.com/downloads)
- [GNU Make](https://www.gnu.org/software/make/)The following commands will start a [JupyterLab](https://jupyterlab.readthedocs.io/en/stable/) server within a Docker container where the OSTk components are already installed:
```shell
# 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](http://localhost:8888/lab) and create a Python 3 Notebook.
## Components
| Name | Description | Version |
| ------------------------------------------------------------------------------------------ | ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [Core](https://github.com/open-space-collective/open-space-toolkit-core) | Fundamental types, containers and utilities. | [![GitHub version](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-core.svg)](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-core) |
| [I/O](https://github.com/open-space-collective/open-space-toolkit-io) | Addressing, networking, database connectors. | [![GitHub version](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-io.svg)](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-io) |
| [Mathematics](https://github.com/open-space-collective/open-space-toolkit-mathematics) | Geometry, curve fitting, optimization. | [![GitHub version](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-mathematics.svg)](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-mathematics) |
| [Physics](https://github.com/open-space-collective/open-space-toolkit-physics) | Physical units, time, reference frames, environment modeling. | [![GitHub version](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-physics.svg)](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-physics) |
| [Astrodynamics](https://github.com/open-space-collective/open-space-toolkit-astrodynamics) | Orbit, attitude, access. | [![GitHub version](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-astrodynamics.svg)](https://badge.fury.io/gh/open-space-collective%2Fopen-space-toolkit-astrodynamics) |## Support
- [Use Cases](./docs/Use%20Cases.md)
- [Frequently Asked Questions](./docs/FAQ.md)## 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
```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.
```toml
[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](CONTRIBUTING.md) to learn about our development process, how to propose bugfixes and improvements, and how to build and test the code.
## Special Thanks
[![Loft Orbital](./assets/thanks/loft_orbital.png)](https://www.loftorbital.com/)
## License
Apache License 2.0