Skip to main content

Orbit determination routines for Python

Project description

Introduction

This is orbdetpy, a library of Python and Java routines for orbit determination. It is a thin Python wrapper for our estimation tools and Orekit, which are both written in Java.

Features

The force model for orbit propagation currently includes:

  1. EGM96 gravity field up to degree and order 360.
  2. Earth solid tides due to the influence of the Sun and Moon.
  3. FES 2004 ocean tide model up to degree and order 100.
  4. The NRL MSISE-00 and simple exponential models for atmospheric drag.
  5. Solar radiation pressure.
  6. Third body perturbations from the Sun and Moon.

The measurement model supports range, range-rate, angles, and inertial Cartesian coordinates. Filtering is done using Orekit's Extended Kalman Filter or our custom Unscented Kalman Filter. Dynamic Model Compensation (DMC) can be used with either filter to estimate additional perturbing acclerations that result from unmodeled dynamics, maneuvers etc.

You can either use your own measurements or simulate observations using the simulateMeasurements() function.

Installation

  1. Install the Java Development Kit 8 (1.8) from http://openjdk.java.net/install/index.html. Set the JAVA_HOME environment variable to point to your JDK installation.
  2. Install Python 3.6+ and run pip install orbdetpy to install orbdetpy and other package dependencies from the Python Package Index (PyPI). If you wish to use the develop or other experimental branches from GitHub, git clone them and run pip install -e . from the top level orbdetpy folder.
  3. Source code, example programs and data files can be downloaded from https://github.com/ut-astria/orbdetpy.

The orbdetpy/lib folder contains JAR files for the following libraries, which are imported by orbdetpy automatically.

  1. https://github.com/google/gson
  2. https://hipparchus.org
  3. https://www.orekit.org

Update the astrodynamics data in orbdetpy/data periodically by calling the update_data() function in the astrodata module.

Examples

The following example programs can be found in the 'examples' folder. These examples use the Python wrapper interface but calling the underlying Java implementation directly is straightforward.

  1. testsim.py : Demonstrates the measurement simulator. Note that maneuvers can be incorporated into the force model during simulation.

  2. plotsim.py : Plots the results of simulations created using testsim.py.

  3. testodet.py : Demonstrates orbit determination in orbdetpy.

  4. plotodet.py : Plots the results of fitting orbits using testodet.py.

  5. run_tests.py : Run all the use cases under examples/data. Simulated measurements, orbit fits, differences between simulated truth versus estimates, and 3-sigma of estimated covariances will be written to output/ sub-folders.

orbdetpy uses JSON files to store settings, measurements and estimation results. The files in examples/data show how to configure measurement simulation and orbit determination using radar or telescope data. The file docs/file_formats.md documents the structure of the JSON files.

The following are some typical use cases. It is assumed that the current working directory is examples/data.

  1. Simulate state vectors and radar measurements:

    python ../testsim.py radar_sim_cfg.json sim_data.json

    This will run the simulation configured in radar_sim_cfg.json and write simulated output to sim_data.json.

  2. Plot simulation results:

    python ../plotsim.py radar_sim_cfg.json sim_data.json

    This will plot the simulated data generated in (1).

  3. Run OD on simulated radar data:

    python ../testodet.py radar_od_cfg.json sim_data.json od_output.json

    This will run OD on the simulated radar data generated in (1) using the OD configuration in radar_od_cfg.json and write OD output to od_output.json.

  4. Plot OD results:

    python ../plotodet.py radar_od_cfg.json sim_data.json od_output.json

    This will plot the OD results from (3).

Known Issues

  1. Java "Out of heap space" errors:

    The Java Virtual Machine with default settings may run out of heap space during long term simulations or orbit fits. The workaround is to add the following to the top of your Python code, before orbdetpy is imported. The value following "-Xmx" is the maximum heap size you wish to assign to Java; "G" stands for gigabytes.

    import jnius_config

    jnius_config.add_options("-Xmx2G")

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

orbdetpy-0.2.2.tar.gz (17.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

orbdetpy-0.2.2-py3-none-any.whl (17.4 MB view details)

Uploaded Python 3

File details

Details for the file orbdetpy-0.2.2.tar.gz.

File metadata

  • Download URL: orbdetpy-0.2.2.tar.gz
  • Upload date:
  • Size: 17.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for orbdetpy-0.2.2.tar.gz
Algorithm Hash digest
SHA256 4859988bd7a4f0f950869b25379e27693ceeeef4990049ffc6ff01817575c1c7
MD5 a99578ea68255ac5b0301ee5310d9ea4
BLAKE2b-256 1d5f292189b237ac28d49ecf930ffdfdbb347888f86889b4519c1701458692af

See more details on using hashes here.

File details

Details for the file orbdetpy-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: orbdetpy-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 17.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.14.0 pkginfo/1.5.0.1 requests/2.20.1 setuptools/39.1.0 requests-toolbelt/0.9.1 tqdm/4.32.2 CPython/3.6.3

File hashes

Hashes for orbdetpy-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ebd23c54471f301d3f2fab75a73cfebaa0921bae81dcb200793c8490368540e8
MD5 80aff8daf7ec64e8767c4e4fa41be2b1
BLAKE2b-256 5f354b9a1b2c669b8e272182884287b29022495589ab1629ef0f1c95d832d9d9

See more details on using hashes here.

Supported by

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