% % SpacecraftNavigation_LEO_RangeRate_SMAP % % SMAP OD using UTDF range-rate tracking data. % % 20180131 SES Initial version % SolarSystem.EphemerisSource = 'DE421'; Earth.EopFileName = '../data/navdata/otherinputfiles/eopc04_08_2015_7_12.62-now'; % % Spacecraft % Create Spacecraft SMAP; SMAP.DateFormat = UTCGregorian; SMAP.Epoch = '23 Feb 2015 00:00:00.000'; SMAP.CoordinateSystem = EarthMJ2000Eq; SMAP.DisplayStateType = Cartesian; SMAP.X = -2770.571156; SMAP.Y = -3707.5960349; SMAP.Z = -5327.5295107; SMAP.VX = 1.99684071; SMAP.VY = 5.40183856; SMAP.VZ = -4.81987365; SMAP.DryMass = 956.; SMAP.Cd = 2.2; SMAP.Cr = 1.2; SMAP.DragArea = 12.3; SMAP.SRPArea = 12.3; SMAP.Id = 430; SMAP.AddHardware = {GnTransponder, GnAntenna}; SMAP.SolveFors = {CartesianState, Cd}; % % Spacecraft electronics % Create Antenna GnAntenna; Create Transponder GnTransponder; GnTransponder.PrimaryAntenna = GnAntenna; GnTransponder.HardwareDelay = 0.; GnTransponder.TurnAroundRatio = '240/221' % % Ground electronics % Create Antenna UplinkAntenna; Create Transmitter UplinkTransmitter; Create Receiver GroundReceiver; UplinkTransmitter.PrimaryAntenna = UplinkAntenna; UplinkTransmitter.Frequency = 2094.2512; GroundReceiver.PrimaryAntenna = UplinkAntenna; % % Error models % Create ErrorModel RangeRate; RangeRate.Type = 'RangeRate'; RangeRate.NoiseSigma = 0.0002; RangeRate.Bias = 0.0; RangeRate.SolveFors = {}; % % Ground stations % Create GroundStation TR2S; TR2S.CentralBody = Earth; TR2S.StateType = Cartesian; TR2S.HorizonReference = Ellipsoid; TR2S.Location1 = 1975.23073; TR2S.Location2 = 87.07369; TR2S.Location3 = -6045.11016; TR2S.Id = 113; TR2S.AddHardware = {UplinkTransmitter, GroundReceiver, UplinkAntenna}; TR2S.MinimumElevationAngle = 10.0; TR2S.IonosphereModel = 'None'; TR2S.TroposphereModel = 'None'; TR2S.Temperature = 295.1; TR2S.Pressure = 1013.5; TR2S.Humidity = 55.0; TR2S.ErrorModels = {RangeRate}; Create GroundStation AS3S; AS3S.CentralBody = Earth; AS3S.StateType = Cartesian; AS3S.HorizonReference = Ellipsoid; AS3S.Location1 = -2300.73083; AS3S.Location2 = -1445.81458; AS3S.Location3 = 5751.24208; AS3S.Id = 91; AS3S.AddHardware = {UplinkTransmitter, GroundReceiver, UplinkAntenna}; AS3S.MinimumElevationAngle = 10.0; AS3S.IonosphereModel = 'None'; AS3S.TroposphereModel = 'None'; AS3S.Temperature = 295.1; AS3S.Pressure = 1013.5; AS3S.Humidity = 55.0; AS3S.ErrorModels = {RangeRate}; Create GroundStation SG1S; SG1S.CentralBody = Earth; SG1S.StateType = Cartesian; SG1S.HorizonReference = Ellipsoid; SG1S.Location1 = 1258.44563; SG1S.Location2 = 346.38637; SG1S.Location3 = 6222.73218; SG1S.Id = 30; SG1S.AddHardware = {UplinkTransmitter, GroundReceiver, UplinkAntenna}; SG1S.MinimumElevationAngle = 10.0; SG1S.IonosphereModel = 'None'; SG1S.TroposphereModel = 'None'; SG1S.Temperature = 295.1; SG1S.Pressure = 1013.5; SG1S.Humidity = 55.0; SG1S.ErrorModels = {RangeRate}; Create GroundStation WAPS; WAPS.CentralBody = Earth; WAPS.StateType = Cartesian; WAPS.HorizonReference = Ellipsoid; WAPS.Location1 = 1263.29817; WAPS.Location2 = -4876.56722; WAPS.Location3 = 3898.86502; WAPS.Id = 64; WAPS.AddHardware = {UplinkTransmitter, GroundReceiver, UplinkAntenna}; WAPS.MinimumElevationAngle = 10.0; WAPS.IonosphereModel = 'None'; WAPS.TroposphereModel = 'None'; WAPS.Temperature = 295.1; WAPS.Pressure = 1013.5; WAPS.Humidity = 55.0; WAPS.ErrorModels = {RangeRate}; % % Tracking data selection % Create TrackingFileSet utdf; utdf.FileName = {'../data/navdata/DoNotDistribute/trackingdata/FLIGHT_SpacecraftNavigation_SMAP.gmd'}; utdf.RampTable = {}; utdf.UseLightTime = True; utdf.UseRelativityCorrection = False; utdf.UseETminusTAI = False; utdf.DataFilters = {}; % % Force model and propagator % Create ForceModel FM; FM.CentralBody = Earth; FM.PrimaryBodies = {Earth}; FM.GravityField.Earth.Degree = 30; FM.GravityField.Earth.Order = 30; FM.GravityField.Earth.PotentialFile = 'JGM2.cof'; FM.PointMasses = {Sun, Luna}; FM.SRP = On; FM.SRP.Flux = 1370.052; FM.Drag.AtmosphereModel = 'JacchiaRoberts'; FM.Drag.HistoricWeatherSource = 'CSSISpaceWeatherFile'; FM.Drag.CSSISpaceWeatherFile = 'SpaceWeather-v1.2.txt'; FM.ErrorControl = 'None'; Create Propagator Prop; Prop.FM = FM; Prop.Type = RungeKutta89; Prop.InitialStepSize = 60; Prop.MinStep = 0; % % Configure the BLS % Create BatchEstimatorInv bat; bat.ShowProgress = True; bat.Measurements = {utdf} bat.AbsoluteTol = 0.0001; bat.RelativeTol = 0.005; bat.MaximumIterations = 8; bat.MaxConsecutiveDivergences = 4; bat.Propagator = Prop; bat.ShowAllResiduals = On; bat.OLSEInitialRMSSigma = 100.; bat.OLSEMultiplicativeConstant = 3; bat.OLSEAdditiveConstant = 0; bat.InversionAlgorithm = 'Internal'; bat.EstimationEpochFormat = 'FromParticipants'; bat.EstimationEpoch = 'FromParticipants'; bat.ReportStyle = 'Normal'; bat.ReportFile = 'SpacecraftNavigation_LEO_RangeRate_SMAP.txt'; % % Mission sequence % BeginMissionSequence % Advance the OD epoch and run the BLS Propagate Prop(SMAP) {SMAP.ElapsedDays = 2}; RunEstimator bat;