Error using InterSatellitesRange measurements in BatchLS estimation

Hello,
I am trying to perform BatchLS estimation on a series of InterSatellitesRange measurements. I am receiving the following error. Any thoughts on what might be happening?

org.orekit.errors.OrekitException: unable to perform Q.R decomposition on the 6x6 jacobian matrix
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:441)
Caused by: org.hipparchus.exception.MathIllegalStateException: unable to perform Q.R decomposition on the 6x6 jacobian matrix
at
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.qrDecomposition(LevenbergMarquardtOptimizer.java:982)
at
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.optimize(LevenbergMarquardtOptimizer.java:346)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435)

Further details:
To get started, I have 2 local sats & 1 remote sat, and I only have 3 measurements of the remote sat for each local sat (over a period of 2 hours). Here is what I see when I print information about the 6 measurements to the screen:
measurement =
org.orekit.estimation.measurements.InterSatellitesRange@10c26e1b
sats:
[org.orekit.estimation.measurements.ObservableSatellite@7f4ee1ca, org.orekit.estimation.measurements.ObservableSatellite@6544a4d4]
observed value: 17604018.713

measurement =
org.orekit.estimation.measurements.InterSatellitesRange@25c8e4a2
sats:
[org.orekit.estimation.measurements.ObservableSatellite@26f9f4b6, org.orekit.estimation.measurements.ObservableSatellite@6544a4d4]
observed value: 60883263.5807

measurement =
org.orekit.estimation.measurements.InterSatellitesRange@2e310112
sats:
[org.orekit.estimation.measurements.ObservableSatellite@7f4ee1ca, org.orekit.estimation.measurements.ObservableSatellite@6544a4d4]
observed value: 17598547.8263

measurement =
org.orekit.estimation.measurements.InterSatellitesRange@6e937204
sats:
[org.orekit.estimation.measurements.ObservableSatellite@26f9f4b6, org.orekit.estimation.measurements.ObservableSatellite@6544a4d4]
observed value: 65368866.8561

measurement =
org.orekit.estimation.measurements.InterSatellitesRange@c9c6680
sats:
[org.orekit.estimation.measurements.ObservableSatellite@7f4ee1ca, org.orekit.estimation.measurements.ObservableSatellite@6544a4d4]
observed value: 17592857.9638

measurement =
org.orekit.estimation.measurements.InterSatellitesRange@65296fe1
sats:
[org.orekit.estimation.measurements.ObservableSatellite@26f9f4b6, org.orekit.estimation.measurements.ObservableSatellite@6544a4d4]
observed value: 67399073.3732

Thank you for any help.
Erin

Hi @erinf

Looks like an observability issue. Do you estimate only the state vector of the remote satellite or of the three satellites?

Regards,
Bryan

Hello @bcazabonne,
Thank you for getting back to me. I realized that I had not included propagators for the local satellites in the BatchLSEstimator, so I have now updated the estimator to include all three propagators. (See below the output when I print the drivers from the estimator.)

measurementsParametersDrivers =
[]

orbitalParametersDrivers =
[Px[0] = -5850993.249432947, Py[0] = -3.829300407173921E7, Pz[0] = 1.664684004389338E7, Vx[0] = 3045.144586341892, Vy[0] = -394.5786506184661, Vz[0] = 164.2225686077489, Px[1] = -2747606.681, Py[1] = 2.2572091306E7, Pz[1] = 1.3522761402E7, Vx[1] = -2729.515, Vy[1] = 1142.663, Vz[1] = -2523.906, Px[2] = -2.250761046779056E7, Py[2] = -3.265981444411464E7, Pz[2] = 1.42569764265936E7, Vx[2] = 2600.250545517001, Vy[2] = -1510.417306700876, Vz[2] = 645.7897224694455]

propagatorParametersDrivers =
[]

I also added more measurements, collecting measurements every 240 seconds for a day.
I still get this error though:
org.orekit.errors.OrekitException: unable to perform Q.R decomposition on the 720x18 jacobian matrix
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:441)
Caused by: org.hipparchus.exception.MathIllegalStateException: unable to perform Q.R decomposition on the 720x18 jacobian matrix
at
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.qrDecomposition(LevenbergMarquardtOptimizer.java:982)
at
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.optimize(LevenbergMarquardtOptimizer.java:346)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435)

I also tried the following, which I think means that I’m including information about the orbits of the local satellites in the estimator but not estimating those local sat orbits (assuming perfect knowledge of the local sats orbits):
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbit,…
integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
if isfield(spacecraft,‘orbitType’) && ~spacecraft.orbitType.isEstimated
drivers = builder.getOrbitalParametersDrivers();
for ii = 1:1:drivers.getDrivers().size()
drivers.getDrivers().get(ii-1).setSelected(false)
end
end

When I do this for the two local sats, I get the following when I print the drivers from the estimator:
measurementsParametersDrivers =
[]

orbitalParametersDrivers =
[Px[0] = -5850993.249432947, Py[0] = -3.829300407173921E7, Pz[0] = 1.664684004389338E7, Vx[0] = 3045.144586341892, Vy[0] = -394.5786506184661, Vz[0] = 164.2225686077489]

propagatorParametersDrivers =
[]

But I still get this error:
org.orekit.errors.OrekitException: unable to perform Q.R decomposition on the 720x6 jacobian matrix
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:441)
Caused by: org.hipparchus.exception.MathIllegalStateException: unable to perform Q.R decomposition on the 720x6 jacobian matrix
at
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.qrDecomposition(LevenbergMarquardtOptimizer.java:982)
at
org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.optimize(LevenbergMarquardtOptimizer.java:346)
at org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435)

Do you have any ideas about how I can further debug this issue?
Thank you,
Erin

I had a further thought on this topic.
Based on the fact that InterSatellitesRange takes as its input an ObservableSatellite for the remote satellite and also an ObservableSatellite for the local satellite, does that mean that we cannot assume that we have perfect knowledge of the local satellite’s orbit?

In other words, am I required to create measurements of the local satellite and estimate its orbit as well as the orbit of the remote satellite because of the fact that the local satellite is required to be an ObservableSatellite?

Thank you,
Erin

Here is some Matlab code that should be runnable by itself and produces the error I’m wondering about:

outputBaseName = ‘spacebased-tracking’;

%make an intersatellites range log
interSatsRangeLog.evaluations = java.util.TreeSet(java.util.Comparator.naturalOrder());
interSatsRangeLog.name = ‘intersatsrange’;
outputFileName = [FOLDER outputBaseName ‘-’ interSatsRangeLog.name ‘-residuals.out’];
fileIDInterSatsRange = fopen(outputFileName,‘w’);

%gravity field
degree = 1;
order = org.hipparchus.util.FastMath.min(degree, 1);
org.orekit.forces.gravity.potential.GravityFieldFactory.clearPotentialCoefficientsReaders();
org.orekit.forces.gravity.potential.GravityFieldFactory.addDefaultPotentialCoefficientsReaders(); %addPotentialCoefficientsReader(org.orekit.forces.gravity.potential.ICGEMFormatReader(‘eigen-6s.gfc’, true));
gravityField = org.orekit.forces.gravity.potential.GravityFieldFactory.getNormalizedProvider(degree, order);
mu = gravityField.getMu();

%frame
frame = org.orekit.frames.FramesFactory.getEME2000();

%Cartesian orbit
initialDate = org.orekit.time.AbsoluteDate(“2022-10-01T00:00:00.000Z”,…
org.orekit.time.TimeScalesFactory.getUTC());
pos = org.hipparchus.geometry.euclidean.threed.Vector3D(5.850993249432947e6,…
3.829300407173921e7, 1.664684004389338e7);
vel = org.hipparchus.geometry.euclidean.threed.Vector3D(3.045144586341892e3, -394.5787, 164.2226);
orbitGuess = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(pos,vel),…
frame,initialDate,mu);

%IERS conventions
conventions = org.orekit.utils.IERSConventions.valueOf([‘IERS_’, num2str(2010)]);

%central body (earth) body data
bodyFrame = org.orekit.frames.FramesFactory.getITRF(org.orekit.utils.IERSConventions.IERS_2010, true);
equatorialRadius = 6378137;
flattening = 1.0/298.2572;
body = org.orekit.bodies.OneAxisEllipsoid(equatorialRadius, flattening, bodyFrame);

%initialize propagator builder
integratorBuilder = org.orekit.propagation.conversion.DormandPrince853IntegratorBuilder(1e-3,…
300,0.0100);

%propagator builder
%Put the propagator builders together in a java array for use in the
%estimator.
propagatorBuilders = javaArray(‘org.orekit.propagation.conversion.NumericalPropagatorBuilder’,1);

%% The following propagator builder handles only the remote satellite (to be tracked).
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitGuess,…
integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 6100;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Sun”)));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Moon”)));
propagatorBuilders(1) = builder;
clear builder

%% This propagator builder handles local satellite 1.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(-2747606.681, 22572091.306, 13522761.402);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(-2729.515, 1142.663, -2523.906);
orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),…
frame,initialDate,mu);
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,…
integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 1630;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Sun”)));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Moon”)));
propagatorBuilders(2) = builder;
clear builder

