How to caculate the relative velocity(speed)?


I’m doing some work about SAR Sat.

I need to caculate the “relatvie speed of Satellite to the SAR Beam heart on earth surface”,

I have got the satellite eph(with velocity vector) and the latlon of Sar Beam heart.

the following is my idea:

1、transform the satellite ECI Postion and velocity of given time into topocentric frame by beam heart latlon.
2、get norm of velocity vector in topocentric.

is that correct?

the guy who will use this data told me that my result is not right.

i’m very confused,and can not found what’s the problem.

hope someone could give me some advice.


Hi @youngcle,

Computation of derivatives of Earth intersections is often tricky with lots of pitfalls. For example, due to ellipsoid shape the velocity of the sub-satellite point is twisted with respect to the projection of the satellite velocity, and this becomes worse if the line is not orthogonal to the ground, i.e. if your beam is pointing away from nadir.

For this reason, Orekit provides methods dedicated for this computation. Some are in the OneAxisEllipsoid class but are low level and requires you to provide the line of sight by applying attitude transform by yourself. There is however a higher level method in the GroundPointing abstract class for some attitude providers (BodyCenterPointing, LofOffsetPointing, NadirPointing, TargetPointing, YawCompensation, and YawSteering). This method is called getTargetPV. The javadoc states it is public only to allow users to subclass the GroundPointing abstract class from other packages and not intended to be used directly, but it is safe to use (we could probably remove this warning in the javadoc).
This method provides a TimeStampedPVCoordinates (or its field equivalent), from which you can retrieve the velocity. You can specify the frame in which you want this object, so the velocity should be interpreted according to the selected frame.

1 Like