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.

Cheers,
Maxime

1 Like

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 !