%% This propagator builder handles local satellite 2.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(-2.250761046779056E+07, -3.265981444411464E+07, 1.425697642659360E+07);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(2.600250545517001E+03, -1.510417306700876E+03, 6.457897224694455E+02);
orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),…
frame,initialDate,mu);
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,…
integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 1630;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Sun”)));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Moon”)));
propagatorBuilders(3) = builder;
clear builder

%% This propagator builder handles local satellite 3.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(1.490552681049923E+06, -1.893933999024528E+06, 6.346234394324024E+06);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(7.429417575444744E+03, -3.505320122965324E+02, -1.845105264954836E+03);
orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),…
frame,initialDate,mu);
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,…
integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 1630;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Sun”)));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Moon”)));
% builder.getSelectedNormalizedParameters()
% drivers = builder.getOrbitalParametersDrivers().getDrivers()
% for ii = 1:1:6
% drivers.get(ii-1).setSelected(false);
% end
propagatorBuilders(4) = builder;
clear builder

%estimator
initialStepBoundFactor = 1.0e6;
optimizer = org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer().withInitialStepBoundFactor(initialStepBoundFactor);
convergenceThreshold = 1.0e-3;
maxIterations = 30;
maxEvaluations = 35;
estimator = org.orekit.estimation.leastsquares.BatchLSEstimator(optimizer, propagatorBuilders);
estimator.setParametersConvergenceThreshold(convergenceThreshold);
estimator.setMaxIterations(maxIterations);
estimator.setMaxEvaluations(maxEvaluations);

%local sat name
localSatName(1) = “LocalSat1”;
localSatName(2) = “LocalSat2”;
localSatName(3) = “LocalSat3”;
generator = org.orekit.estimation.measurements.generation.Generator;

%intersatellitesrange data
for ii = 1:1:3
localSats{ii}.name = localSatName(ii);
localSats{ii}.satellite = generator.addPropagator(propagatorBuilders(ii+1).buildPropagator(propagatorBuilders(ii+1).getSelectedNormalizedParameters()));
localSats{ii}.intersatellitesRangeSigma = 1.0;
end

satellite = org.orekit.estimation.measurements.ObservableSatellite(0);

%build measurements based on text file
fileName = ‘measurements.aer’;

%set up filtering for measurements files
%nd = org.orekit.data.DataSource(fileName, () → java.io.FileInputStream(java.io.File(FOLDER, fileName)));
nd = org.orekit.data.DataSource(java.io.File(FOLDER, fileName));
filterArray = javaArray(‘org.orekit.data.DataFilter’,3);
filterArray(1) = org.orekit.data.GzipFilter();
filterArray(2) = org.orekit.data.UnixCompressFilter();
filterArray(3) = org.orekit.gnss.HatanakaCompressFilter();
filterArrayAsList = java.util.Arrays.asList(filterArray);
for jj = 1:1:filterArrayAsList.size()
filter = filterArrayAsList.get(jj-1);
nd = filter.filter(nd);
end

