Skip to content

Commit

Permalink
Released v2.1.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Shiva-Iyer committed Mar 30, 2022
2 parents 1963075 + f4d580f commit d615dd1
Show file tree
Hide file tree
Showing 74 changed files with 9,053 additions and 2,434 deletions.
23 changes: 23 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
FROM ubuntu:20.04

# Use --build-arg #.#.# when building to use other version
ARG JAVA_MAJOR_VERSION=11
ARG ORBDETPY_VERSION=2.0.7

# Install orbdetpy dependencies
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
openjdk-${JAVA_MAJOR_VERSION}-jdk software-properties-common python3-pip python3-venv wget && \
add-apt-repository ppa:deadsnakes/ppa

# Install orbdetpy into virtual environment and update orekit-data
RUN cd && \
python3 -m venv env_orbdetpy && \
. env_orbdetpy/bin/activate && \
pip install orbdetpy==${ORBDETPY_VERSION} ipython && \
python -c "from orbdetpy.astro_data import update_data; update_data();"

RUN cd && \
wget -qO- https://github.com/ut-astria/orbdetpy/archive/refs/tags/${ORBDETPY_VERSION}.tar.gz | \
tar -xvz -C /root/ && \
mv orbdet* orbdetpy
80 changes: 34 additions & 46 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,6 @@
orbdetpy is a Python library for orbit determination. It is a thin
Python wrapper for our Java estimation tools and Orekit <http://www.orekit.org/>.
**orbdetpy** is a Python orbit determination library.

Features
--------
# Features

Dynamics in orbdetpy can be configured with:

Expand All @@ -14,36 +12,25 @@ Dynamics in orbdetpy can be configured with:
6. Third body perturbations from the Sun and Moon.
7. Satellite box-wing models and maneuvers.

Range, range-rate, angles, and inertial state measurements are supported.
Filtering can be done with our Unscented Kalman Filter or Orekit's Extended
Kalman Filter. Dynamic Model Compensation (DMC) can be used with either
filter to estimate unmodeled accelerations.
Range, range-rate, angles, and inertial state measurements are supported. Filtering can be done with an EKF, UKF, or Batch Least Squares. Dynamic Model Compensation (DMC) can be used to estimate unmodeled accelerations.

Installation
------------
# Installation

