Intersatellite angles-only measurement type

Do you have a recommendation for how to build angles-only measurements between satellites, similar to InterSatellitesRange (InterSatellitesRange (ORbit Extrapolation KIT 11.2.1 API)) but with a right ascension and declination result (or similar) rather than a range result?
Thank you.

Hi @erinf

Welcome to the Orekit forum!

My only recommendation is to look at the differences between Range and InterSatelliteRange in order to apply the same philosophy to AngularRaDec class to build the InterSatellitesRaDec class.

Please note that it is a feature we want in Orekit since years. If you are interested in contributing it we would be very happy.

Best regards,

Thank you! I will look into it.

Hi @erinf

I would also be interested in this feature. Did you get the chance to work on the implementation ? If not, I can also look into it.


Hello @cmasson,
I have been working on InterSatellitesAngularRaDec and InterSatellitesAngularRaDecBuilder objects, but I am having trouble building a jar file to test and debug these objects.
(See this conversation: Error when building Orekit using Maven - #4 by bradh)
I haven’t had a chance to keep working on my Maven issue since I lasted responded to bradh in that thread.
I would be happy to see this capability in Orekit, whether you or I get there first!

I have now started working on an InterSatellitesAngularRaDec again. Currently I’m getting this error:

"incompatible types: double cannot be converted to org.orekit.time.AbsoluteDate "

associated with this line of code:
“estimated.setParameterDerivatives(driver, raDerivatives[index], decDerivatives[index]);”

Here is the line of code above in context:

// Prepare the estimation
final EstimatedMeasurement< InterSatellitesAngularRaDec > estimated;
estimated =
new EstimatedMeasurement<>(this, iteration, evaluation,
new SpacecraftState[] {
}, new TimeStampedPVCoordinates[] {
remote.shiftedBy(delta - tauD.getValue()).getPVCoordinates()


    // right ascension - declination values
    estimated.setEstimatedValue(rightAscension.getValue(), declination.getValue());

    // Partial derivatives of right ascension/declination in reference frame with respect to state
    // (beware element at index 0 is the value, not a derivative)
    final double[] raDerivatives  = rightAscension.getGradient();
    final double[] decDerivatives = declination.getGradient();
            Arrays.copyOfRange(raDerivatives, 0, 6), Arrays.copyOfRange(decDerivatives, 0, 6));
            Arrays.copyOfRange(raDerivatives, 6, 12), Arrays.copyOfRange(decDerivatives, 6, 12));

    // Partial derivatives with respect to parameters
    // (beware element at index 0 is the value, not a derivative)
    for (final ParameterDriver driver : getParametersDrivers()) {
        final Integer index = indices.get(driver.getName());
        if (index != null) {
            estimated.setParameterDerivatives(driver, raDerivatives[index], decDerivatives[index]);

    return estimated;

Can anyone offer any thoughts about why setParameterDerivatives would expect an AbsoluteDate?
Thank you,

Hi @erinf

ParameterDriver are now time stamped in Orekit. To help you, you can look at the following lines of code from AngularAzEl class:

for (final ParameterDriver driver : getParametersDrivers()) {

            for (Span<String> span = driver.getNamesSpanMap().getFirstSpan(); span != null; span = {
                final Integer index = indices.get(span.getData());
                if (index != null) {
                    estimated.setParameterDerivatives(driver, span.getStart(), azDerivatives[index], elDerivatives[index]);


Thanks, @bcazabonne! I’m not getting the error any more.
I’m going to do some testing with my code to see if it produces the results I expect.