%the measurements come from an Orekit custom file
measurements = java.util.ArrayList();
reader = nd.getOpener().openReaderOnce();
br = java.io.BufferedReader(reader);
lineNumber = 1;
line = br.readLine();
while ~isempty(line)
line = line.trim();
if line.length() > 0 && ~line.startsWith(“#”)
fields = line.split(“\s+”);
fields2 = char(fields(2));
if (fields.length < 2)
disp(org.orekit.errors.OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE);
end
if min([size(localSats,1),size(localSats,2)]) > 0
if fields.length ~= 4
disp([‘OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE’, lineNumber, filename, line]);
end
for jj = 1:1:size(localSats,2)
satString = char(localSats{1,jj}.name);
if contains(satString, char(fields(3)))
satelliteLocal = localSats{1,jj}.satellite;
end
end
if ~exist(‘localSats’) || isempty(localSats)
disp(['unknown local satellite ', char(line), ’ from ', char(filename)]);
end
thisDate = org.orekit.time.AbsoluteDate(fields(1), org.orekit.time.TimeScalesFactory.getUTC());
thisInterSatellitesRange = java.lang.Double.parseDouble(fields(4));
intersatellitesrange = org.orekit.estimation.measurements.InterSatellitesRange(satelliteLocal,…
satellite,false,thisDate,thisInterSatellitesRange,…
1.0,1.0);

        sum = 0;
        for ii = 1:1:size(intersatellitesrange.getBaseWeight(),2)
            w = intersatellitesrange.getBaseWeight();
            sum = sum + org.hipparchus.util.FastMath.abs(w(ii));
        end
        if sum > org.hipparchus.util.Precision.SAFE_MIN
            %we only consider measurements with non-zero
            %weight
            measurements.add(intersatellitesrange);
        end
    end
end
line = br.readLine();
lineNumber = lineNumber + 1;

end

%add measurements to estimator
for ii = 1:1:measurements.size()
measurement = measurements.get(ii-1);
estimator.addMeasurement(measurement);
end

%Print some info about the parameters drivers for this estimator
measurementsParametersDrivers = estimator.getMeasurementsParametersDrivers(1).getDrivers()
orbitalParametersDrivers = estimator.getOrbitalParametersDrivers(1).getDrivers()
propagatorParametersDrivers = estimator.getPropagatorParametersDrivers(1).getDrivers()
%set the observer and estimate orbit
estimator.setObserver(org.orekit.tutorials.estimation.common.OrbitDeterminationObserver(orbitGuess,…
[],…
estimator));
thisPropagator = estimator.estimate();

And here is content for the measurement.aer file:

2022-10-01T00:00:00.000Z INTERSATSRANGE LocalSat2 37692181.663085975
2022-10-01T00:00:00.000Z INTERSATSRANGE LocalSat3 38393467.421103060
2022-10-01T00:00:00.000Z INTERSATSRANGE LocalSat1 60883265.135936238
2022-10-01T00:04:00.000Z INTERSATSRANGE LocalSat3 38854700.685724363
2022-10-01T00:04:00.000Z INTERSATSRANGE LocalSat2 38911912.149839237
2022-10-01T00:04:00.000Z INTERSATSRANGE LocalSat1 61213545.959486470
2022-10-01T00:08:00.000Z INTERSATSRANGE LocalSat3 39533889.590324327
2022-10-01T00:08:00.000Z INTERSATSRANGE LocalSat2 40312428.696211010
2022-10-01T00:08:00.000Z INTERSATSRANGE LocalSat1 61542796.805951551
2022-10-01T00:12:00.000Z INTERSATSRANGE LocalSat3 40382783.797214881
2022-10-01T00:12:00.000Z INTERSATSRANGE LocalSat2 41796356.704386160
2022-10-01T00:12:00.000Z INTERSATSRANGE LocalSat1 61870192.563627899
2022-10-01T00:16:00.000Z INTERSATSRANGE LocalSat3 41344618.267115533
2022-10-01T00:16:00.000Z INTERSATSRANGE LocalSat2 43271537.566087067
2022-10-01T00:16:00.000Z INTERSATSRANGE LocalSat1 62194914.300298534
2022-10-01T00:20:00.000Z INTERSATSRANGE LocalSat3 42359200.194504529
2022-10-01T00:20:00.000Z INTERSATSRANGE LocalSat2 44655853.707022823
2022-10-01T00:20:00.000Z INTERSATSRANGE LocalSat1 62516150.635668844
2022-10-01T00:24:00.000Z INTERSATSRANGE LocalSat3 43367145.528530553
2022-10-01T00:24:00.000Z INTERSATSRANGE LocalSat2 45879579.109436736
2022-10-01T00:24:00.000Z INTERSATSRANGE LocalSat1 62833106.563696444
2022-10-01T00:28:00.000Z INTERSATSRANGE LocalSat3 44313026.945823953
2022-10-01T00:28:00.000Z INTERSATSRANGE LocalSat2 46886252.949388824
2022-10-01T00:28:00.000Z INTERSATSRANGE LocalSat1 63144993.178553216
2022-10-01T00:32:00.000Z INTERSATSRANGE LocalSat3 45147487.201104350
2022-10-01T00:32:00.000Z INTERSATSRANGE LocalSat2 47632672.832712293
2022-10-01T00:32:00.000Z INTERSATSRANGE LocalSat1 63451048.133158118
2022-10-01T00:36:00.000Z INTERSATSRANGE LocalSat3 45828645.332908168
2022-10-01T00:36:00.000Z INTERSATSRANGE LocalSat2 48088662.173599869
2022-10-01T00:36:00.000Z INTERSATSRANGE LocalSat1 63750508.161166735
2022-10-01T00:40:00.000Z INTERSATSRANGE LocalSat3 46322927.712520368
2022-10-01T00:40:00.000Z INTERSATSRANGE LocalSat2 48236666.406037770
2022-10-01T00:40:00.000Z INTERSATSRANGE LocalSat1 64042637.748261809
2022-10-01T00:44:00.000Z INTERSATSRANGE LocalSat3 46605638.530203938
2022-10-01T00:44:00.000Z INTERSATSRANGE LocalSat2 48071503.578300402
2022-10-01T00:44:00.000Z INTERSATSRANGE LocalSat1 64326722.021452069
2022-10-01T00:48:00.000Z INTERSATSRANGE LocalSat3 46661378.520972930
2022-10-01T00:48:00.000Z INTERSATSRANGE LocalSat2 47600211.291263402
2022-10-01T00:48:00.000Z INTERSATSRANGE LocalSat1 64602054.453303404
2022-10-01T00:52:00.000Z INTERSATSRANGE LocalSat3 46484393.536935017
2022-10-01T00:52:00.000Z INTERSATSRANGE LocalSat2 46842079.188703604
2022-10-01T00:52:00.000Z INTERSATSRANGE LocalSat1 64867958.108771734
2022-10-01T00:56:00.000Z INTERSATSRANGE LocalSat2 45828802.800402217
2022-10-01T00:56:00.000Z INTERSATSRANGE LocalSat3 46078937.113697536
2022-10-01T00:56:00.000Z INTERSATSRANGE LocalSat1 65123777.221322455
2022-10-01T01:00:00.000Z INTERSATSRANGE LocalSat2 44604737.939274326
2022-10-01T01:00:00.000Z INTERSATSRANGE LocalSat3 45459614.034399614
2022-10-01T01:00:00.000Z INTERSATSRANGE LocalSat1 65368865.733824447
2022-10-01T01:04:00.000Z INTERSATSRANGE LocalSat2 43227075.122179650
2022-10-01T01:04:00.000Z INTERSATSRANGE LocalSat3 44651709.239993557
2022-10-01T01:04:00.000Z INTERSATSRANGE LocalSat1 65602619.696350642
2022-10-01T01:08:00.000Z INTERSATSRANGE LocalSat2 41765667.257634886
2022-10-01T01:08:00.000Z INTERSATSRANGE LocalSat3 43691381.592092812
2022-10-01T01:08:00.000Z INTERSATSRANGE LocalSat1 65824440.202127412
2022-10-01T01:12:00.000Z INTERSATSRANGE LocalSat2 40302080.464518264
2022-10-01T01:12:00.000Z INTERSATSRANGE LocalSat3 42625602.060355164
2022-10-01T01:12:00.000Z INTERSATSRANGE LocalSat1 66033763.859158993
2022-10-01T01:16:00.000Z INTERSATSRANGE LocalSat2 38927084.042887114
2022-10-01T01:16:00.000Z INTERSATSRANGE LocalSat3 41511570.742696032
2022-10-01T01:16:00.000Z INTERSATSRANGE LocalSat1 66230045.243739240
2022-10-01T01:20:00.000Z INTERSATSRANGE LocalSat2 37735785.076566018
2022-10-01T01:20:00.000Z INTERSATSRANGE LocalSat3 40415215.956181578
2022-10-01T01:20:00.000Z INTERSATSRANGE LocalSat1 66412770.918930590
2022-10-01T01:24:00.000Z INTERSATSRANGE LocalSat2 36819667.471651547
2022-10-01T01:24:00.000Z INTERSATSRANGE LocalSat3 39408396.426067688
2022-10-01T01:24:00.000Z INTERSATSRANGE LocalSat1 66581443.189278826
2022-10-01T01:28:00.000Z INTERSATSRANGE LocalSat2 36255759.514793873
2022-10-01T01:28:00.000Z INTERSATSRANGE LocalSat3 38564253.685746804
2022-10-01T01:28:00.000Z INTERSATSRANGE LocalSat1 66735600.520573132
2022-10-01T01:32:00.000Z INTERSATSRANGE LocalSat2 36094897.130488418
2022-10-01T01:32:00.000Z INTERSATSRANGE LocalSat3 37950714.626004376
2022-10-01T01:32:00.000Z INTERSATSRANGE LocalSat1 66874800.093860440
2022-10-01T01:36:00.000Z INTERSATSRANGE LocalSat2 36352465.722464629
2022-10-01T01:36:00.000Z INTERSATSRANGE LocalSat3 37622589.823476411
2022-10-01T01:36:00.000Z INTERSATSRANGE LocalSat1 66998629.573716290
2022-10-01T01:40:00.000Z INTERSATSRANGE LocalSat2 37005400.993419111
2022-10-01T01:40:00.000Z INTERSATSRANGE LocalSat3 37613800.244540602
2022-10-01T01:40:00.000Z INTERSATSRANGE LocalSat1 67106702.868622042
2022-10-01T01:44:00.000Z INTERSATSRANGE LocalSat3 37931768.093623593
2022-10-01T01:44:00.000Z INTERSATSRANGE LocalSat2 37996610.564611636
2022-10-01T01:44:00.000Z INTERSATSRANGE LocalSat1 67198657.007307753
2022-10-01T01:48:00.000Z INTERSATSRANGE LocalSat3 38555842.162299551
2022-10-01T01:48:00.000Z INTERSATSRANGE LocalSat2 39244998.664572760
2022-10-01T01:48:00.000Z INTERSATSRANGE LocalSat1 67274160.659290090
2022-10-01T01:52:00.000Z INTERSATSRANGE LocalSat3 39440215.364006057
2022-10-01T01:52:00.000Z INTERSATSRANGE LocalSat2 40657265.240254432
2022-10-01T01:52:00.000Z INTERSATSRANGE LocalSat1 67332914.753320709
2022-10-01T01:56:00.000Z INTERSATSRANGE LocalSat3 40520275.650487445
2022-10-01T01:56:00.000Z INTERSATSRANGE LocalSat2 42138226.421474949
2022-10-01T01:56:00.000Z INTERSATSRANGE LocalSat1 67374635.661811098
2022-10-01T02:00:00.000Z INTERSATSRANGE LocalSat3 41720406.392885104
2022-10-01T02:00:00.000Z INTERSATSRANGE LocalSat2 43598144.243312962
2022-10-01T02:00:00.000Z INTERSATSRANGE LocalSat1 67399072.478741750
2022-10-01T02:04:00.000Z INTERSATSRANGE LocalSat3 42961311.075078107
2022-10-01T02:04:00.000Z INTERSATSRANGE LocalSat2 44957076.158600256
2022-10-01T02:04:00.000Z INTERSATSRANGE LocalSat1 67406011.352485806
2022-10-01T02:08:00.000Z INTERSATSRANGE LocalSat3 44165897.405864745
2022-10-01T02:08:00.000Z INTERSATSRANGE LocalSat2 46147021.907404229
2022-10-01T02:08:00.000Z INTERSATSRANGE LocalSat1 67395255.193377778
2022-10-01T02:12:00.000Z INTERSATSRANGE LocalSat3 45263419.553158246
2022-10-01T02:12:00.000Z INTERSATSRANGE LocalSat2 47112741.636135273
2022-10-01T02:12:00.000Z INTERSATSRANGE LocalSat1 67366639.700439692
2022-10-01T02:16:00.000Z INTERSATSRANGE LocalSat3 46192158.840744630
2022-10-01T02:16:00.000Z INTERSATSRANGE LocalSat2 47811839.424638189
2022-10-01T02:16:00.000Z INTERSATSRANGE LocalSat1 67320031.316962287
2022-10-01T02:20:00.000Z INTERSATSRANGE LocalSat3 46901117.452112593
2022-10-01T02:20:00.000Z INTERSATSRANGE LocalSat2 48214607.147574373
2022-10-01T02:20:00.000Z INTERSATSRANGE LocalSat1 67255318.613960549
2022-10-01T02:24:00.000Z INTERSATSRANGE LocalSat3 47351037.556627415
2022-10-01T02:24:00.000Z INTERSATSRANGE LocalSat2 48303856.260172158
2022-10-01T02:24:00.000Z INTERSATSRANGE LocalSat1 67172425.335846618
2022-10-01T02:28:00.000Z INTERSATSRANGE LocalSat3 47515148.476019666
2022-10-01T02:28:00.000Z INTERSATSRANGE LocalSat2 48074794.614539094
2022-10-01T02:28:00.000Z INTERSATSRANGE LocalSat1 67071297.188524514
2022-10-01T02:32:00.000Z INTERSATSRANGE LocalSat3 47379729.854204535
2022-10-01T02:32:00.000Z INTERSATSRANGE LocalSat2 47535126.803505763
2022-10-01T02:32:00.000Z INTERSATSRANGE LocalSat1 66951915.378384158
2022-10-01T02:36:00.000Z INTERSATSRANGE LocalSat2 46705262.384327948
2022-10-01T02:36:00.000Z INTERSATSRANGE LocalSat3 46944681.439613737
2022-10-01T02:36:00.000Z INTERSATSRANGE LocalSat1 66814287.843442686
2022-10-01T02:40:00.000Z INTERSATSRANGE LocalSat2 45618704.024402231
2022-10-01T02:40:00.000Z INTERSATSRANGE LocalSat3 46224091.318228938
2022-10-01T02:40:00.000Z INTERSATSRANGE LocalSat1 66658444.427768543
2022-10-01T02:44:00.000Z INTERSATSRANGE LocalSat2 44322487.016158782
2022-10-01T02:44:00.000Z INTERSATSRANGE LocalSat3 45246843.778418943
2022-10-01T02:44:00.000Z INTERSATSRANGE LocalSat1 66484453.871222846
2022-10-01T02:48:00.000Z INTERSATSRANGE LocalSat2 42877508.869420260
2022-10-01T02:48:00.000Z INTERSATSRANGE LocalSat3 44057176.893150128
2022-10-01T02:48:00.000Z INTERSATSRANGE LocalSat1 66292407.527171701
2022-10-01T02:52:00.000Z INTERSATSRANGE LocalSat2 41358476.091061033
2022-10-01T02:52:00.000Z INTERSATSRANGE LocalSat3 42715026.879973583
2022-10-01T02:52:00.000Z INTERSATSRANGE LocalSat1 66082428.780657217
2022-10-01T02:56:00.000Z INTERSATSRANGE LocalSat2 39852810.810957111
2022-10-01T02:56:00.000Z INTERSATSRANGE LocalSat3 41295808.189660631
2022-10-01T02:56:00.000Z INTERSATSRANGE LocalSat1 65854665.919366837
2022-10-01T03:00:00.000Z INTERSATSRANGE LocalSat2 38457784.237267196
2022-10-01T03:00:00.000Z INTERSATSRANGE LocalSat3 39889022.309778072
2022-10-01T03:00:00.000Z INTERSATSRANGE LocalSat1 65609298.745388493
2022-10-01T03:04:00.000Z INTERSATSRANGE LocalSat2 37274744.207236201
2022-10-01T03:04:00.000Z INTERSATSRANGE LocalSat3 38594779.286451317
2022-10-01T03:04:00.000Z INTERSATSRANGE LocalSat1 65346537.148552060
2022-10-01T03:08:00.000Z INTERSATSRANGE LocalSat2 36399747.660052113
2022-10-01T03:08:00.000Z INTERSATSRANGE LocalSat3 37517102.984421156
2022-10-01T03:08:00.000Z INTERSATSRANGE LocalSat1 65066611.914939061
2022-10-01T03:12:00.000Z INTERSATSRANGE LocalSat2 35911057.432270445
2022-10-01T03:12:00.000Z INTERSATSRANGE LocalSat3 36753454.698397800
2022-10-01T03:12:00.000Z INTERSATSRANGE LocalSat1 64769797.292140797
2022-10-01T03:16:00.000Z INTERSATSRANGE LocalSat2 35856079.141428605
2022-10-01T03:16:00.000Z INTERSATSRANGE LocalSat3 36381120.370844349
2022-10-01T03:16:00.000Z INTERSATSRANGE LocalSat1 64456378.143620223
2022-10-01T03:20:00.000Z INTERSATSRANGE LocalSat2 36242103.321840994
2022-10-01T03:20:00.000Z INTERSATSRANGE LocalSat3 36443618.911032714
2022-10-01T03:20:00.000Z INTERSATSRANGE LocalSat1 64126682.408070274
2022-10-01T03:24:00.000Z INTERSATSRANGE LocalSat3 36941778.898727685
2022-10-01T03:24:00.000Z INTERSATSRANGE LocalSat2 37034741.548494920
2022-10-01T03:24:00.000Z INTERSATSRANGE LocalSat1 63781063.806589119
2022-10-01T03:28:00.000Z INTERSATSRANGE LocalSat3 37833279.085773818
2022-10-01T03:28:00.000Z INTERSATSRANGE LocalSat2 38164795.966180474
2022-10-01T03:28:00.000Z INTERSATSRANGE LocalSat1 63419897.752580933
2022-10-01T03:32:00.000Z INTERSATSRANGE LocalSat3 39040760.918298632
2022-10-01T03:32:00.000Z INTERSATSRANGE LocalSat2 39540411.655637905
2022-10-01T03:32:00.000Z INTERSATSRANGE LocalSat1 63043595.224478170
2022-10-01T03:36:00.000Z INTERSATSRANGE LocalSat3 40464890.344118521
2022-10-01T03:36:00.000Z INTERSATSRANGE LocalSat2 41060053.566877700
2022-10-01T03:36:00.000Z INTERSATSRANGE LocalSat1 62652591.176048473
2022-10-01T03:40:00.000Z INTERSATSRANGE LocalSat3 41997752.641753167
2022-10-01T03:40:00.000Z INTERSATSRANGE LocalSat2 42623003.596471749
2022-10-01T03:40:00.000Z INTERSATSRANGE LocalSat1 62247355.443203598
2022-10-01T03:44:00.000Z INTERSATSRANGE LocalSat3 43533424.273013107
2022-10-01T03:44:00.000Z INTERSATSRANGE LocalSat2 44136260.648780756
2022-10-01T03:44:00.000Z INTERSATSRANGE LocalSat1 61828377.161472999
2022-10-01T03:48:00.000Z INTERSATSRANGE LocalSat3 44974942.694383428
2022-10-01T03:48:00.000Z INTERSATSRANGE LocalSat2 45518321.858995616
2022-10-01T03:48:00.000Z INTERSATSRANGE LocalSat1 61396183.604803033
2022-10-01T03:52:00.000Z INTERSATSRANGE LocalSat3 46238224.879315548
2022-10-01T03:52:00.000Z INTERSATSRANGE LocalSat2 46700860.027923867
2022-10-01T03:52:00.000Z INTERSATSRANGE LocalSat1 60951322.548731893
2022-10-01T03:56:00.000Z INTERSATSRANGE LocalSat3 47254003.931212142
2022-10-01T03:56:00.000Z INTERSATSRANGE LocalSat2 47629193.059385367
2022-10-01T03:56:00.000Z INTERSATSRANGE LocalSat1 60494378.310656570
2022-10-01T04:00:00.000Z INTERSATSRANGE LocalSat3 47968641.040925272
2022-10-01T04:00:00.000Z INTERSATSRANGE LocalSat2 48262252.022399835
2022-10-01T04:00:00.000Z INTERSATSRANGE LocalSat1 60025951.288272813
2022-10-01T04:04:00.000Z INTERSATSRANGE LocalSat3 48344452.339731485
2022-10-01T04:04:00.000Z INTERSATSRANGE LocalSat2 48572384.421955489
2022-10-01T04:04:00.000Z INTERSATSRANGE LocalSat1 59546675.300335124
2022-10-01T04:08:00.000Z INTERSATSRANGE LocalSat3 48359919.914623208
2022-10-01T04:08:00.000Z INTERSATSRANGE LocalSat2 48545226.974096164
2022-10-01T04:08:00.000Z INTERSATSRANGE LocalSat1 59057222.356118269
2022-10-01T04:12:00.000Z INTERSATSRANGE LocalSat3 48009885.988770179
2022-10-01T04:12:00.000Z INTERSATSRANGE LocalSat2 48179728.911750823
2022-10-01T04:12:00.000Z INTERSATSRANGE LocalSat1 58558278.384631515
2022-10-01T04:16:00.000Z INTERSATSRANGE LocalSat3 47305918.987098984
2022-10-01T04:16:00.000Z INTERSATSRANGE LocalSat2 47488371.537825353
2022-10-01T04:16:00.000Z INTERSATSRANGE LocalSat1 58050558.820452906
2022-10-01T04:20:00.000Z INTERSATSRANGE LocalSat3 46276816.341697969
2022-10-01T04:20:00.000Z INTERSATSRANGE LocalSat2 46497550.156054214
2022-10-01T04:20:00.000Z INTERSATSRANGE LocalSat1 57534813.752639771
2022-10-01T04:24:00.000Z INTERSATSRANGE LocalSat3 44969204.524612457
2022-10-01T04:24:00.000Z INTERSATSRANGE LocalSat2 45248140.188290522
2022-10-01T04:24:00.000Z INTERSATSRANGE LocalSat1 57011811.366722263
2022-10-01T04:28:00.000Z INTERSATSRANGE LocalSat3 43448176.014590763
2022-10-01T04:28:00.000Z INTERSATSRANGE LocalSat2 43796058.756918013
2022-10-01T04:28:00.000Z INTERSATSRANGE LocalSat1 56482346.057134256
2022-10-01T04:32:00.000Z INTERSATSRANGE LocalSat3 41797622.125094034
2022-10-01T04:32:00.000Z INTERSATSRANGE LocalSat2 42212668.827992544
2022-10-01T04:32:00.000Z INTERSATSRANGE LocalSat1 55947251.736548252
2022-10-01T04:36:00.000Z INTERSATSRANGE LocalSat3 40119604.304647952
2022-10-01T04:36:00.000Z INTERSATSRANGE LocalSat2 40584559.335764848
2022-10-01T04:36:00.000Z INTERSATSRANGE LocalSat1 55407369.980546683
2022-10-01T04:40:00.000Z INTERSATSRANGE LocalSat3 38531729.882165857
2022-10-01T04:40:00.000Z INTERSATSRANGE LocalSat2 39011884.644884445
2022-10-01T04:40:00.000Z INTERSATSRANGE LocalSat1 54863578.314107180
2022-10-01T04:44:00.000Z INTERSATSRANGE LocalSat3 37160742.005353764
2022-10-01T04:44:00.000Z INTERSATSRANGE LocalSat2 37604173.287731096
2022-10-01T04:44:00.000Z INTERSATSRANGE LocalSat1 54316771.887656279
2022-10-01T04:48:00.000Z INTERSATSRANGE LocalSat3 36130833.457948186
2022-10-01T04:48:00.000Z INTERSATSRANGE LocalSat2 36472257.388840236
2022-10-01T04:48:00.000Z INTERSATSRANGE LocalSat1 53767875.037324734
2022-10-01T04:52:00.000Z INTERSATSRANGE LocalSat3 35546414.690731563
2022-10-01T04:52:00.000Z INTERSATSRANGE LocalSat2 35715768.275450647
2022-10-01T04:52:00.000Z INTERSATSRANGE LocalSat1 53217826.259596616
2022-10-01T04:56:00.000Z INTERSATSRANGE LocalSat2 35407684.405121118
2022-10-01T04:56:00.000Z INTERSATSRANGE LocalSat3 35472706.843387611
2022-10-01T04:56:00.000Z INTERSATSRANGE LocalSat1 52667594.156609125
2022-10-01T05:00:00.000Z INTERSATSRANGE LocalSat2 35580233.646203518
2022-10-01T05:00:00.000Z INTERSATSRANGE LocalSat3 35921147.085442387
2022-10-01T05:00:00.000Z INTERSATSRANGE LocalSat1 52118158.807822794
2022-10-01T05:04:00.000Z INTERSATSRANGE LocalSat2 36217920.462723114
2022-10-01T05:04:00.000Z INTERSATSRANGE LocalSat3 36846575.622630164
2022-10-01T05:04:00.000Z INTERSATSRANGE LocalSat1 51570519.682585195
2022-10-01T05:08:00.000Z INTERSATSRANGE LocalSat2 37260955.888473459
2022-10-01T05:08:00.000Z INTERSATSRANGE LocalSat3 38157584.054024480
2022-10-01T05:08:00.000Z INTERSATSRANGE LocalSat1 51025696.384091042
2022-10-01T05:12:00.000Z INTERSATSRANGE LocalSat2 38617397.966169447
2022-10-01T05:12:00.000Z INTERSATSRANGE LocalSat3 39734785.471886754
2022-10-01T05:12:00.000Z INTERSATSRANGE LocalSat1 50484719.574931934
2022-10-01T05:16:00.000Z INTERSATSRANGE LocalSat2 40178616.571667731
2022-10-01T05:16:00.000Z INTERSATSRANGE LocalSat3 41449343.115956910
2022-10-01T05:16:00.000Z INTERSATSRANGE LocalSat1 49948628.971459612
2022-10-01T05:20:00.000Z INTERSATSRANGE LocalSat2 41832993.915339492
2022-10-01T05:20:00.000Z INTERSATSRANGE LocalSat3 43176883.695689969
2022-10-01T05:20:00.000Z INTERSATSRANGE LocalSat1 49418475.868693054
2022-10-01T05:24:00.000Z INTERSATSRANGE LocalSat2 43475394.559849195
2022-10-01T05:24:00.000Z INTERSATSRANGE LocalSat3 44805854.237424158
2022-10-01T05:24:00.000Z INTERSATSRANGE LocalSat1 48895322.102044091
2022-10-01T05:28:00.000Z INTERSATSRANGE LocalSat2 45012546.487375371
2022-10-01T05:28:00.000Z INTERSATSRANGE LocalSat3 46241519.580597699
2022-10-01T05:28:00.000Z INTERSATSRANGE LocalSat1 48380222.041747272
2022-10-01T05:32:00.000Z INTERSATSRANGE LocalSat2 46365396.233271033
2022-10-01T05:32:00.000Z INTERSATSRANGE LocalSat3 47407400.988894388
2022-10-01T05:32:00.000Z INTERSATSRANGE LocalSat1 47874240.262135558
2022-10-01T05:36:00.000Z INTERSATSRANGE LocalSat1 47378429.492023014
2022-10-01T05:36:00.000Z INTERSATSRANGE LocalSat2 47469830.544454247
2022-10-01T05:36:00.000Z INTERSATSRANGE LocalSat3 48245448.349946104
2022-10-01T05:40:00.000Z INTERSATSRANGE LocalSat1 46893841.533565201
2022-10-01T05:40:00.000Z INTERSATSRANGE LocalSat2 48276588.025349937
2022-10-01T05:40:00.000Z INTERSATSRANGE LocalSat3 48715771.202877894
2022-10-01T05:44:00.000Z INTERSATSRANGE LocalSat1 46421502.324350819
2022-10-01T05:44:00.000Z INTERSATSRANGE LocalSat2 48750942.935282223
2022-10-01T05:44:00.000Z INTERSATSRANGE LocalSat3 48796328.890234694
2022-10-01T05:48:00.000Z INTERSATSRANGE LocalSat1 45962431.502528571
2022-10-01T05:48:00.000Z INTERSATSRANGE LocalSat3 48482759.277330577
2022-10-01T05:48:00.000Z INTERSATSRANGE LocalSat2 48872431.466154322
2022-10-01T05:52:00.000Z INTERSATSRANGE LocalSat1 45517617.294431433
2022-10-01T05:52:00.000Z INTERSATSRANGE LocalSat3 47788398.243706100
2022-10-01T05:52:00.000Z INTERSATSRANGE LocalSat2 48634742.199134767
2022-10-01T05:56:00.000Z INTERSATSRANGE LocalSat1 45088024.213972554
2022-10-01T05:56:00.000Z INTERSATSRANGE LocalSat3 46744517.993915722
2022-10-01T05:56:00.000Z INTERSATSRANGE LocalSat2 48045819.086487189
2022-10-01T06:00:00.000Z INTERSATSRANGE LocalSat1 44674579.953040756
2022-10-01T06:00:00.000Z INTERSATSRANGE LocalSat3 45400762.244578086
2022-10-01T06:00:00.000Z INTERSATSRANGE LocalSat2 47128168.467014305
2022-10-01T06:04:00.000Z INTERSATSRANGE LocalSat3 43825596.398353361
2022-10-01T06:04:00.000Z INTERSATSRANGE LocalSat1 44278174.446575612
2022-10-01T06:04:00.000Z INTERSATSRANGE LocalSat2 45919347.155733652
2022-10-01T06:08:00.000Z INTERSATSRANGE LocalSat3 42106566.192394331
2022-10-01T06:08:00.000Z INTERSATSRANGE LocalSat1 43899639.932538114
2022-10-01T06:08:00.000Z INTERSATSRANGE LocalSat2 44472573.441243552
2022-10-01T06:12:00.000Z INTERSATSRANGE LocalSat3 40349680.475246273
2022-10-01T06:12:00.000Z INTERSATSRANGE LocalSat2 42857235.492524981
2022-10-01T06:12:00.000Z INTERSATSRANGE LocalSat1 43539772.135539271
2022-10-01T06:16:00.000Z INTERSATSRANGE LocalSat3 38676805.475787669
2022-10-01T06:16:00.000Z INTERSATSRANGE LocalSat2 41159024.716660075
2022-10-01T06:16:00.000Z INTERSATSRANGE LocalSat1 43199289.214363828
2022-10-01T06:20:00.000Z INTERSATSRANGE LocalSat3 37219330.148109391
2022-10-01T06:20:00.000Z INTERSATSRANGE LocalSat2 39478912.887636781
2022-10-01T06:20:00.000Z INTERSATSRANGE LocalSat1 42878863.050612621
2022-10-01T06:24:00.000Z INTERSATSRANGE LocalSat3 36106359.917624876
2022-10-01T06:24:00.000Z INTERSATSRANGE LocalSat2 37929914.484161831
2022-10-01T06:24:00.000Z INTERSATSRANGE LocalSat1 42579078.387009226
2022-10-01T06:28:00.000Z INTERSATSRANGE LocalSat3 35447056.407930195
2022-10-01T06:28:00.000Z INTERSATSRANGE LocalSat2 36630138.959421016
2022-10-01T06:28:00.000Z INTERSATSRANGE LocalSat1 42300449.540482439
2022-10-01T06:32:00.000Z INTERSATSRANGE LocalSat3 35310396.692797244
2022-10-01T06:32:00.000Z INTERSATSRANGE LocalSat2 35690980.430481091
2022-10-01T06:32:00.000Z INTERSATSRANGE LocalSat1 42043409.577123292
2022-10-01T06:36:00.000Z INTERSATSRANGE LocalSat2 35201028.214462399
2022-10-01T06:36:00.000Z INTERSATSRANGE LocalSat3 35709694.412434846
2022-10-01T06:36:00.000Z INTERSATSRANGE LocalSat1 41808303.398854852
2022-10-01T06:40:00.000Z INTERSATSRANGE LocalSat2 35209501.045875922
2022-10-01T06:40:00.000Z INTERSATSRANGE LocalSat3 36599416.244780593
2022-10-01T06:40:00.000Z INTERSATSRANGE LocalSat1 41595385.445935152
2022-10-01T06:44:00.000Z INTERSATSRANGE LocalSat2 35715522.412945166
2022-10-01T06:44:00.000Z INTERSATSRANGE LocalSat3 37886064.394991495
2022-10-01T06:44:00.000Z INTERSATSRANGE LocalSat1 41404818.972224608
2022-10-01T06:48:00.000Z INTERSATSRANGE LocalSat2 36668417.187498301
2022-10-01T06:48:00.000Z INTERSATSRANGE LocalSat3 39447497.150328815
2022-10-01T06:48:00.000Z INTERSATSRANGE LocalSat1 41236664.090145648
2022-10-01T06:52:00.000Z INTERSATSRANGE LocalSat2 37978885.193160079
2022-10-01T06:52:00.000Z INTERSATSRANGE LocalSat1 41090890.104791448
2022-10-01T06:52:00.000Z INTERSATSRANGE LocalSat3 41152452.433215640
2022-10-01T06:56:00.000Z INTERSATSRANGE LocalSat2 39535649.048050299
2022-10-01T06:56:00.000Z INTERSATSRANGE LocalSat1 40967360.237593099
2022-10-01T06:56:00.000Z INTERSATSRANGE LocalSat3 42875099.418772765
2022-10-01T07:00:00.000Z INTERSATSRANGE LocalSat1 40865846.823270455
2022-10-01T07:00:00.000Z INTERSATSRANGE LocalSat2 41221277.532348573
2022-10-01T07:00:00.000Z INTERSATSRANGE LocalSat3 44503531.595545240
2022-10-01T07:04:00.000Z INTERSATSRANGE LocalSat1 40786019.789711371
2022-10-01T07:04:00.000Z INTERSATSRANGE LocalSat2 42923645.983712330
2022-10-01T07:04:00.000Z INTERSATSRANGE LocalSat3 45943690.790307172
2022-10-01T07:08:00.000Z INTERSATSRANGE LocalSat1 40727454.417933553
2022-10-01T07:08:00.000Z INTERSATSRANGE LocalSat2 44542515.716301501
2022-10-01T07:08:00.000Z INTERSATSRANGE LocalSat3 47120571.642135993
2022-10-01T07:12:00.000Z INTERSATSRANGE LocalSat1 40689634.414709784
2022-10-01T07:12:00.000Z INTERSATSRANGE LocalSat2 45992534.058434740
2022-10-01T07:12:00.000Z INTERSATSRANGE LocalSat3 47978120.427051246
2022-10-01T07:16:00.000Z INTERSATSRANGE LocalSat1 40671961.619862095
2022-10-01T07:16:00.000Z INTERSATSRANGE LocalSat2 47204105.528466493
2022-10-01T07:16:00.000Z INTERSATSRANGE LocalSat3 48478697.900034390
2022-10-01T07:20:00.000Z INTERSATSRANGE LocalSat1 40673739.419019505
2022-10-01T07:20:00.000Z INTERSATSRANGE LocalSat2 48123289.823619865
2022-10-01T07:20:00.000Z INTERSATSRANGE LocalSat3 48602500.086175904
2022-10-01T07:24:00.000Z INTERSATSRANGE LocalSat1 40694209.289552286
2022-10-01T07:24:00.000Z INTERSATSRANGE LocalSat3 48347109.811184891
2022-10-01T07:24:00.000Z INTERSATSRANGE LocalSat2 48711358.640231989
2022-10-01T07:28:00.000Z INTERSATSRANGE LocalSat1 40732527.844610184
2022-10-01T07:28:00.000Z INTERSATSRANGE LocalSat3 47727207.660597421
2022-10-01T07:28:00.000Z INTERSATSRANGE LocalSat2 48944383.769366734
2022-10-01T07:32:00.000Z INTERSATSRANGE LocalSat1 40787794.893872455
2022-10-01T07:32:00.000Z INTERSATSRANGE LocalSat3 46774481.641596489
2022-10-01T07:32:00.000Z INTERSATSRANGE LocalSat2 48812979.626965351
2022-10-01T07:36:00.000Z INTERSATSRANGE LocalSat1 40859042.762873389
2022-10-01T07:36:00.000Z INTERSATSRANGE LocalSat3 45537622.127869867
2022-10-01T07:36:00.000Z INTERSATSRANGE LocalSat2 48322247.347375043
2022-10-01T07:40:00.000Z INTERSATSRANGE LocalSat1 40945255.598528191
2022-10-01T07:40:00.000Z INTERSATSRANGE LocalSat3 44082304.046732627
2022-10-01T07:40:00.000Z INTERSATSRANGE LocalSat2 47491952.653699830
2022-10-01T07:44:00.000Z INTERSATSRANGE LocalSat1 41045373.270715341
2022-10-01T07:44:00.000Z INTERSATSRANGE LocalSat3 42490831.009390131
2022-10-01T07:44:00.000Z INTERSATSRANGE LocalSat2 46356851.405976102
2022-10-01T07:48:00.000Z INTERSATSRANGE LocalSat3 40860960.539818235
2022-10-01T07:48:00.000Z INTERSATSRANGE LocalSat1 41158293.139431372
2022-10-01T07:48:00.000Z INTERSATSRANGE LocalSat2 44967143.809934959
2022-10-01T07:52:00.000Z INTERSATSRANGE LocalSat3 39302911.006220549
2022-10-01T07:52:00.000Z INTERSATSRANGE LocalSat1 41282885.095669076
2022-10-01T07:52:00.000Z INTERSATSRANGE LocalSat2 43388894.382786334
2022-10-01T07:56:00.000Z INTERSATSRANGE LocalSat3 37933429.663451202
2022-10-01T07:56:00.000Z INTERSATSRANGE LocalSat1 41417989.565353990
2022-10-01T07:56:00.000Z INTERSATSRANGE LocalSat2 41704144.204197697
2022-10-01T08:00:00.000Z INTERSATSRANGE LocalSat3 36865643.810159855
2022-10-01T08:00:00.000Z INTERSATSRANGE LocalSat2 40010097.120596997
2022-10-01T08:00:00.000Z INTERSATSRANGE LocalSat1 41562434.695276029
2022-10-01T08:04:00.000Z INTERSATSRANGE LocalSat3 36194850.191148318
2022-10-01T08:04:00.000Z INTERSATSRANGE LocalSat2 38416472.197293229
2022-10-01T08:04:00.000Z INTERSATSRANGE LocalSat1 41715030.327484399
2022-10-01T08:08:00.000Z INTERSATSRANGE LocalSat3 35982691.900581352
2022-10-01T08:08:00.000Z INTERSATSRANGE LocalSat2 37039636.940349124
2022-10-01T08:08:00.000Z INTERSATSRANGE LocalSat1 41874578.846030027
2022-10-01T08:12:00.000Z INTERSATSRANGE LocalSat2 35992247.654752411
2022-10-01T08:12:00.000Z INTERSATSRANGE LocalSat3 36244946.197656989
2022-10-01T08:12:00.000Z INTERSATSRANGE LocalSat1 42039889.818456821
2022-10-01T08:16:00.000Z INTERSATSRANGE LocalSat2 35368526.260622479
2022-10-01T08:16:00.000Z INTERSATSRANGE LocalSat3 36948323.744308375
2022-10-01T08:16:00.000Z INTERSATSRANGE LocalSat1 42209761.075765125
2022-10-01T08:20:00.000Z INTERSATSRANGE LocalSat2 35227867.434470534
2022-10-01T08:20:00.000Z INTERSATSRANGE LocalSat3 38017926.172852300
2022-10-01T08:20:00.000Z INTERSATSRANGE LocalSat1 42383018.224487863
2022-10-01T08:24:00.000Z INTERSATSRANGE LocalSat2 35582540.862651408
2022-10-01T08:24:00.000Z INTERSATSRANGE LocalSat3 39351882.045855843
2022-10-01T08:24:00.000Z INTERSATSRANGE LocalSat1 42558492.323544011
2022-10-01T08:28:00.000Z INTERSATSRANGE LocalSat2 36395077.458073534
2022-10-01T08:28:00.000Z INTERSATSRANGE LocalSat3 40837373.553881422
2022-10-01T08:28:00.000Z INTERSATSRANGE LocalSat1 42735018.038710594
2022-10-01T08:32:00.000Z INTERSATSRANGE LocalSat2 37586690.664350100
2022-10-01T08:32:00.000Z INTERSATSRANGE LocalSat3 42363560.112343572
2022-10-01T08:32:00.000Z INTERSATSRANGE LocalSat1 42911463.366688743
2022-10-01T08:36:00.000Z INTERSATSRANGE LocalSat2 39052658.901701801
2022-10-01T08:36:00.000Z INTERSATSRANGE LocalSat1 43086713.545661747
2022-10-01T08:36:00.000Z INTERSATSRANGE LocalSat3 43829975.178145841
2022-10-01T08:40:00.000Z INTERSATSRANGE LocalSat2 40678392.282927312
2022-10-01T08:40:00.000Z INTERSATSRANGE LocalSat1 43259685.567621425
2022-10-01T08:40:00.000Z INTERSATSRANGE LocalSat3 45150945.191801257
2022-10-01T08:44:00.000Z INTERSATSRANGE LocalSat2 42351898.552839935
2022-10-01T08:44:00.000Z INTERSATSRANGE LocalSat1 43429311.295116231
2022-10-01T08:44:00.000Z INTERSATSRANGE LocalSat3 46257383.397701107
2022-10-01T08:48:00.000Z INTERSATSRANGE LocalSat1 43594558.098002642
2022-10-01T08:48:00.000Z INTERSATSRANGE LocalSat2 43971464.647823386
2022-10-01T08:48:00.000Z INTERSATSRANGE LocalSat3 47097139.239542805
2022-10-01T08:52:00.000Z INTERSATSRANGE LocalSat1 43754428.418822721
2022-10-01T08:52:00.000Z INTERSATSRANGE LocalSat2 45449445.069326423
2022-10-01T08:52:00.000Z INTERSATSRANGE LocalSat3 47634656.389393643
2022-10-01T08:56:00.000Z INTERSATSRANGE LocalSat1 43907946.548845820
2022-10-01T08:56:00.000Z INTERSATSRANGE LocalSat2 46713599.196049929
2022-10-01T08:56:00.000Z INTERSATSRANGE LocalSat3 47850426.864724614
2022-10-01T09:00:00.000Z INTERSATSRANGE LocalSat1 44054176.098759584
2022-10-01T09:00:00.000Z INTERSATSRANGE LocalSat2 47707187.445079401
2022-10-01T09:00:00.000Z INTERSATSRANGE LocalSat3 47740420.409470215
2022-10-01T09:04:00.000Z INTERSATSRANGE LocalSat1 44192212.921132348
2022-10-01T09:04:00.000Z INTERSATSRANGE LocalSat3 47315543.643932968
2022-10-01T09:04:00.000Z INTERSATSRANGE LocalSat2 48388601.401053637
2022-10-01T09:08:00.000Z INTERSATSRANGE LocalSat1 44321188.884138331
2022-10-01T09:08:00.000Z INTERSATSRANGE LocalSat3 46601203.179180600
2022-10-01T09:08:00.000Z INTERSATSRANGE LocalSat2 48730893.879404798
2022-10-01T09:12:00.000Z INTERSATSRANGE LocalSat1 44440264.988298573
2022-10-01T09:12:00.000Z INTERSATSRANGE LocalSat3 45636814.874603957
2022-10-01T09:12:00.000Z INTERSATSRANGE LocalSat2 48721462.291749544
2022-10-01T09:16:00.000Z INTERSATSRANGE LocalSat3 44475257.908254936
2022-10-01T09:16:00.000Z INTERSATSRANGE LocalSat1 44548645.085500970
2022-10-01T09:16:00.000Z INTERSATSRANGE LocalSat2 48361832.415389158
2022-10-01T09:20:00.000Z INTERSATSRANGE LocalSat3 43182009.527657159
2022-10-01T09:20:00.000Z INTERSATSRANGE LocalSat1 44645564.451800011
2022-10-01T09:20:00.000Z INTERSATSRANGE LocalSat2 47667691.041234411
2022-10-01T09:24:00.000Z INTERSATSRANGE LocalSat3 41833619.073011711
2022-10-01T09:24:00.000Z INTERSATSRANGE LocalSat1 44730291.143057965
2022-10-01T09:24:00.000Z INTERSATSRANGE LocalSat2 46669005.013846382
2022-10-01T09:28:00.000Z INTERSATSRANGE LocalSat3 40515129.836872876
2022-10-01T09:28:00.000Z INTERSATSRANGE LocalSat1 44802136.885051772
2022-10-01T09:28:00.000Z INTERSATSRANGE LocalSat2 45410272.218186408

I don’t think so. The ObservableSatellite object is meant to hold the clock offset because one-way inter-satellite measurements are sensitive to clock offsets of both transmitter and receiver. You may decide to fix one offset and estimate the other one. In fact, if you have only two satellites, you must fix one of these offsets, otherwise you get an observability issue.

Thank you for your response, @luc.
My follow-up question is: How can I indicate in the code that I want to assume perfect knowledge of the local satellite’s orbit, rather than producing measurements and estimating the local satellite’s orbit as well as the orbit of the remote satellite?

My first thought about how to do this is something like what I pasted below, which I wrote in Matlab. Here, I get the orbital parameters drivers for the propagator builder for my 3rd of 3 local satellites and use “setSelected(false)” to indicate that the orbital parameters for this satellite should not be estimated. Then I add the propagator builder for the 3rd local satellite to an array of propagator builders and use this array of propagator builders in the BatchLSEstimator constructor.

%% This propagator builder handles local satellite 3.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(1.490552681049923E+06, -1.893933999024528E+06, 6.346234394324024E+06);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(7.429417575444744E+03, -3.505320122965324E+02, -1.845105264954836E+03);

orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),…
frame,initialDate,mu);

builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,…
integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));

