Measurement Generation - Sigma input for Theoritical orbit

Hi guys,

I begin to be painful with my questions I know I’m really sorry, but there something I cannot understand with the Measurements generation (both manual method, ie, theoritical orbit, data noise & manual generation of the Measurements objects AND the method proposed by @yzokras with EventBasedScheduler in this exemple orbit-determination-examples/00-generate-measurements-and-tle.ipynb at 022bae63bef6263972ab85b6bc81eaa0b3e6b4ee · GorgiAstro/orbit-determination-examples · GitHub ).

The question is :
When I’m generating measurements from the theoritical orbit (without noise), why do I have to put real sigma values in the constructor of the measurement ?

RangeBuilder(noise_sources[‘noise_source_range’],
GroundStation(topocentric_frame),
True, # two-way
sigma_range,
1.0, # Base weight
observable_satellite)

Given that the range value presented here is perfect for theoritical orbit, I thought that the associated error should be 0 (or 1e-6 because of the decomposition of the Jacobean matrix), but, I just noticed that if I put 1e-6 everywhere, my IOD and BLS are convergering to a wrong orbit.

Thank you in advance for the clarification.

PS : I take advantage of this post to ask another question, why the AngularAzEl object do not need the information TwoWay as an input ? This measurement is also depending of the drift during the time needed by the signal to go to the Radar/Telescope, isn’t it ?

The reason is that the builder will… build a measurement, and the measurements stores the sigma so it can be used later by orbit determination as a normalizing parameter.

Thank you again @luc for your help but this time I’m not sure to understand the answer.

I’m aware that the a value of sigma is necessary to build a measurement. The thing I cannot understand is why should I put the real value of sigma_range of my Groundstation if I’m using real positions. I tought I had to put the sigma value used to generate the range, but with real position, the sigma value should be close to zero ?
Also, I do not understand why if I put to small values for the generation of the measurement, the estimator will converge to the wrong orbit.
Finally, in a first time, I used constant values of sigma (range, range_rate, az & el). If I put those values as an input of the perfect Measurement, the Batch is converging perfectly to the real orbit. BUT,
after that I used varying values of sigma for each measurement, funtion of the range (sigma_az = f(range) ), this time, also with perfect Measurements, the batch is not converging perfectly to the real orbit.

HI guys !

I have another question about the sigma values in input of the Measurements generation.

Here is the problem:
I’m using varying values of sigma (function of the range) to noize my perfect radar measurements (Az, El, Range). But, when I use those varying values to generate the Measurements objects in order to use them in my BLS, the algorithm is not working because of Singular Matrix. I’m using a thresshold of 10e-6.

Keplerian Orbit => Dataframe with perfect measurements => Dataframe with noised measurements (from varying sigmas values) => Measurement objects generation (Range, Azimuth, Elevation) => Feeding BLS

for date, point in dfnoised.iterrows():

  • Range = (groundstation, False, date, point[‘range’], point[‘sigma_range’], 1., unknownSat)

If I just set a fixed value for the sigma, the algorithm is working (but I can observe a biais when I perform a chi2 test on the cost function:

for date, point in dfnoised.iterrows():

  • Range = (groundstation, False, date, point[‘range’], 100., 1., unknownSat)

Is anyone to explain to me why it’s not working with the good values and why it’s working with wrong values ?

Thank you in advance