////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Orbit Determination Attempt ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Constants int c = 299792458; /// m/s // Parameters double azEl_weight = 1.0; // Will be normalized later (i.e divided by the number of observations) double azEl_sigma = 1.0; //Estimated covariance of the range measurements, in meters //Orbit propagator parameters double prop_min_step = 0.001;// # s double prop_max_step = 300.0;// # s double prop_position_error = 10.0;// # m //# Estimator parameters double estimator_position_scale = 1.0;// # m double estimator_convergence_thres = 1e-3; int estimator_max_iterations = 25; int estimator_max_evaluations = 35; SpacecraftState tleInitialState = oreTLEPropagator.getInitialState(); AbsoluteDate tleEpoch = tleInitialState.getDate(); Orbit tleOrbit_TEME = tleInitialState.getOrbit(); TimeStampedPVCoordinates tlePV_ECI = tleOrbit_TEME.getPVCoordinates(inertialFrame); //extra ellipsoid definition just to get GM- attraction coefficient ReferenceEllipsoid wgs84Ellipsoid = ReferenceEllipsoid.getWgs84(inertialFrame); //from org.orekit.orbits import CartesianOrbit CartesianOrbit tleOrbit_ECI =new CartesianOrbit(tlePV_ECI, inertialFrame, wgs84Ellipsoid.getGM()); //from org.orekit.propagation.conversion import DormandPrince853IntegratorBuilder DormandPrince853IntegratorBuilder integratorBuilder = new DormandPrince853IntegratorBuilder(prop_min_step, prop_max_step, prop_position_error); //from org.orekit.propagation.conversion import NumericalPropagatorBuilder //from org.orekit.orbits import PositionAngle NumericalPropagatorBuilder propagatorBuilder = new NumericalPropagatorBuilder(tleOrbit_ECI,integratorBuilder, PositionAngle.MEAN, estimator_position_scale); propagatorBuilder.setMass(mass); propagatorBuilder.setAttitudeProvider(nadirPointing); //from org.hipparchus.linear import QRDecomposer QRDecomposer matrixDecomposer =new QRDecomposer(1e-11); //from org.hipparchus.optim.nonlinear.vector.leastsquares import GaussNewtonOptimizer GaussNewtonOptimizer optimizer =new GaussNewtonOptimizer(matrixDecomposer, false); //from org.orekit.estimation.leastsquares import BatchLSEstimator BatchLSEstimator estimator =new BatchLSEstimator(optimizer, propagatorBuilder); estimator.setParametersConvergenceThreshold(estimator_convergence_thres); estimator.setMaxIterations(estimator_max_iterations); estimator.setMaxEvaluations(estimator_max_evaluations); //azArray,elArray,timestamps //estimator.addMeasurement(azArray); GroundStation station0=new GroundStation(stationFrames[0]); double[] weight=new double[] {azEl_weight, azEl_weight}; double[] sigma= new double[] {azEl_sigma, azEl_sigma}; //what is "propagator index" for the ObservedSatellite constructor?????????? ObservableSatellite satellite=new ObservableSatellite(0); for (int s=0;s