%mass
mass = 1630;
builder.setMass(mass);

%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));

%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Sun”)));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody(“Moon”)));

builder.getSelectedNormalizedParameters()
drivers = builder.getOrbitalParametersDrivers().getDrivers()
for ii = 1:1:6
drivers.get(ii-1).setSelected(false);
end
propagatorBuilders(4) = builder;

%estimator
initialStepBoundFactor = 1.0e6;
optimizer = org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer().withInitialStepBoundFactor(initialStepBoundFactor);
convergenceThreshold = 1.0e-3;
maxIterations = 30;
maxEvaluations = 35;
estimator = org.orekit.estimation.leastsquares.BatchLSEstimator(optimizer, propagatorBuilders);

But when I do all of this and then try to build a propagator from that propagator builder (like this:
propagatorBuilders(4).buildPropagator(propagatorBuilders(4).getSelectedNormalizedParameters())), I receive a null pointer exception as shown below.

java.lang.NullPointerException
at org.orekit.propagation.conversion.AbstractPropagatorBuilder.setParameters(AbstractPropagatorBuilder.java:322)
at org.orekit.propagation.conversion.NumericalPropagatorBuilder.buildPropagator(NumericalPropagatorBuilder.java:199)

What would be the correct way to indicate that I do not want to estimate the local satellite’s orbit?
Thank you,
Erin

