Skip to main content

FDS Python SDK

This package contains the Python Software Development Kit (SDK) of spacetower™.

spacetower™ is Exotrail's Flight Dynamics System (FDS). It covers all the needs of the flight dynamics engineer, including but not limited to :

  • Orbit Determination using PV (Position-Velocity) or GPS NMEA measurements;
  • Measurement Generation;
  • Event prediction e.g. station passes;
  • Generation and simulation of maneuvers e.g. for orbit raising;
  • Uncertainties evaluation for all of these cases.

The Python SDK brings these features to you through a set of Python modules directly callable in your scripts. These modules interacts with the public Application Programming Interface (API) of spacetower™ available online.

Contents

Installation instructions

Prerequisites

In order to use the Python SDK of spacetower™, you need to have Python 3.11 or higher installed, with a package manager like pip or poetry.

The procedure described hereafter also requires the use of a Command Line Interface (CLI).

API credentials are required to call the spacetower™ API. If you do not have credentials yet, please register at https://portal.exotrail.space.

Step-by-step installation

It is recommended to use a virtual environment to install the SDK. This will prevent conflicts with other Python packages that may be installed on the system.

To create a virtual environment:

$ python -m venv venv

Based on your operating system, you will have to activate the virtual environment differently. For Windows, you can use the following command :

$ .\.venv\Scripts\activate

or if you want to use the Powershell script:

$ .\.venv\Scripts\Activate.ps1

For Unix-based systems, you can use :

$ source .venv/bin/activate

To install the SDK :

$ pip install spacetower-fds-sdk

This will install the SDK and its dependencies into the virtual environment.

To set up the API credentials, you can use the following command:

from fds.config import set_client_id, set_client_secret
set_client_id("your_client_id")
set_client_secret("your_client_secret")

Features Overview

Orbit extrapolation

In its simplest use, given an initial state and a target time, the SDK can call the API points of spacetower™ exposed online to request the propagation of the state to the target time.

Additional parameters can be passed to the OrbitExtrapolation class to perform more complex operations, such as:

  • Find orbital events (e.g. eclipse entry/exit, ascending and descending nodes, etc.)
  • Find station visibility windows (e.g. when a ground station, defined by the user, can see the satellite)
  • Find events related to sensors (e.g. find windows where the Sun is in the field of view of a camera)
  • Generate simulated measurements (e.g. GPS NMEA, position and velocity, radar, etc.)
  • Generate output ephemerides of various types (e.g. Cartesian, Keplerian, attitude, etc.). Cartesian ephemerides can be also produced in the Orbit Ephemerides Message (OEM) format.
  • Propagate the state covariance matrix
  • Simulate attitude and/or trajectory changes through maneuver roadmaps.

Orbit determination

The SDK of spacetower™ can perform orbit determination by calling the API points to request the estimation of the state of the satellite, given an initial state, a set of measurements and configuration parameters. An Unscented Kalman Filter (UKF) is used to perform the estimation. The class OrbitDetermination provides a simple interface to the API.

Additionally, users can add model parameters to the estimation, i.e. the drag coefficient, the reflectivity coefficient and the thrust scale factors. Providing a maneuver roadmap will also allow the SDK to characterise the maneuvers that have been performed (in terms of mean variations of the state and thrust magnitude and direction).

Maneuver generation

The maneuver generation functionality allows users to generate a maneuver roadmap that can be used in the orbit extrapolation and orbit determination functionalities. Several parameters can be passed to the ManeuverGeneration class to generate the roadmap, definining the desired strategy and constraints (through the ManeuverStrategy object) and targets (e.g. change of semi-major axis, inclination, etc.).

Additional features

The SDK also provides additional functionalities in support of the main operations, such as:

  • Two-line element (TLE) handling
  • NMEA sentences parsing
  • Vector operations
  • Frame transformations
  • Quaternion operations
  • Orbital mechanics calculations

Documentation

An online documentation of the Python SDK of spacetower™ can be accessed at : https://docs.spacetower.exotrail.space/python-sdk/index.html

It includes docstrings description of the various modules of the SDK, to which you can refer to when using spacetower™ in your projects.

Furthermore, a set of demonstration notebooks using Jupyter are available here: https://github.com/exotrail/spacetower-notebooks

These notebooks aim at being resources for new users to understand how the SDK is built, as well as showcasing the performances of spacetower™. They cover the most frequent use cases of an FDS.

An online version of the notebooks can be found on our customer portal: https://portal.exotrail.space

Dependencies

As mentioned in the Getting started section, this demonstration package is written using Python 3.11, and relies on pip for installing dependencies. Said dependencies can be found in the pyproject.toml file of this package.

Contact

To get in touch with us, please send a mail to the Flight Dynamics Support service at fds-support@exotrailspace.onmicrosoft.com

License

This package is distributed under the MIT License. You are free to use, modify, and distribute the software as you see fit, provided that the original copyright notice and this permission notice are included in all copies or substantial portions of the software. The software is provided "as is," without warranty of any kind, express or implied. For more details, please refer to the LICENSE file included in this repository.

Version history

[1.1.0] 2024-06-21

  • Added firing constraints to the ManeuverGeneration class

[1.0.0] 2024-05-31

  • Initial release
    • Coverage of the main use cases og spacetower™ API: Orbit Extrapolation, Orbit Determination, Maneuver Generation

Metadata

Release files for spacetower-fds-sdk 1.2.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for spacetower-fds-sdk 1.2.2
File Size Uploaded Provenance
spacetower_fds_sdk-1.2.2.tar.gz 83.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for spacetower-fds-sdk 1.2.2
File Interpreter ABI Platform
spacetower_fds_sdk-1.2.2-py3-none-any.whl Python 3 none any Details

Total release size: 184.3 kB

Release files / spacetower_fds_sdk-1.2.2.tar.gz

Download URL spacetower_fds_sdk-1.2.2.tar.gz
Size 83.5 kB
Tags Source
SHA-256 checksum
How to use checksums
e115df2df98d38680c3cdbdce2c25226cba05cb2093d5bcfe2245dcbf5b8fc41
BLAKE2b-256 checksum
How to use checksums
99a41400d2b1182ea7bd22d80f6311682ea468f659252b0785d63693ea73a9a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.2

Release files / spacetower_fds_sdk-1.2.2-py3-none-any.whl

Download URL spacetower_fds_sdk-1.2.2-py3-none-any.whl
Size 100.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
229831cff1183793415b453faec9860eac5047751d01dc467b181c550bbd7800
BLAKE2b-256 checksum
How to use checksums
62f7606184c52d9142aa148739672419fca91b489470d0e14322c5634cfc7a1a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.2

Security for spacetower-fds-sdk 1.2.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page