Hello,
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,
Bryan
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.
Cheers
Clément
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!
Erin
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[] {
local.shiftedBy(deltaMTauD.getValue()),
remote.shiftedBy(deltaMTauD.getValue())
}, new TimeStampedPVCoordinates[] {
local.shiftedBy(delta).getPVCoordinates(),
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();
estimated.setStateDerivatives(0,
Arrays.copyOfRange(raDerivatives, 0, 6), Arrays.copyOfRange(decDerivatives, 0, 6));
estimated.setStateDerivatives(1,
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,
Erin
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 = span.next()) {
final Integer index = indices.get(span.getData());
if (index != null) {
estimated.setParameterDerivatives(driver, span.getStart(), azDerivatives[index], elDerivatives[index]);
}
}
}
Regards,
Bryan
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.
Erin