Initial commit

This commit is contained in:
ThePetrovich 2026-08-18 22:01:53 +08:00
commit 5fb00f30d1
22 changed files with 1128 additions and 0 deletions

37
README.md Normal file
View file

@ -0,0 +1,37 @@
# yksa-orbital
Propagation for YKSA Django services. See [yksa_orbital/README.md](yksa_orbital/README.md)
for the API, the backends and the sidecar contract — that document moved here
with the code and is the reference.
```
yksa-orbital @ git+https://git.intra.yksa.space/web/yksa-orbital.git@v0.1.0
```
```python
INSTALLED_APPS = [..., "yksa_orbital", ...]
ORBITAL_PROPAGATOR_BACKEND = "sgp4" # or "orekit"
OREKIT_SERVICE_URL = "http://orekit:5000"
```
## Status
Extracted from the `tle` repo, where it was already the right shape: a backend
registry, a wire format and a config reader, with no Django models. It is used
by `odms` today.
`ops` and `tdas` still have their own propagation code
(`ops/yksa_ops/orbits/propagate.py`, `tdas/yksa_tdas/location/propagate.py`) and
should move onto this package next. Two things are missing before they can:
- **`ops`** needs a `passes(station, satellite, window)` entry point. Its pass
prediction currently uses Skyfield, which this package does not wrap.
- **`tdas`** needs the sub-satellite point and ECI/ECEF state vectors it computes
itself. Those the `sgp4` backend already provides, so that port is the
smaller of the two.
Until both are done the estate still describes the same satellite through three
code paths, which is the reason this package exists.
The Orekit sidecar itself stays in `tle/services/orekit` — it is a container, not
a Python package, and moving it is a deployment change rather than an extraction.