How to Model a Search and Track Radar in a Custom Application
Did you know that STK allows an end user to model objects in space and time?
STK11 included a lot of new features among those an object model paradigm for Communications and Radar objects. In this blog, we are going to focus on the Radar ones.
This is a simple example to show you how to implement a Search and Track Radar into a custom application using the new object model paradigm. References to the full documentation can be found here:
First of all you can define a radar object, obviously following the STK desktop paradigm, it needs to be attached to another object, in this case a facility:
//Add a facility to the scenario
AgFacility facility = root.CurrentScenario.Children.New(AgESTKObjectType.eFacility, "MyFacility") as AgFacility;
facility.Position.AssignGeodetic(13, 41, 0);
AgRadar radar = facility.Children.New(AgESTKObjectType.eRadar, "MyRadar") as AgRadar;
You can specify then configuration parameters for the radar object, such as Model, Mode, Antenna type, Orientation, Transmitter Frequency, Transmitter Power and so on.
/Configure the radar object as a monostatic model.
IAgRadarModelMonostatic monostaticModel = radar.Model as IAgRadarModelMonostatic;
//Orient the radar antenna in the direction of the target
radar.Model.AntennaControl.EmbeddedModelOrientation.AssignAzEl(50.9, 36.8, AgEAzElAboutBoresight.eAzElAboutBoresightRotate);
//Set the radar antenna model to parabolic
IAgAntennaModelParabolic parabolic = radar.Model.AntennaControl.EmbeddedModel as IAgAntennaModelParabolic;
//Give the parabolic antenna a 2 deg beamwidth;
parabolic.InputType = AgEAntennaModelInputType.eAntennaModelInputTypeBeamwidth;
parabolic.Beamwidth = 2.0;
//Put the monostatic radar model in Search/Track mode
IAgRadarModeMonostaticSearchTrack searchTrackMode = monostaticModel.Mode as IAgRadarModeMonostaticSearchTrack;
//Set the waveform type to fixed prf
IAgRadarWaveformMonostaticSearchTrackFixedPRF fixedPrf = searchTrackMode.Waveform as IAgRadarWaveformMonostaticSearchTrackFixedPRF;
fixedPrf.PulseDefinition.Prf = 0.002; //2 kHz
//Set the pulse width to 1e-8 sec
fixedPrf.PulseDefinition.PulseWidth = 1.0e-8; //sec
//Set the number of pulses
fixedPrf.PulseDefinition.NumberOfPulses = 25;
//Set the pulse integration strategy to goal SNR
fixedPrf.PulseIntegrationType = gERadarPulseIntegrationType.eRadarPulseIntegrationTypeGoalSNR;
IAgRadarPulseIntegrationGoalSNR pulseIntGoalSNR = fixedPrf.PulseIntegration as IAgRadarPulseIntegrationGoalSNR;
pulseIntGoalSNR.SNR = 40.0; //dB
//Set the transmit frequency
monostaticModel.Transmitter.FrequencySpecification = AgERadarFrequencySpec.eRadarFrequencySpecFrequency;
monostaticModel.Transmitter.Frequency = 2.1; //GHz
//Set the transmit power
monostaticModel.Transmitter.Power = 50.0; //dBW
Then the next step is to compute the access between the radar and the target object, for this you need just these very simple lines:
//Create an access object for the access between the radar and target
IAgStkAccess radarAccess = radarAsStkObject.GetAccessToObject(aircraftAsStkObject);
After this you can follow the usual DataProviders approach to retrieve the values of your interest for this analysis.
And that’s it. It was easy, right?