Could you try using OneWayGNSSRange class?

Regards,
Bryan

@bcazabonne -
That might work. I will give it a try. I have one question, based on the documentation which says “This class can be used in precise orbit determination applications for modeling a range measurement between a GNSS satellite (emitter) and a LEO satellite (receiver).”
Is there any reason the emitter would be required to be in a standard GNSS orbit or the receiver required to be in a LEO?
Thank you,
Erin

@bcazabonne - If I add the measurements to the estimator as OneWayGNSSRange measurements with the satellite which I’m trying to estimate (a new ObservableSatellite(0)) input to OneWayGNSSRange as “ObservableSatellite local” and the previously defined satellites (which are doing the observing) input to OneWayGNSSRange as “PVCoordinatesProvider remote,” then the estimator at least runs, although it produces a wrong result. Perhaps I need to provide more observer satellites.

To clarify, for the “PVCoordinatesProvider remote" input to OneWayGNSSRange, I am using a NumericalPropagator which represents the motion of the observing satellite. Is that a good way to construct a OneWayGNSSRange measurement? And if so, is it okay that the NumericalPropagator was created from a NumericalPropagatorBuilder which was constructed with a reference orbit with a different date from the date input to OneWayGNSSRange?
Thanks again,
Erin

In fact, the emitter can be any satellite and the receiver also. There is no hypothesis. This class is a one-way range measurement for which only the coordinates of the receiver satellite are estimated. We named it OneWayGNSSRange and wrote the documentation in consistency because the first application of this class was for orbit determination of LEO satellites based on GNSS measurements.
But in fact, this class can have more applications.

