brandon-rhodes / pyephem

Scientific-grade astronomy routines for Python
Other
781 stars 121 forks source link

Orbit propagation, considering Moon, Sun, zonal harmonics, Jupiter and Venus #147

Closed tmamedzadeh closed 6 years ago

tmamedzadeh commented 6 years ago

I was suggested to use PyEphem as the best way to propagate the orbit of a satellite.

I'm going to propagate in 1 year, considering the effects of Moon, Sun, zonal harmonics and probably, Jupiter and Venus. What I really need, is to find the change in argument of perigee in 1 year under the mentioned perturbations.

Does PyEphem really capable to do this?

brandon-rhodes commented 6 years ago

PyEphem might be useful for giving you positions for the other bodies, yes, but it won't do any of the math for you related to the orbit — you'll need to be prepared to propagate its elements yourself, probably using differential equations or Bessel functions, I would guess? I'm not sure that Venus would be a big enough effect to include it, but of course your numbers will in the end tell you that — I would guess that unpredictable events like solar flares would affect an Earth satellite more heavily.

I'm not sure whether the rate of change of the argument of perigee is even predictable a year out, but I assume you'll be consulting textbooks on orbital mechanics and so will soon know far more about that than I do.

And how often do satellites go a full year without doing any course correction, which would throw off the prediction? I don't know.

You might find Skyfield's x,y,z vectors are easier to do math with than PyEphem's RA/dec angles, but either way I suspect that most of the work will come after you've invoked a library to learn the locations of things.

tmamedzadeh commented 6 years ago

Thank you! Is it possible to do this math with PyEphem or Skyfield? Or, I have to solve the differential equations using another libraries?

Why I'm analyzing the change in the argument: It's the stability test for the chosen orbit

brandon-rhodes commented 6 years ago

PyEphem and Skyfield simply produce positions using pre-calculated tables for the planets and Moon, and for Earth satellites using the SGP4 algorithm. My guess is that you'll next need to study SGP4 and understand its design decisions and limitations and simplifications and sources of error, in order to generate your own custom approach to trying to predict the satellite orbit out much farther than SGP4 can.

tmamedzadeh commented 6 years ago

Do you mean, that this calculates the position of objects on the basis of their keplerian elements using SGP4? I thought, PyEphem/Skyfield has also numerical propagator.

Thank you! We may close this question.

tmamedzadeh commented 6 years ago

Brandon, another quick question. If you can use SGP4 with given keplerian elements, so you can generate TLE from those elements? Could you, please, show/refer how to generate appropriate TLE's? Probably, there is a such functionality in Skyfield?

brandon-rhodes commented 6 years ago

Skyfield and PyEphem can only consume TLE's, not produce them — I use https://celestrak.com/ to download them when I'm curious where a satellite is. Producing TLE's is typically something that satellite tracking organizations in governments and private industry do. NORAD does quite a bit of work in that area, for example. You'll either need your own tracking stations to make observations of the satellite you're interested in, or else need to find a source of observations that you can combine to produce orbital elements; I've never undertaken that process myself.

tmamedzadeh commented 6 years ago

But here the propagation initiated by orbital elements is described. That's why I'm asking about TLE's generation.

brandon-rhodes commented 6 years ago

“When you load minor objects like comets and asteroids” — that section is about how PyEphem lets you see the orbital elements you've "loaded" from a catalog, as described in the section just above that in the docs:

http://rhodesmill.org/pyephem/quick.html#catalog-format

When you load an .edb file or .tle file, someone else — the person who created the file — has generated the orbital parameters. PyEphem just reads them in and can tell you the position of an object on a given date predicted by those orbital elements.