InterSatellitesRange and BatchLSEstimator

Hi everyone,

I am trying to perform an orbit determination for a user spacecraft by means of inter-satellite ranges (within satellites whose orbits are known). I first created four NumericalPropagatorBuilder objects, one for the user and three for the reference satellites: builder_user, builder_sat_1, builder_sat_2, builder_sat_3. I then deactivated the ParametersDrivers of the reference satellites to avoid estimating them.

Then, I built a list with the four NumericalPropagatorBuilder objects:

builder_array = [builder_user, builder_sat_1, builder_sat_2, builder_sat_3]

and created the estimator as

optimizer = LevenbergMarquardtOptimizer()
estimator = BatchLSEstimator(optimizer, builder_array)

Regarding the ObservableSatellite objects, I did the following:

obs_user = ObservableSatellite(0)
obs_sat_1 = ObservableSatellite(1)
obs_sat_2 = ObservableSatellite(2)
obs_sat_3 = ObservableSatellite(3).

Now, I am not sure if adding a measurement (for instance, within the first satellite) like this is correct:

estimator.addMeasurement(obs_user, obs_sat_1, True, date, float(range_two-way_sat_1), float(sigma_two-way_sat_1), float(baseWeight)))

Will the estimator understand, that the measurement is performed between the satellites whose NumericalPropagatorBuilder objects are builder_user and builder_sat_1? I am not sure if the ObservableSatellite index (0-user, 1-sat_1, 2-sat_2 and 3-sat_3) maps into the builder I provide to the estimator, that was builder_array = [builder_user, builder_sat_1, builder_sat_2, builder_sat_3].

Maybe I am missing something easy here, but didn’t manage to understand it! I also found other topics on the forum but none of them really helped me..

Thanks a lot.
Samuele

Hi @samuele,

It’s been a while since I dug into OD but yes I think it should.
Maybe it could be added in the documentation of the batch LS model.
Here is the explanation:

Thank you so much @MaximeJ!!

1 Like