Yes, it is. Just be careful that depending your force models, the measurement estimation can be very long using a NumericalPropagator because the model will perform a propagation for each measurement. It is more recommended to use an analytical model to reduce the computation time. But it will also reduce the accuracy. It’s a trade off.

Because an orbit propagation is performed for each measurement, it’s okay.

What do you mean by wrong results?

I got it working!
By “wrong,” I meant that the solution of the BatchLS estimation was very different from the actual orbit of the observed satellite.
It turned out that the reason I was getting “wrong” results was that I was associating the wrong PVCoordinatesProvider with the OneWayGNSSRange measurements in some cases.
Thank you for bearing with me.

Hello Erin,

When I tested your code to perform orbit determination with inter-satellite range measurements, Matlab thrust the following error information:

Java exception occurred:
org.orekit.errors.OrekitException: unable to perform Q.R decomposition on the 429x24 jacobian
matrix
	at
        org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:441)
        Caused by: org.hipparchus.exception.MathIllegalStateException: unable to perform Q.R
        decomposition on the 429x24 jacobian matrix
	at
        org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.qrDecomposition(LevenbergMarquardtOptimizer.java:982)
        	at
        org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer.optimize(LevenbergMarquardtOptimizer.java:346)
        	at
        org.orekit.estimation.leastsquares.BatchLSEstimator.estimate(BatchLSEstimator.java:435) 

