Hello,
I am trying to do orbit determination using the KalmanEstimator provided by Orekit. My objective is to estimate the orbit (the 6 orbital parameters) but also the drag coefficient of my satellite.
To do so, I select the parameterDriver “drag coefficient” of my numercialPropagatorBuilder as “true”. Then, I create my KalmanEstimatorBuilder using this numericalPropagatorBuilder. Finaly, I get the value of the drag coefficient after each estimation step.
// Drag force
double dragCoef = 1000.; //the dragCoeff used to generate the measures is equal to 2.2
IsotropicDrag dragModel = new IsotropicDrag(crossSectionMass, dragCoef);
DragForce dragForce = new DragForce(constants.atmosphere, dragModel);
numericalPropagatorBuilder.addForceModel(dragForce);
// Parameter driver
ParameterDriver dragDriver = numericalPropagatorBuilder.getPropagationParametersDrivers().findByName("drag coefficient");
dragDriver.setSelected(true);
and :
for(ObservedMeasurement<?> measure : measurementsSetsList.get(0)) {
Propagator[] propagatorEstimated = kalmanEstimator.estimationStep(measure);
ParameterDriversList propagatorParameters = kalmanEstimator.getPropagationParametersDrivers(true);
List<ParameterDriver> list = new ArrayList<>(propagatorParameters.getDrivers());
for(ParameterDriver driver : list) {
if (driver.getName().equals("drag coefficient")) {
System.out.println(driver.getValue());
}
}
However, it seems that the value of the drag coefficient is not estimated by the filter, as its value doesn’t change at all from its initial value, even when I set it with an aberrant value.
I suppose I made a mistake using the ParameterDriver class but I really don’t see where…
Thanks in advance for your help!
Paul