AngularAzEl to RaDec

Hello everyone!

I’m currently using the Orekit Python wrapper, and I want to do orbit determination from a TDM file. I build a Tdm object from my own TDM file, and I want to convert AngularAzEl from the file to an AngularRaDec to perform IodGooding initial orbit determination.

Is there an easy way to perform this conversion ?

Thank you very much!
Cheers

Hi @paulolvsq,

Welcome to the Orekit forum !!

There is an old discussion about the inverse transform here: RADEC to AZEL conversion.
Would that be enough to help you or do you need more info ?

Cheers,
Maxime

1 Like

Thank you for your answer !

In fact I’m not sure to understand.

In the beginning, I wanted to use myTopocentricFrame.pointAtDistance with my azimuth, elevation and range found in my TDM file to get a GeodeticPoint corresponding to the position of my satellite. With this GeodeticPoint, I can get the latitude and longitude of my satellite. I’m not familiar at all with space mechanics, so I’m pretty sure that I don’t go in the right way using this method.

I’ve read the topic you send me in your answer, I saw that I’m really missing something with the referentials and the rotations…

I tried to follow the content of the topic you sent me, so I decided to try this to get a Transform object: groundStation.getOffsetToInertial(myTopocentricFrame, clockDate), and I get an error : uninitialized reference date for the prime-meridian-offset parameter

Thank you very much in advance !

You are very welcome.

You can get the station position at a given date in your favorite inertial frame with:

staPosInertial = station.getBaseFrame().getPVCoordinates(date, inertialFrame).getPosition()

Notice that I used the baseFrame instead of the offsetFrame because it is much more simple and suited (I think) to your needs.

Using the baseFrame should avoid this error.

Then, if you have range (in meters) and az, el (in radians).
The line of sight (LOS) in topocentric frame:

Vector3D losTopo = new Vector3D(az, el).scalarMultiply(range);

(Beware here that the azimuth definition may be given from the North axis of the Topocentric frame while you want the angle from the X axis (towards the East) in the constructor of Vector3D; so you may have to use \pi/2 - az instead of az directly)

The Transform from topocentric to inertial frame:

Transform topoToInertial = station.getBaseFrame().getTransformTo(inertialFrame);

Transforming the LOS from topocentric to inertial:

Vector3D losInertial = topoToInertial.transformPosition(losTopo);

Then you should be able to use directly the IOD Gooding method that works with the line of sights:

IodGooding iodGooding = new IodGooding(Constants.EIGEN5C_EARTH_MU);
KeplerianOrbit orbit = iodGooding.estimate(inertialFrame, staPosInertial1, staPosInertial2, staPosInertial3, losInertial1, date1, losInertial2, date2, losInertial3, date3, range1, range3);

The output keplerian orbit will be in inertialFrame at date2.

Note that I’ve written this code on the fly in the forum interface so it is not a tested code.

Hope this helps,
Maxime

1 Like

Hey Maxime !

Thanks for the answer !

I tried your solution, it seems to work ! Thank you very much !!!

Best regards,
Paul

Hi and thanks for bringing up this topic.
A small question to @MaximeJ, thanks for the code and transormations.

I was wondering, the obtained Vector3D losInertial = topoToInertial.transformPosition(losTopo); are they equal to the position of the spacecraft in the inertial frame?

If yes, can we then use a IOD from Gibbs? Like

KeplerianOrbit iod = new IodGibbs(Constants.EIGEN5C_EARTH_MU).estimate(intertialFrame,
        losInertial1, date1,
        losInertial2, date2,
        losInertial3, date3);

As we have obtained the position and date for 3 points?

Thanks
Alberto

Hi Alberto,

Yes. On a personal note, I tend to keep the use of the term line of sight for a unit vector, so a purely angular piece of information.

Best,
Romain.