Skip to main content

SDK for spacetower Flight Dynamics System API

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

spacetower_fds_sdk-1.2.0.tar.gz (84.2 kB view details)

Uploaded Source

Built Distribution

spacetower_fds_sdk-1.2.0-py3-none-any.whl (100.8 kB view details)

Uploaded Python 3

File details

Details for the file spacetower_fds_sdk-1.2.0.tar.gz.

File metadata

  • Download URL: spacetower_fds_sdk-1.2.0.tar.gz
  • Upload date:
  • Size: 84.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.4

File hashes

Hashes for spacetower_fds_sdk-1.2.0.tar.gz
Algorithm Hash digest
SHA256 823dd28eda745497d45b9b91dc613457996d2530ca4f54bb910f5b5b95eb790d
MD5 d9eaeac97a90ac5d1584cf096401ce5f
BLAKE2b-256 76d1879d4a9a1f53f339f04b51a6bff1de6ef737de335263a4107631a851a4f4

See more details on using hashes here.

Provenance

File details

Details for the file spacetower_fds_sdk-1.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for spacetower_fds_sdk-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f391a7c6e7ff23ea0363f682ba33fda7f2e90129caf09577472d9a80894248c2
MD5 5a58dfbd3c6387e3e73371db8f43c12b
BLAKE2b-256 f590a970339c8e1c300c02596a15db022f584db4773d9b20e54ffdcffb027de4

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page