Do you have any idea about the error? Have you run your code successfully with correct result?

The code I use is as follows, which is the same as yours

clear
clc

outputBaseName = 'spacebased-tracking';

% make an intersatellites range log
interSatsRangeLog.evaluations = java.util.TreeSet(java.util.Comparator.naturalOrder());
interSatsRangeLog.name = 'intersatsrange';
outputFileName = [outputBaseName '-' interSatsRangeLog.name '-residuals.out'];
fileIDInterSatsRange = fopen(outputFileName,'w');

% gravity field
degree = 1;
order = org.hipparchus.util.FastMath.min(degree, 1);
org.orekit.forces.gravity.potential.GravityFieldFactory.clearPotentialCoefficientsReaders();
org.orekit.forces.gravity.potential.GravityFieldFactory.addDefaultPotentialCoefficientsReaders(); 
gravityField = org.orekit.forces.gravity.potential.GravityFieldFactory.getNormalizedProvider(degree, order);
mu = gravityField.getMu();

%frame
frame = org.orekit.frames.FramesFactory.getEME2000();

%Cartesian orbit
initialDate = org.orekit.time.AbsoluteDate("2022-10-01T00:00:00.000Z",...
    org.orekit.time.TimeScalesFactory.getUTC());
pos = org.hipparchus.geometry.euclidean.threed.Vector3D(5.850993249432947e6,...
    3.829300407173921e7, 1.664684004389338e7);
