Justin, Your question about replicating a TLE trajectory with Special Perturbations (numerical integration) was addressed by Darrell Herriges in 1988. Darrell was doing a MIT Master of Science thesis for me and he was implementing the NORAD satellite theories in the GTDS orbit determination system. Darrell used the numerical integration (configured to match GP4) to generate truth data for a unit test of the differential correction (weighted least squares) orbit determination process based on GP4. The numerical integration used the J2, J3, and J4 harmonic coefficients with the potential selected to match what was assumed in the GP4 theory. The numerical integration also used a stable atmosphere density (not time varying). The residuals between the fit GP4 and the truth were small because the short-periodic motion due to J3 and J4 is small. The long period and secular motion due to J3 and J4 is included in GP4. The impact of the J2-squared terms is small at the inclination used in this test case. You should look at Chapter 5 of the Herriges thesis report - particularly Section 5.1 Test Methodology Table 5-1 Initial Parameters Section 5.2.1.2 GP4 Low Altitude DC Comparison Table 5-4 GP4 Low Altitude PCE Results Of course, if the numerical integration included a more complete geopotential, then the residuals between GP4 and numerical integration would be much larger -- on the order of several hundred meters. See Table 1-1 Maximum m-daily errors on p. 24 in the Herriges thesis on this point. I had a 1996 paper with Dan Fonte "Extension of the Naval Space Command Satellite Theory PPT2 to Include a General Tesseral M-Daily Model, presented at the AIAA/AAS Astrodynamics Conference, San Diego, CA, July 1996, that further explored the tesseral error signature. The NAVSPASUR PPT2 theory is similar to GP4.
Any questions, ask away. Darrell's thesis was approved for public release in 2014; distribution is unlimited.
A later MIT student (George Granholm, 2000) also considered the conversion of TLE to Special Perturbation initial conditions.
regards,
Paul Cefola
-- Dr. Paul J. Cefola Consultant in Aerospace Systems, Spaceflight Mechanics, & Astrodynamics Adjunct Faculty, Dept. of Mechanical and Aerospace Engineering, University at Buffalo (SUNY) 4 Moonstone Way Vineyard Haven, MA 02568 USA 508-696-1884 (phone on Martha's Vineyard) 978-201-1393 (cell) paulcefo@buffalo.edu paul.cefola@gmail.com On 03/28/2017 3:56 pm, justin4leb@gmail.com wrote:
Thank you Paul. I’m looking forward to it. Regards, Justin FROM: paulcefo SENT: Tuesday, March 28, 2017 15:19 TO: justin4leb@gmail.com CC: orekit-users-request@orekit.org SUBJECT: Re: [Orekit Users] Mimic TLEPropagator with Numerical? Justin, I will try to write something on this question later today. Paul Cefola -- Dr. Paul J. Cefola Consultant in Aerospace Systems, Spaceflight Mechanics, & Astrodynamics Adjunct Faculty, Dept. of Mechanical and Aerospace Engineering, University at Buffalo (SUNY) 4 Moonstone Way Vineyard Haven, MA 02568 USA 508-696-1884 (phone on Martha's Vineyard) 978-201-1393 (cell) paulcefo@buffalo.edu paul.cefola@gmail.com On 03/28/2017 3:01 pm, justin4leb@gmail.com wrote:
Hello All,
I am new in using OREKIT. I was wondering if its possible to mimic
TLEPropagator by incorporating similar force models into a Numerical
propagator. Basically, I am trying to replicate the results of the
"Satellite
Orbital Conjunction Reports Assessing Threatening Encounters in
Space" (SOCRATES) that are given in the celestrak
website
:http://celestrak.com/cgi-bin/searchSOCRATES.pl?IDENT=NAME&NAME_TEXT1=&NAME_TEXT2=&ORDER=MINRANGE&MAX=10
I am able to get exact (very closer : +/-0.1 seconds) closest
approach
results, but not with a Numerical Propagator (with J2
perturbations). I
am
aware TLEprop is based on SGP4/SDP4 model but I wonder if it is
possible to
bring that model into Numerical. Because I would like to experiment
by
applying small delta-Vs to the state to increase the closest
approach
distance
which cannot be done within a TLEPropagator.
I used something like this(in Python):
objA_tle = TLE("1 40037U 14033AD 17085.78642693 .00000199 00000-0
28987-4
0 9998",
"2 40037 97.9175 354.9522 0013624 210.8425 149.1991
14.86189764149576")
objB_tle = TLE("1 16263U 85108B 17085.79797911 .00000114 00000-0
11121-4
0 9997",
"2 16263 82.5064 191.6062 0018606 258.6047 216.3527
14.82975072692179")
propagator_tleA = TLEPropagator.selectExtrapolator(objA_tle)
propagator_tleB = TLEPropagator.selectExtrapolator(objB_tle)
epo_objA = objA_tle.getDate()
epo_objB = objB_tle.getDate()
pvA_init = propagator_tleA.propagate(epo_objA).getPVCoordinates()
pvB_init = propagator_tleB.propagate(epo_objB).getPVCoordinates()
initialOrbitA = CartesianOrbit(pvA_init_, inertialFrame, epo_objA,
mu)
initialOrbitB = CartesianOrbit(pvB_init_, inertialFrame, epo_objB,
mu)
def NumProp(initialOrbit, orbitType):
#Setup Propagator
minStep = 0.001;
maxstep = 1000.0;
initStep = 10.0
positionTolerance = 1e-2
initialState = SpacecraftState(initialOrbit)
tol = NumericalPropagator.tolerances(positionTolerance,
initialOrbit,
orbitType)
integrator = DormandPrince853Integrator(minStep, maxstep,
JArray_double.cast_(tol[0]),
#
Double
array of doubles needs to be casted in Python
JArray_double.cast_(tol[1]))
integrator.setInitialStepSize(initStep)
propagator_num = NumericalPropagator(integrator)
propagator_num.setOrbitType(orbitType)
propagator_num.setInitialState(initialState)
propagator_num.setEphemerisMode()
return propagator_num
propagator_numA = NumProp(initialOrbitA, orbitType)
propagator_numB = NumProp(initialOrbitB, orbitType)
itrf = FramesFactory.getITRF(IERSConventions.IERS_2010, True)
gravityProvider = GravityFieldFactory.getNormalizedProvider(10,10)
gravity = HolmesFeatherstoneAttractionModel(itrf, gravityProvider)
propagator_numA.addForceModel(gravity)
propagator_numB.addForceModel(gravity)
Best,
Justin
|