satellogic / orbit-predictor

Python library to propagate satellite orbits.
MIT License
140 stars 43 forks source link

Pass prediction fails for deep space objects #98

Open ajwolfram opened 4 years ago

ajwolfram commented 4 years ago

Orbit prediction on deep space objects (orbital period > 225 minutes) almost always fails due to the assert statement in _find_aos in the base predictor. The assert statement requires the starting elevation to be less than zero, however, for the deep space objects I'm testing, the start elevation that is calculated in _find_aos seems to almost always be between 0 and 1 radians. Thus, get_next_pass and passes_over almost always fail for deep space objects. How can I resolve this? Is this an issue with the orbit step size?

astrojuanlu commented 4 years ago

Hi @ajwolfram , thanks for your interest in orbit-predictor! We have never tried to use it for deep space objects, so it's very likely that there are bugs. Can you paste an excerpt of your code so we can reproduce?

ajwolfram commented 4 years ago

Hi @astrojuanlu! Here's the offending code:

import datetime

from orbit_predictor.sources import get_predictor_from_tle_lines
from orbit_predictor.locations import Location

# MAQSAT/ARIANE 5
predictor = get_predictor_from_tle_lines(
    ('1 25503U 98059A   20252.20879031 -.00000054  00000-0 -24376-2 0  9992',
     '2 25503   7.0466 262.2333 7006939 166.3646 232.7881  2.24574052179590'))

loc = Location('seattle', 47.6062, 122.3321, 53.34)
next_passes = iter(predictor.passes_over(loc, datetime.datetime.utcnow()))
for i in range(50):
    next(next_passes)