Estimating drag in a batch least squares estimator

Hi,

DragSensitive is an interface used to represent the geometry of the spacecraft for the drag perturbation. It has two implementations: IsotropicDrag assuming that the spacecraft is spherical and BoxAndSolarArraySpacecraft assuming the spacecraft is a box with solar panels. For a first use, I strongly recommend to use the IsotropicDrag implementation. Please find an example below showing how to initialize a DragForce.



final double       cd          = 2.0; // Use your value
final double       area        = 1.0; // Use your value
final boolean      cdEstimated = true; // You want to estimate it

// Atmosphere model
final MarshallSolarActivityFutureEstimation msafe =
                            new MarshallSolarActivityFutureEstimation(MarshallSolarActivityFutureEstimation.DEFAULT_SUPPORTED_NAMES,
                                                                      MarshallSolarActivityFutureEstimation.StrengthLevel.AVERAGE);
final DataProvidersManager manager = DataContext.getDefault().getDataProvidersManager();
manager.feed(msafe.getSupportedNames(), msafe);
final Atmosphere atmosphere = new NRLMSISE00(msafe, CelestialBodyFactory.getSun(), centralBody);

final DragForce drag = new DragForce(atmosphere, new IsotropicDrag(area, cd)), Constants.WGS84_EARTH_MU);

for (final ParameterDriver driver : drag.getParametersDrivers()) {
    if (driver.getName().equals(DragSensitive.DRAG_COEFFICIENT)) {
        if (cdEstimated) {
                        driver.setSelected(true);
        }
    }
}

You can find additional information on the following discussion: https://forum.orekit.org/t/using-nrlmsise-00-with-numerical-propagator/1875/3

Best regards,
Bryan