Hello everyone!! I tried to implement estimation of reflection coefficient using BatchLS. Here’s my code:
initial_value = 1.5
scale_factor = 0.067
lower_bound = 1.
upper_bound = 2.
isotropicRadiationSingleCoeff = IsotropicRadiationSingleCoefficient(10.0, initial_value)
solarRadiationPressure = SolarRadiationPressure(sun, wgs84Ellipsoid.getEquatorialRadius(), isotropicRadiationSingleCoeff)
reflection_param = solarRadiationPressure.getParametersDrivers().get(0)
reflection_param.setMinValue(lower_bound)
reflection_param.setMaxValue(upper_bound)
reflection_param.setReferenceValue(initial_value)
reflection_param.setScale(scale_factor)
reflection_param.setSelected(True)
parameter_observer = ParameterObserver.valueChanged(float(solarRadiationPressure.getParametersDrivers().get(0).getValue()),
ParameterDriver("reflection_param", initial_value, scale_factor, lower_bound, upper_bound))
reflection_param.addObserver(parameter_observer)
propagatorBuilder.addForceModel(solarRadiationPressure)
Can someone tell me what am I doing wrong?? A following error occurs:
TypeError: descriptor 'valueChanged' for 'ParameterObserver' objects doesn't apply to a 'float' object
The code works without observer, but I want to get a value of reflection parameter for each iteration. Besides, code gives inappropriate result for GEO, which is close to results of IodGooding:
Gibbs:
Keplerian parameters: {a: 4.240057888814118E7; e: 0.004565616165528337; i: 0.09156350509937108; pa: 169.65363782985855; raan: 91.0134171094278; v: -18.903633576322076;}
Gooding:
Keplerian parameters: {a: 6.993022900990523E7; e: 0.3347392113087113; i: 0.5890569678045681; pa: -108.07132218757638; raan: -12.643296530529136; v: 2.5872234997974974;}
Estimated:
Keplerian parameters: {a: 7.107918982692797E7; e: 0.3455327370588846; i: 0.5904904274520356; pa: -108.72866055382211; raan: -12.167251671585113; v: 2.769254453957682;}