1. Install Java SE 11 (11.0.10) from <https://www.oracle.com/javadownload>.
Set the `JAVA_HOME` environment variable to the Java installation
folder. The `java` executable must be added to the system path.
If you have docker installed and wish to use a pre-built environment refer to the [Docker](#docker) section in this README.

2. Install Python 3.8.0 or higher and run `pip install orbdetpy` to install
orbdetpy and other package dependencies.
1. Install Java SE 11 (11.0.10) from <https://www.oracle.com/javadownload>. Set the `JAVA_HOME` environment variable to the Java installation folder. The `java` executable must be added to the system path.

3. Update the astrodynamics data under `orbdetpy/orekit-data` periodically by
running the following. You will need `root` privileges on some systems.
2. Install Python 3.8.0 or higher and run `pip install orbdetpy` to install orbdetpy and other package dependencies.

3. Update the astrodynamics data under `orbdetpy/orekit-data` periodically by running the following. You will need `root` privileges on some systems.

`python -c "from orbdetpy.astro_data import update_data; update_data();"`

Development
-----------
# Development

1. Download and extract <https://github.com/ut-astria/orbdetpy/releases/download/2.0.7/orekit-data.tar.gz>
under the `orbdetpy/` sub-folder.
1. Download and extract <https://github.com/ut-astria/orbdetpy/releases/download/2.1.0/orekit-data.tar.gz> under the `orbdetpy/` sub-folder.

2. Developers will need Apache Maven 3+ to build the Java library. Build
using the following from the `orbdetpy/` sub-folder, where `os_cpu_type` is
`linux-x86_64`, `linux-x86_32`, `windows-x86_64`, `windows-x86_32`,
`osx-x86_64`, or `osx-x86_32` depending on your CPU and OS:
2. Developers will need Apache Maven 3+ to build the Java library. Build using the following from the `orbdetpy/` sub-folder, where `os_cpu_type` is `linux-x86_64`, `linux-x86_32`, `windows-x86_64`, `windows-x86_32`, `osx-x86_64`, or `osx-x86_32` depending on your CPU and OS:

`mvn -e -Dos.detected.classifier=os_cpu_type package`

Expand All @@ -53,37 +40,38 @@ Development

3. Run `pip install -e ./` from the top-level folder containing `setup.py`.

Examples
--------
# Docker

1. Build the docker image on a machine that has docker installed and go to the root folder of this repository where the `Dockerfile` is and run, `docker build --build-arg ORBDETPY_VERSION=2.0.7 -t orbdetpy:2.0.7 .`

2. Run *orbdetpy:2.0.7* image in a daemon state: `docker run -it --rm orbdetpy:2.0.7 bash`

3. Next we will activate the python environment and run a test to determine a successful docker image build

```bash
cd && . env_orbdetpy/bin/activate && python orbdetpy/examples/test_estimation.py
```

4. From here, you can either develop in orbdetpy or build scripts and test in this pre-built environment

# Examples

1. `fit_radec.py` : Run OD with real angles measurements. Also demonstrates
the Laplace IOD method for estimating an initial state vector.
1. `fit_radec.py` : Run OD with real angles measurements. Also demonstrates the Laplace IOD method for estimating an initial state vector.

2. `interpolate_oem.py` : Command-line tool for interpolating state vectors
from CCSDS OEM ephemeris files. OEM files are available for download at
<http://astria.tacc.utexas.edu/AstriaGraph>.
2. `interpolate_oem.py` : Command-line tool for interpolating state vectors from CCSDS OEM ephemeris files. OEM files are available for download at <http://astria.tacc.utexas.edu/AstriaGraph>.

3. `predict_passes.py` : Predict satellite passes for ground stations or
geographic regions using TLEs. Current elements may be obtained from
sites such as <http://www.celestrak.com>.
3. `predict_passes.py` : Predict satellite passes for ground stations or geographic regions using TLEs. Current elements may be obtained from sites such as <http://www.celestrak.com>.

4. `propagate_tle.py` : Propagate TLEs given by command-line arguments.

5. `test_conversion.py` : Test reference frame and other conversion functions.

6. `test_estimation.py` : Demonstrates measurement simulation and orbit
determination functions.
6. `test_estimation.py` : Demonstrates measurement simulation and orbit determination functions.

7. `test_interpolation.py` : Interpolate state vectors.

Known Issues
------------
# Known Issues

1. You might receive warnings from the Windows Defender Firewall on Microsoft
Windows. Grant `orbdetpy` network access permissions.
1. Give orbdetpy network access permissions if you get warnings from the Microsoft Windows Firewall.

2. If you use the `multiprocessing` Python package, imports and calls into
`orbdetpy` must not span `multiprocessing` function calls. That is, `orbdetpy`
can be used in the parent process or the spawned child processes, but not both.
A workaround is to run the `orbdetpy` RPC server using `orbdetpy/start_server.sh`
in a separate terminal window before running your Python code.
2. If you use orbdetpy with Python's `multiprocessing` package, call the function `multiprocessing.set_start_method("spawn")` before other `multiprocessing` calls.
6 changes: 3 additions & 3 deletions docs/astro_data.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
<meta name="generator" content="pdoc 0.9.2" />
<meta name="generator" content="pdoc 0.10.0" />
<title>orbdetpy.astro_data API documentation</title>
<meta name="description" content="" />
<link rel="preload stylesheet" as="style" href="https://cdnjs.cloudflare.com/ajax/libs/10up-sanitize.css/11.0.1/sanitize.min.css" integrity="sha256-PK9q560IAAa6WVRRh76LtCaI8pjTJ2z11v0miyNNjrs=" crossorigin>
Expand Down Expand Up @@ -37,7 +37,7 @@ <h2 class="section-title" id="header-functions">Functions</h2>
<div class="desc"><p>Re-format space weather data into a more efficient form.</p></div>
</dd>
<dt id="orbdetpy.astro_data.update_data"><code class="name flex">
<span>def <span class="ident">update_data</span></span>(<span>) ‑> NoneType</span>
<span>def <span class="ident">update_data</span></span>(<span>) ‑> None</span>
</code></dt>
<dd>
<div class="desc"><p>Download and re-format astrodynamics data from multiple sources.</p></div>
Expand Down Expand Up @@ -68,7 +68,7 @@ <h1>Index</h1>
</nav>
</main>
<footer id="footer">
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.9.2</a>.</p>
<p>Generated by <a href="https://pdoc3.github.io/pdoc"><cite>pdoc</cite> 0.10.0</a>.</p>
</footer>
</body>
</html>
Loading

0 comments on commit d615dd1

Please sign in to comment.