I am trying to calculate the International Space Station (ISS) LVLH (Local-Vertical-Local-Horizontal) base vectors expressed in the ECEF/ITRF frame at a given time. The point is then to calculate the rotation matrix to rotate vectors in ECEF to LVLH (and vice-versa).

I have a procedure to do that, but I am not sure if it is done properly. So that's why I am asking help here to check what I am doing, presented next.

The ISS LVLH frame is defined as in the following picture:

enter image description here

Lets consider a specific time: 2019-Mar-24 00:31:53.135444 UTC.

First, the Skyfield library in Python is used to get the ISS position and its velocity vector for a specific time using the ITRF_position_velocity_error method of the sgp4lib.EarthSatellite class :

Longitude (deg), Latitude (deg), Altitude (km) : 55.34071583, 0.10055032, 408.59435164
Position unit vector (ITRF) : R == (0.56869428, 0.82254713, 0.00174319)
Velocity unit vector (ITRF) : V == (-0.47416977, 0.33092048, -0.81587662)

(The used TLE is :
1 25544U 98067A 19083.06129885 -.00367384 00000-0 -62017-2 0 9991
2 25544 51.6362 64.4008 0003657 146.0534 252.6576 15.52294152162032)

Then the LVLH X-Y-Z base vectors are calculated with :

Z = - R / ||R||
Y = Z X V
EDIT: should be : Y = Z X V / ||Z X V||
X = Y X Z

Which, in this case gives the values:

X = (-0.47480547, 0.33000101, -0.81587857)
Y = ( 0.67167383, -0.4631578 , -0.57821957)
Z = (-0.56869428, -0.82254713, -0.00174319)

Then, calculating the rotation matrix and inverting it is straightforward.

Is this method correct ?

Thanks in advance for the help.


Is this method correct ?

Not quite. You are assuming that $\hat r$ and $\hat v$ are orthogonal. A quick check shows that this is not quite the case. The ISS's orbit is not quite circular.

This means that while your $\hat y$ points in the right direction, it is not a unit vector. You can make it a unit vector by dividing by the magnitude. Then you can calculate $\hat z = \hat x \times \hat y$. Unfortunately, this also will not be a unit vector due to the vagaries of floating point arithmetic, but it will be very close.

| improve this answer | |

Looks right to me to a first approximation.

One useful sanity check is that X comes out close to V (because the orbit is close to circular and thus V was already almost perpendicular to R to begin with).

Another is to note that the ISS was about to cross the equatorial plane (the ITRF $z$ coordinate of R is almost zero) and moving in a direction a little further south than southeast: V forms an angle of 54.67 degrees with this plane. This is larger than the 51.6° orbital inclination because the ITRF is co-rotating eastward with the Earth. The velocity unit vector expressed in an inertial frame would have a slightly larger component towards local east and would thus form a more acute angle with the equatorial plane.

However, I believe you'll have to compensate for this "aberration" effect to get the correct Y and then X. (Consider a LEO satellite in a circular polar orbit at the moment it crosses the equatorial plane from south to north. It will have the north celestial pole right in front of it: X = (0, 0, 1). But its V in terms of the ITRF will point a bit W of due north because the ITRF keeps moving eastward by roughly half a km/s above the equator, the precise value depending on the satellite's altitude.)

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.