% % Spacecraft % Create Spacecraft SimSat; SimSat.DateFormat = UTCGregorian; SimSat.Epoch = '01 Mar 2005 00:00:00.000'; SimSat.CoordinateSystem = EarthMJ2000Eq; SimSat.DisplayStateType = Cartesian; SimSat.X = 6648.937; SimSat.Y = -335.169; SimSat.Z = 2789.137; SimSat.VX = -0.34697109; SimSat.VY = 7.092177415; SimSat.VZ = 2.14549075; SimSat.DryMass = 850; SimSat.Cd = 2.2; SimSat.Cr = 1.8; SimSat.DragArea = 15; SimSat.SRPArea = 1; SimSat.Id = 'LEOSat'; SimSat.AddHardware = {Transponder1, Antenna2}; SimSat.SolveFors = {} Create Spacecraft EstSat; EstSat.DateFormat = UTCGregorian; EstSat.Epoch = '01 Mar 2005 00:00:00.000'; EstSat.CoordinateSystem = EarthMJ2000Eq; EstSat.DisplayStateType = Cartesian; EstSat.X = 6648.937; EstSat.Y = -335.169; EstSat.Z = 2789.137; EstSat.VX = -0.34697109; EstSat.VY = 7.092177415; EstSat.VZ = 2.14549075; EstSat.DryMass = 850; EstSat.Cd = 2.2; EstSat.Cr = 1.8; EstSat.DragArea = 15; EstSat.SRPArea = 1; EstSat.Id = 'LEOSat'; EstSat.AddHardware = {Transponder1, Antenna2}; EstSat.SolveFors = {CartesianState} % % Communications Hardware % Create Antenna Antenna1 Antenna2; Create Transmitter Transmitter1; Create Receiver Receiver1; Receiver1.PrimaryAntenna = Antenna1; Transmitter1.PrimaryAntenna = Antenna1; Transmitter1.Frequency = 2400.; Create Transponder Transponder1; Transponder1.PrimaryAntenna = Antenna2; Transponder1.HardwareDelay = 0.0; Transponder1.TurnAroundRatio = '1/1' % % Error models. % Create ErrorModel RangeModel; RangeModel.Type = 'Range'; RangeModel.NoiseSigma = 0.010; RangeModel.Bias = 0.0; RangeModel.SolveFors = {}; Create ErrorModel DsnRangeModel; DsnRangeModel.Type = 'DSN_SeqRange'; DsnRangeModel.NoiseSigma = 35.; DsnRangeModel.Bias = 0.0; DsnRangeModel.SolveFors = {}; % % Ground stations % Create GroundStation GDS; GDS.CentralBody = Earth; GDS.StateType = Cartesian; GDS.HorizonReference = Ellipsoid; GDS.Location1 = -2353.621251; GDS.Location2 = -4641.341542; GDS.Location3 = 3677.052370; GDS.Id = 'GDS'; GDS.AddHardware = {Transmitter1, Receiver1, Antenna1}; GDS.MinimumElevationAngle = 5; GDS.ErrorModels = {DsnRangeModel}; GDS.IonosphereModel = None; GDS.TroposphereModel = None; Create GroundStation CAN; CAN.CentralBody = Earth; CAN.StateType = Cartesian; CAN.HorizonReference = Ellipsoid; CAN.Location1 = -4461.083514; CAN.Location2 = 2682.281745; CAN.Location3 = -3674.570392; CAN.Id = 'CAN'; CAN.AddHardware = {Transmitter1, Receiver1, Antenna1}; CAN.MinimumElevationAngle = 5; CAN.ErrorModels = {DsnRangeModel}; CAN.IonosphereModel = None; CAN.TroposphereModel = None; Create GroundStation MAD; MAD.CentralBody = Earth; MAD.StateType = Cartesian; MAD.HorizonReference = Ellipsoid; MAD.Location1 = 4849.519988; MAD.Location2 = -360.641653; MAD.Location3 = 4114.504590; MAD.Id = 'MAD'; MAD.AddHardware = {Transmitter1, Receiver1, Antenna1}; MAD.MinimumElevationAngle = 5; MAD.ErrorModels = {RangeModel}; MAD.IonosphereModel = None; MAD.TroposphereModel = None; % % Propagators % Create ForceModel fm; fm.CentralBody = Earth; fm.PointMasses = {Earth}; fm.Drag = None; fm.SRP = Off; fm.ErrorControl = 'None'; Create Propagator ODProp; ODProp.FM = fm; ODProp.Type = RungeKutta56; ODProp.InitialStepSize = 60; ODProp.Accuracy = 1e-13; ODProp.MinStep = 0; ODProp.MaxStep = 300; ODProp.MaxStepAttempts = 50; % % Tracking file sets. % Create TrackingFileSet simData; simData.FileName = {'TrackingFileSet_RampTable_DsnSeqRange_Linear_Sim.gmd'}; simData.AddTrackingConfig = {{GDS, SimSat, GDS}, 'DSN_SeqRange'} simData.UseLightTime = True; simData.UseRelativityCorrection = False; simData.UseETminusTAI = False; simData.SimRangeModuloConstant = 67108864; simData.SimDopplerCountInterval = 10.; simData.DataFilters = {}; Create TrackingFileSet estData; estData.FileName = {'TrackingFileSet_RampTable_DsnSeqRange_Linear_Sim.gmd'}; estData.AddTrackingConfig = {{GDS, EstSat, GDS}, 'DSN_SeqRange'} estData.UseLightTime = True; estData.UseRelativityCorrection = False; estData.UseETminusTAI = False; estData.SimRangeModuloConstant = 67108864; estData.SimDopplerCountInterval = 10.; estData.DataFilters = {}; % % Solvers % Create Simulator sim; sim.AddData = {simData}; sim.EpochFormat = 'UTCGregorian'; sim.InitialEpoch = '01 Mar 2005 00:00:00.000'; sim.FinalEpoch = '02 Mar 2005 00:00:00.000'; sim.MeasurementTimeStep = 60; sim.Propagator = ODProp; sim.AddNoise = Off; Create BatchEstimator bls bls.ShowProgress = True; bls.Measurements = {estData} bls.AbsoluteTol = 0.0001; bls.RelativeTol = 0.005; bls.MaximumIterations = 1; bls.MaxConsecutiveDivergences = 10; bls.Propagator = ODProp; bls.ShowAllResiduals = On; bls.OLSEInitialRMSSigma = 1000; bls.OLSEMultiplicativeConstant = 3; bls.OLSEAdditiveConstant = 0; bls.InversionAlgorithm = 'Internal'; bls.EstimationEpochFormat = 'FromParticipants'; bls.EstimationEpoch = 'FromParticipants'; bls.ReportStyle = 'Normal'; bls.ReportFile = 'TrackingFileSet_RampTable_DsnSeqRange_Const_Est.txt'; % % Mission sequence % BeginMissionSequence SetSeed(1) RunSimulator sim RunEstimator bls