satellite orbit computation in IDL [message #38329] |
Wed, 03 March 2004 16:39  |
cseynat
Messages: 1 Registered: March 2004
|
Junior Member |
|
|
Hello all,
I am looking for IDL routines computing satellite positions as a
function of time, given a set of initial orbital parameters.
I have implemented basic orbit computation routines myself (based on
Keplerian parameters), but I am looking for very accurate orbit
propagation involving atmospheric drag, luni-solar perturbations,
earth tides etc.
I have looked on the IDL libraries available on the web but did not
find anything. If you have implemented such routines or if you can
suggest who I can contact, I would very much appreciate to hear from
you.
Many thanks
Cedric
|
|
|
|
Re: satellite orbit computation in IDL [message #38435 is a reply to message #38329] |
Mon, 08 March 2004 06:55   |
schaa
Messages: 10 Registered: March 2004
|
Junior Member |
|
|
Cedric Seynat wrote:
> Hello all,
>
> I am looking for IDL routines computing satellite positions as a
> function of time, given a set of initial orbital parameters.
>
> I have implemented basic orbit computation routines myself (based on
> Keplerian parameters), but I am looking for very accurate orbit
> propagation involving atmospheric drag, luni-solar perturbations,
> earth tides etc.
>
> I have looked on the IDL libraries available on the web but did not
> find anything. If you have implemented such routines or if you can
> suggest who I can contact, I would very much appreciate to hear from
> you.
Hi Cedric,
perhaps the NAIF-group from NASA provides something that you are
looking for: high precision orbit calculations. The tool provided by
NAIF is called Spice, take a look at the website
http://naif.jpl.nasa.gov/naif.html.
This week the Icy-package for IDL version 1.0 (!) is out and can be
found on the ftp-server of NAIF, (under 0:/pub/naif/misc/edw/icy/).
Icy has to be linked against IDL's export.h (external directory) and
can be used as a dlm-kind of thing ...
An example from the Spice-tutorial is:
""
Check whether the angle between (Cassini) camera boresight and
direction to Sun is within allowed range:
cspice_spkpos( �SUN', ET, �CASSINI_ISS_NAC', �LT+S', �CASSINI',
SUNVEC, LT )
angle = VSEP( NAC_BORESIGHT_nac, SUNVEC )
""
and a lot more ...
It's open source, free and Naif answers Mails!
Best regards
-Ralf
|
|
|
Re: satellite orbit computation in IDL [message #38449 is a reply to message #38329] |
Fri, 05 March 2004 15:42   |
Roberto Monaco
Messages: 11 Registered: August 2002
|
Junior Member |
|
|
Cedric,
I took an existing C implementation of the SGPSDP orbital model by NORAD (I
can't remember the link now) and wrapped it into a DLL, so that I could use
from IDL (under Windows). I don't have this in an FTP server, but if you are
interested I can send you the DLL, DLM, and a test IDL program (that shows how
to use it).
To get meaningful information you need an actualized TLE file for the
satellite or satellites you are interested in, which you can get from
http://www.celestrak.com
There are two main functions from IDL:
- SGPSDP_INIT(tle_file, satellite_ID)
- SGPSDP_GETSAT (date_time, satellite_structure)
You call the SGPSDP_INIT to load the satellite orbital parameters from the TLE
file (for a certain satellite), and to do some initializations. After this you
call SGPSDP_GETSAT as many times as needed, to get the geographical position
of the satellite (latitude, longitude, altitude) for a certain time (Julian
date). This last function assumes a satellite structure which is shown in the
IDL test program. SGPSDP_GETSAT also copies the previous time and position in
the structure for convenience of use (I thought it was good to keep both,
previous call and current call data together). You need to call SGPSDP_INIT
again only if you change satellite, or TLE file, or both.
There is a third function that defines the position of an observer, needed to
determine if the satellite is eclipsed or under sun light from the observer's
position (if you care about this):
- SGPSDP_SETOBS(observer_data)
I don't have a documentation page (sorry), but I think all the parameters are
shown in the test program.
I tested this against data provided in NORAD documentation, also using Dr.
Kelso TrakStar program (http://www.celestrak.com), and finally with STK. It
looks OK, but I can't honestly say that I have tested it thoroughly.
Regards,
Roberto Monaco
rmonaco@coresw.com
|
|
|
Re: satellite orbit computation in IDL [message #39043 is a reply to message #38329] |
Mon, 12 April 2004 12:53  |
Roberto Monaco
Messages: 11 Registered: August 2002
|
Junior Member |
|
|
Cedric,
I am sending you a copy. Let me know how it fits within your application, and
any comments/feedback.
Cheers,
Roberto
"CED" <cseynat@swiftdsl.com.au> wrote in message
news:ffa744684128602b8872c73db657d192@localhost.talkaboutpro gramming.com...
> Hello Roberto,
>
> Yes I'd like to have a look at the DLL you generated, and how you used it
> with IDL.
>
> From my experience, calling a Windows DLL from IDL is not totally robust
> and I sometimes got trouble with this method, especially when the DLL is
> called in an IDL loop.
>
> I need to compute orbits of GPS satellites and there are about 30 of them,
> so I may run into performance problems by calling a Windows DLL, but it is
> worth a try.
>
> I would appreciate if you cold send me your code, as mentioned in your
> reply.
>
> Thanks for your help,
>
> Cedric
>
|
|
|
Re: satellite orbit computation in IDL [message #39044 is a reply to message #38449] |
Sun, 11 April 2004 18:57  |
CED
Messages: 2 Registered: April 2004
|
Junior Member |
|
|
Hello Roberto,
Yes I'd like to have a look at the DLL you generated, and how you used it
with IDL.
From my experience, calling a Windows DLL from IDL is not totally robust
and I sometimes got trouble with this method, especially when the DLL is
called in an IDL loop.
I need to compute orbits of GPS satellites and there are about 30 of them,
so I may run into performance problems by calling a Windows DLL, but it is
worth a try.
I would appreciate if you cold send me your code, as mentioned in your
reply.
Thanks for your help,
Cedric
|
|
|