vel = org.hipparchus.geometry.euclidean.threed.Vector3D(3.045144586341892e3, -394.5787, 164.2226);
orbitGuess = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(pos,vel),...
    frame,initialDate,mu);

%IERS conventions
conventions = org.orekit.utils.IERSConventions.valueOf(['IERS_', num2str(2010)]);

%central body (earth) body data
bodyFrame = org.orekit.frames.FramesFactory.getITRF(org.orekit.utils.IERSConventions.IERS_2010, true);
equatorialRadius = 6378137;
flattening = 1.0/298.2572;
body = org.orekit.bodies.OneAxisEllipsoid(equatorialRadius, flattening, bodyFrame);

%initialize propagator builder
integratorBuilder = org.orekit.propagation.conversion.DormandPrince853IntegratorBuilder(1e-3,...
    300,0.0100);

%propagator builder
%Put the propagator builders together in a java array for use in the
%estimator.
propagatorBuilders = javaArray('org.orekit.propagation.conversion.NumericalPropagatorBuilder',1);

%% The following propagator builder handles only the remote satellite (to be tracked).
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitGuess,...
    integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 6100;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Sun")));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Moon")));
propagatorBuilders(1) = builder;
clear builder

%% This propagator builder handles local satellite 1.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(-2747606.681, 22572091.306, 13522761.402);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(-2729.515, 1142.663, -2523.906);
orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),...
    frame,initialDate,mu);
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,...
    integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 1630;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Sun")));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Moon")));
propagatorBuilders(2) = builder;
clear builder

%% This propagator builder handles local satellite 2.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(-2.250761046779056E+07, -3.265981444411464E+07, 1.425697642659360E+07);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(2.600250545517001E+03, -1.510417306700876E+03, 6.457897224694455E+02);
orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),...
    frame,initialDate,mu);
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,...
    integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 1630;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Sun")));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Moon")));
propagatorBuilders(3) = builder;
clear builder

%% This propagator builder handles local satellite 3.
posObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(1.490552681049923E+06, -1.893933999024528E+06, 6.346234394324024E+06);
velObserver = org.hipparchus.geometry.euclidean.threed.Vector3D(7.429417575444744E+03, -3.505320122965324E+02, -1.845105264954836E+03);
orbitObserver = org.orekit.orbits.CartesianOrbit(org.orekit.utils.PVCoordinates(posObserver,velObserver),...
    frame,initialDate,mu);
builder = org.orekit.propagation.conversion.NumericalPropagatorBuilder(orbitObserver,...
    integratorBuilder, org.orekit.orbits.PositionAngle.MEAN, double(0.001));
%mass
mass = 1630;
builder.setMass(mass);
%gravity
builder.addForceModel(org.orekit.forces.gravity.HolmesFeatherstoneAttractionModel(body.getBodyFrame(), gravityField));
%third body attraction without solid tides force model
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Sun")));
builder.addForceModel(org.orekit.forces.gravity.ThirdBodyAttraction(org.orekit.bodies.CelestialBodyFactory.getBody("Moon")));
% builder.getSelectedNormalizedParameters()
% drivers = builder.getOrbitalParametersDrivers().getDrivers()
% for ii = 1:1:6
% drivers.get(ii-1).setSelected(false);
% end
propagatorBuilders(4) = builder;
clear builder

%estimator
initialStepBoundFactor = 1.0e6;
optimizer = org.hipparchus.optim.nonlinear.vector.leastsquares.LevenbergMarquardtOptimizer();
optimizer.withInitialStepBoundFactor(initialStepBoundFactor);
convergenceThreshold = 1.0e-3;
maxIterations = 30;
maxEvaluations = 35;
estimator = org.orekit.estimation.leastsquares.BatchLSEstimator(optimizer, propagatorBuilders);
estimator.setParametersConvergenceThreshold(convergenceThreshold);
estimator.setMaxIterations(maxIterations);
estimator.setMaxEvaluations(maxEvaluations);

%local sat name
localSatName(1) = "LocalSat1";
localSatName(2) = "LocalSat2";
localSatName(3) = "LocalSat3";
generator = org.orekit.estimation.measurements.generation.Generator;

%intersatellitesrange data
for ii = 1:1:3
    localSats{ii}.name = localSatName(ii);
    localSats{ii}.satellite = generator.addPropagator(propagatorBuilders(ii+1).buildPropagator(propagatorBuilders(ii+1).getSelectedNormalizedParameters()));
    localSats{ii}.intersatellitesRangeSigma = 1.0;
end

satellite = org.orekit.estimation.measurements.ObservableSatellite(0);

%build measurements based on text file
fileName = 'measurements.aer';

%set up filtering for measurements files
%nd = org.orekit.data.DataSource(fileName, () → java.io.FileInputStream(java.io.File(FOLDER, fileName)));
nd = org.orekit.data.DataSource(java.io.File(fileName));
filterArray = javaArray('org.orekit.data.DataFilter',3);
filterArray(1) = org.orekit.data.GzipFilter();
filterArray(2) = org.orekit.data.UnixCompressFilter();
filterArray(3) = org.orekit.gnss.HatanakaCompressFilter();
filterArrayAsList = java.util.Arrays.asList(filterArray);
for jj = 1:1:filterArrayAsList.size()
    filter = filterArrayAsList.get(jj-1);
    nd = filter.filter(nd);
end

%the measurements come from an Orekit custom file
measurements = java.util.ArrayList();
reader = nd.getOpener().openReaderOnce();
br = java.io.BufferedReader(reader);
lineNumber = 1;
line = br.readLine();
while ~isempty(line)
    line = line.trim();
    if line.length() > 0 && ~line.startsWith("#")
        fields = line.split("\s+");
        fields2 = char(fields(2));
        if (fields.length < 2)
            disp(org.orekit.errors.OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE);
        end
        if min([size(localSats,1),size(localSats,2)]) > 0
            if fields.length ~= 4
                disp(['OrekitMessages.UNABLE_TO_PARSE_LINE_IN_FILE', lineNumber, filename, line]);
            end
            for jj = 1:1:size(localSats,2)
                satString = char(localSats{1,jj}.name);
                if contains(satString, char(fields(3)))
                    satelliteLocal = localSats{1,jj}.satellite;
                end
            end
            if ~exist('localSats') || isempty(localSats)
                disp(['unknown local satellite ', char(line), ' from ', char(filename)]);
            end
            thisDate = org.orekit.time.AbsoluteDate(fields(1), org.orekit.time.TimeScalesFactory.getUTC());
            thisInterSatellitesRange = java.lang.Double.parseDouble(fields(4));
            intersatellitesrange = org.orekit.estimation.measurements.InterSatellitesRange(satelliteLocal,...
                satellite,false,thisDate,thisInterSatellitesRange,...
                1.0,1.0);
            
            sum = 0;
            for ii = 1:1:size(intersatellitesrange.getBaseWeight(),2)
                w = intersatellitesrange.getBaseWeight();
                sum = sum + org.hipparchus.util.FastMath.abs(w(ii));
            end
            if sum > org.hipparchus.util.Precision.SAFE_MIN
                %we only consider measurements with non-zero
                %weight
                measurements.add(intersatellitesrange);
            end
        end
    end
    line = br.readLine();
    lineNumber = lineNumber + 1;
    
end

%add measurements to estimator
for ii = 1:1:measurements.size()
    measurement = measurements.get(ii-1);
    estimator.addMeasurement(measurement);
end

%Print some info about the parameters drivers for this estimator
measurementsParametersDrivers = estimator.getMeasurementsParametersDrivers(1).getDrivers()
orbitalParametersDrivers = estimator.getOrbitalParametersDrivers(1).getDrivers()
propagatorParametersDrivers = estimator.getPropagatorParametersDrivers(1).getDrivers()
%set the observer and estimate orbit
% estimator.setObserver(org.orekit.tutorials.estimation.common.OrbitDeterminationObserver(orbitGuess,...
%     [],estimator));
thisPropagator = estimator.estimate();

Thank you for any help!

Xuefeng Tao.