monostaticRadarSensor

Generate radar detections for tracking scenario

Description

The monostaticRadarSensor System object™ generates detections of targets by a monostatic surveillance scanning radar. You can use the monostaticRadarSensor object in a scenario containing moving and stationary platforms such as one created using trackingScenario. The monostaticRadarSensor object can simulate real detections with added random noise and also generate false alarm detections. In addition, you can use the detections generated by this object as input to trackers such as trackerGNN or trackerTOMHT.

This object enable you to configure a scanning radar. A scanning radar changes its look angle by stepping the mechanical and electronic position of the beam in increments of the angular span specified in the FieldOfView property. The radar scans the total region in azimuth and elevation defined by the radar mechanical and electronic scan limits, MechanicalScanLimits and ElectronicScanLimits. If the scanning limits for azimuth or elevation are set to [0 0], then no scanning is performed along that dimension for that scan mode. If the maximum mechanical scan rate for azimuth or elevation is set to zero, then no mechanical scanning is performed along that dimension.

Using a single-exponential mode, the radar computes range and elevation biases caused by propagation through the troposphere. A range bias means that measured ranges are greater than the line-of-sight range to the target. Elevation bias means that the measured elevations are above their true elevations. Biases are larger when the line-of-sight path between the radar and target passes through lower altitudes because the atmosphere is thicker.

To generate radar detections:

  1. Create the monostaticRadarSensor object and set its properties.

  2. Call the object with arguments, as if it were a function.

To learn more about how System objects work, see What Are System Objects? (MATLAB).

Creation

Description

sensor = monostaticRadarSensor(SensorIndex) creates a radar detection generator object with a specified sensor index, SensorIndex, and default property values.

example

sensor = monostaticRadarSensor(SensorIndex,Name,Value) sets properties using one or more name-value pairs. Enclose each property name in quotes. For example, monostaticRadarSensor(1,'DetectionCoordinates','Sensor rectangular') creates a radar detection generator that reports detections in the sensor Cartesian coordinate system with sensor index equal to 1.

sensor = monostaticRadarSensor(SensorIndex,'No scanning') is a convenience syntax that creates a monostaticRadarSensor that only points along the radar antenna boresight direction. No mechanical or electronic scanning is performed. This syntax sets the ScanMode property to 'No scanning'.

sensor = monostaticRadarSensor(SensorIndex,'Raster') is a convenience syntax that creates a monostaticRadarSensor object that mechanically scans a raster pattern. The raster span is 90° in azimuth from –45° to +45° and in elevation from the horizon to 10° above the horizon. See Convenience Syntaxes for the properties set by this syntax.

sensor = monostaticRadarSensor(SensorIndex,'Rotator') is a convenience syntax that creates a monostaticRadarSensor object that mechanically scans 360° in azimuth by mechanically rotating the antenna at a constant rate. When you set HasElevation to true, the radar antenna mechanically points towards the center of the elevation field of view. See Convenience Syntaxes for the properties set by this syntax.

sensor = monostaticRadarSensor(SensorIndex,'Sector') is a convenience syntax to create a monostaticRadarSensor object that mechanically scans a 90° azimuth sector from –45° to +45°. Setting HasElevation to true points the radar antenna towards the center of the elevation field of view. You can change the ScanMode to 'Electronic' to electronically scan the same azimuth sector. In this case, the antenna is not mechanically tilted in an electronic sector scan. Instead, beams are stacked electronically to process the entire elevation spanned by the scan limits in a single dwell. See Convenience Syntaxes for the properties set by this syntax.

Properties

expand all

Unless otherwise indicated, properties are nontunable, which means you cannot change their values after calling the object. Objects lock when you call them, and the release function unlocks them.

If a property is tunable, you can change its value at any time.

For more information on changing property values, see System Design in MATLAB Using System Objects (MATLAB).

Unique sensor identifier, specified as a positive integer. This property distinguishes detections that come from different sensors in a multi-sensor system. When creating a monostaticRadarSensor system object, you must either specify the SensorIndex as the first input argument in the creation syntax, or specify it as the value for the SensorIndex property in the creation syntax.

Data Types: double

Sensor update rate, specified as a positive scalar. This interval must be an integer multiple of the simulation time interval defined by trackingScenario. The trackingScenario object calls the radar scanning sensor at simulation time intervals. The radar generates new detections at intervals defined by the reciprocal of the UpdateRate property. Any update requested to the sensor between update intervals contains no detections. Units are in hertz.

Example: 5

Data Types: double

Sensor location on platform, specified as a 1-by-3 real-valued vector. This property defines the coordinates of the sensor with respect to the platform origin. The default value specifies that the sensor origin is at the origin of its platform. Units are in meters.

Example: [.2 0.1 0]

Data Types: double

Orientation of the sensor with respect to the platform, specified as a three-element real-valued vector. Each element of the vector corresponds to an intrinsic Euler angle rotation that carries the body axes of the platform to the sensor axes. The three elements define the rotations around the z-, y-, and x-axes, in that order. The first rotation rotates the platform axes around the z-axis. The second rotation rotates the carried frame around the rotated y-axis. The final rotation rotates the frame around the carried x-axis. Units are in degrees.

Example: [10 20 -15]

Data Types: double

Fields of view of sensor, specified as a 2-by-1 vector of positive real values, [azfov;elfov]. The field of view defines the total angular extent spanned by the sensor. Each component must lie in the interval (0,180]. Targets outside of the field of view of the radar are not detected. Units are in degrees.

Example: [14;7]

Data Types: double

Enable range ambiguities, specified as false or true. Set this property to true to enable range ambiguities by the sensor. In this case, the sensor cannot resolve range ambiguities and target ranges beyond the MaxUnambiguousRange are wrapped into the interval [0 MaxUnambiguousRange]. When false, targets are reported at their unambiguous range.

Data Types: logical

Maximum unambiguous range, specified as a positive scalar. Maximum unambiguous range defines the maximum range for which the radar can unambiguously resolve the range of a target. When HasRangeAmbiguities is set to true, targets detected at ranges beyond the maximum unambiguous range are wrapped into the range interval [0,MaxUnambiguousRange]. This property applies to true target detections when you set the HasRangeAmbiguities property to true.

This property also applies to false target detections when you set the HasFalseAlarms property to true. In this case, the property defines the maximum range for false alarms.

Units are in meters.

Example: 5e3

Dependencies

To enable this property, set the HasRangeAmbiguities property to true or set the HasFalseAlarms property to true.

Data Types: double

Enable range-rate ambiguities, specified as false or true. Set to true to enable range-rate ambiguities by the sensor. When true, the sensor does not resolve range rate ambiguities and target range rates beyond the MaxUnambiguousRadialSpeed are wrapped into the interval [-MaxUnambiguousRadialSpeed,MaxUnambiguousRadialSpeed]. When false, targets are reported at their unambiguous range rate.

Dependencies

To enable this property, set the HasRangeRate property to true.

Data Types: logical

Maximum unambiguous radial speed, specified as a positive scalar. Radial speed is the magnitude of the target range rate. Maximum unambiguous radial speed defines the radial speed for which the radar can unambiguously resolve the range rate of a target. When HasRangeRateAmbiguities is set to true, targets detected at range rates beyond the maximum unambiguous radial speed are wrapped into the range rate interval [-MaxUnambiguousRadialSpeed, MaxUnambiguousRadialSpeed]. This property applies to true target detections when you set HasRangeRateAmbiguities property to true.

This property also applies to false target detections obtained when you set both the HasRangeRate and HasFalseAlarms properties to true. In this case, the property defines the maximum radial speed for which false alarms can be generated.

Units are in meters per second.

Dependencies

To enable this property, set HasRangeRate and HasRangeRateAmbiguities to true and/or set HasRangeRate and HasFalseAlarms to true.

Data Types: double

Scanning mode of radar, specified as 'Mechanical', 'Electronic', 'Mechanical and electronic', or 'No scanning'.

Scan Modes

ScanModePurpose
'Mechanical'The radar scans mechanically across the azimuth and elevation limits specified by the MechanicalScanLimits property. The scan direction increments by the radar field of view angle between dwells.
'Electronic'The radar scans electronically across the azimuth and elevation limits specified by the ElectronicScanLimits property. The scan direction increments by the radar field of view angle between dwells.
'Mechanical and electronic'The radar mechanically scans the antenna boresight across the mechanical scan limits and electronically scans beams relative to the antenna boresight across the electronic scan limits. The total field of regard scanned in this mode is the combination of the mechanical and electronic scan limits. The scan direction increments by the radar field of view angle between dwells.
'No scanning'The radar beam points along the antenna boresight defined by the MountingAngles property.

Example: 'No scanning'

Maximum mechanical scan rate, specified as a nonnegative scalar or real-valued 2-by-1 vector with nonnegative entries.

When HasElevation is true, specify the scan rate as a 2-by-1 column vector of nonnegative entries [maxAzRate; maxElRate]. maxAzRate is the maximum scan rate in azimuth and maxElRate is the maximum scan rate in elevation.

When HasElevation is false, specify the scan rate as a nonnegative scalar representing the maximum mechanical azimuth scan rate.

Scan rates set the maximum rate at which the radar can mechanically scan. The radar sets its scan rate to step the radar mechanical angle by the field of regard. If the required scan rate exceeds the maximum scan rate, the maximum scan rate is used. Units are degrees per second.

Example: [5;10]

Dependencies

To enable this property, set the ScanMode property to 'Mechanical' or 'Mechanical and electronic'.

Data Types: double

Angular limits of mechanical scan directions of radar, specified as a real-valued 1-by-2 row vector or a real-valued 2-by-2 matrix. The mechanical scan limits define the minimum and maximum mechanical angles the radar can scan from its mounted orientation.

When HasElevation is true, the scan limits take the form [minAz maxAz; minEl maxEl]. minAz and maxAz represent the minimum and maximum limits of the azimuth angle scan. minEl and maxEl represent the minimum and maximum limits of the elevation angle scan. When HasElevation is false, the scan limits take the form [minAz maxAz]. If you specify the scan limits as a 2-by-2 matrix but set HasElevation to false, the second row of the matrix is ignored.

Azimuthal scan limits cannot span more than 360° and elevation scan limits must lie within the closed interval [-90° 90°]. Units are in degrees.

Example: [-90 90;0 85]

Dependencies

To enable this property, set the ScanMode property to 'Mechanical' or 'Mechanical and electronic'.

Data Types: double

This property is read-only.

Current mechanical scan angle of radar, returned as a scalar or real-valued 2-by-1 vector. When HasElevation is true, the scan angle takes the form [Az; El]. Az and El represent the azimuth and elevation scan angles, respectively, relative to the mounted angle of the radar on the platform. When HasElevation is false, the scan angle is a scalar representing the azimuth scan angle.

Dependencies

To enable this property, set the ScanMode property to 'Mechanical' or 'Mechanical and electronic'.

Data Types: double

Angular limits of electronic scan directions of radar, specified as a real-valued 1-by-2 row vector or a real-valued 2-by-2 matrix. The electronic scan limits define the minimum and maximum electronic angles the radar can scan from its current mechanical direction.

When HasElevation is true, the scan limits take the form [minAz maxAz; minEl maxEl]. minAz and maxAz represent the minimum and maximum limits of the azimuth angle scan. minEl and maxEl represent the minimum and maximum limits of the elevation angle scan. When HasElevation is false, the scan limits take the form [minAz maxAz]. If you specify the scan limits as a 2-by-2 matrix but set HasElevation to false, the second row of the matrix is ignored.

Azimuthal scan limits and elevation scan limits must lie within the closed interval [-90° 90°]. Units are in degrees.

Example: [-90 90;0 85]

Dependencies

To enable this property, set the ScanMode property to 'Electronic' or 'Mechanical and electronic'.

Data Types: double

This property is read-only.

Current electronic scan angle of radar, returned as a scalar or 1-by-2 column vector. When HasElevation is true, the scan angle takes the form [Az;El]. Az and El represent the azimuth and elevation scan angles, respectively. When HasElevation is false, the scan angle is a scalar representing the azimuth scan angle.

Dependencies

To enable this property, set the ScanMode property to 'Electronic' or 'Mechanical and electronic'.

Data Types: double

This property is read-only.

Look angle of sensor, specified as a scalar or real-valued 2-by-1 vector. Look angle is a combination of the mechanical angle and electronic angle depending on the ScanMode property.

ScanModeLookAngle
'Mechanical'MechnicalAngle
'Electronic'ElectronicAngle
'Mechanical and Electronic'MechnicalAngle + ElectronicAngle
'No scanning'0

When HasElevation is true, the look angle takes the form [Az;El]. Az and El represent the azimuth and elevation look angles, respectively. When HasElevation is false, the look angle is a scalar representing the azimuth look angle.

Probability of detecting a target, specified as a positive scalar less than or equal to one. This quantity defines the probability of detecting a target with a radar cross-section, ReferenceRCS, at the reference detection range, ReferenceRange.

Example: 0.95

Data Types: double

False alarm report rate within each radar resolution cell, specified as a positive scalar in the range [10–7,10–3]. Units are dimensionless. Resolution cells are determined from the AzimuthResolution and RangeResolution properties, and the ElevationResolution and RangeRateResolution properties when they are enabled.

Example: 1e-5

Data Types: double

Reference range for the given probability of detection and the given reference radar cross-section (RCS), specified as a positive scalar. The reference range is the range at which a target having a radar cross-section specified by ReferenceRCS is detected with a probability of detection specified by DetectionProbability. Units are in meters.

Example: 25e3

Data Types: double

Reference radar cross-section (RCS) for given a probability of detection and reference range, specified as a scalar. The reference RCS is the RCS value at which a target is detected with probability specified by DetectionProbability at ReferenceRange. Units are in dBsm.

Example: -10

Data Types: double

This property is read-only.

Radar loop gain, returned as a scalar. RadarLoopGain depends on the values of the DetectionProbability, ReferenceRange, ReferenceRCS, and FalseAlarmRate properties. Radar loop gain is a function of the reported signal-to-noise ratio of the radar, SNR, the target radar cross-section, RCS, and the target range, R. The function is

SNR = RadarLoopGain + RCS - 40log10(R)(1)
where SNR and RCS are in dB and dBsm, respectively, and range is in meters. Radar loop gain is in dB.

Data Types: double

Enable the radar to measure target elevation angles and to scan in elevation, specified as false or true. Set this property to true to model a radar sensor that can estimate target elevation and scan in elevation.

Data Types: logical

Enable the radar to measure target range rates, specified as false or true. Set this property to true to model a radar sensor that can measure target range rate. Set this property to false to model a radar sensor that cannot measure range rate.

Data Types: logical

Azimuth resolution of the radar, specified as a positive scalar. The azimuth resolution defines the minimum separation in azimuth angle at which the radar can distinguish two targets. The azimuth resolution is typically the 3dB downpoint of the azimuth angle beamwidth of the radar. Units are in degrees.

Data Types: double

Elevation resolution of the radar, specified as a positive scalar. The elevation resolution defines the minimum separation in elevation angle at which the radar can distinguish two targets. The elevation resolution is typically the 3dB-downpoint in elevation angle beamwidth of the radar. Units are in degrees.

Dependencies

To enable this property, set the HasElevation property to true.

Data Types: double

Range resolution of the radar, specified as a positive scalar. The range resolution defines the minimum separation in range at which the radar can distinguish between two targets. Units are in meters.

Data Types: double

Range rate resolution of the radar, specified as a positive scalar. The range rate resolution defines the minimum separation in range rate at which the radar can distinguish between two targets. Units are in meters per second.

Dependencies

To enable this property, set the HasRangeRate property to true.

Data Types: double

Azimuth bias fraction of the radar, specified as a nonnegative scalar. The azimuth bias is expressed as a fraction of the azimuth resolution specified in AzimuthResolution. This value sets a lower bound on the azimuthal accuracy of the radar. This value is dimensionless.

Data Types: double

Elevation bias fraction of the radar, specified as a nonnegative scalar. Elevation bias is expressed as a fraction of the elevation resolution specified by the value of the ElevationResolution property. This value sets a lower bound on the elevation accuracy of the radar. This value is dimensionless.

Dependencies

To enable this property, set the HasElevation property to true.

Data Types: double

Range bias fraction of the radar, specified as a nonnegative scalar. Range bias is expressed as a fraction of the range resolution specified in RangeResolution. This property sets a lower bound on the range accuracy of the radar. This value is dimensionless.

Data Types: double

Range rate bias fraction of the radar, specified as a nonnegative scalar. Range rate bias is expressed as a fraction of the range rate resolution specified in RangeRateResolution. This property sets a lower bound on the range-rate accuracy of the radar. This value is dimensionless.

Dependencies

To enable this property, set the HasRangeRate property to true.

Data Types: double

Enable the optional input argument that passes the current estimate of the sensor platform pose to the sensor, specified as false or true. When true, pose information is added to the MeasurementParameters structure of the reported detections. Pose information lets tracking and fusion algorithms estimate the state of the target detections in the north-east-down (NED) frame.

Data Types: logical

Enable addition of noise to radar sensor measurements, specified as true or false. Set this property to true to add noise to the radar measurements. Otherwise, the measurements have no noise. Even if you set HasNoise to false, the object still computes the MeasurementNoise property of each detection.

Data Types: logical

Enable creating false alarm radar measurements, specified as true or false. Set this property to true to report false alarms. Otherwise, only actual detections are reported.

Data Types: logical

Enable occlusion from extended objects, specified as true or false. Set this property to true to model occlusion from extended objects. Two types of occlusion (self occlusion and inter object occlusion) are modeled. Self occlusion occurs when one side of an extended object occludes another side. Inter object occlusion occurs when one extended object stands in the line of sight of another extended object or a point target. Note that both extended objects and point targets can be occluded by extended objects, but a point target cannot occlude another point target or an extended object.

Set this property to false to disable occlusion of extended objects. This will also disable the merging of objects whose detections share a common sensor resolution cell, which gives each object in the tracking scenario an opportunity to generate a detection.

Data Types: logical

Source of maximum number of detections reported by the sensor, specified as 'Auto' or 'Property'. When this property is set to 'Auto', the sensor reports all detections. When this property is set to 'Property', the sensor reports up to the number of detections specified by the MaxNumDetections property.

Data Types: char

Maximum number of detections reported by the sensor, specified as a positive integer. Detections are reported in order of distance to the sensor until the maximum number is reached.

Dependencies

To enable this property, set the MaxNumDetectionsSource property to 'Property'.

Data Types: double

Coordinate system of reported detections, specified as:

  • 'Scenario' — Detections are reported in the rectangular scenario coordinate frame. The scenario coordinate system is defined as the local NED frame at simulation start time. To enable this value, set the HasINS property to true.

  • 'Body' — Detections are reported in the rectangular body system of the sensor platform.

  • 'Sensor rectangular' — Detections are reported in the radar sensor rectangular body coordinate system.

  • 'Sensor spherical' — Detections are reported in a spherical coordinate system derived from the sensor rectangular body coordinate system. This coordinate system is centered at the radar sensor and aligned with the orientation of the radar on the platform.

Example: 'Sensor spherical'

Data Types: char

Enable RF interference input, specified as false or true. When true, you can add RF interference using an input argument of the object.

Data Types: logical

Radar waveform bandwidth, specified as a positive scalar. Units are in hertz.

Example: 100e3

Data Types: double

Center frequency of radar band, specified as a positive scalar. Units are in hertz.

Example: 100e6

Data Types: double

Minimum operational sensitivity of receiver, specified as a scalar. Sensitivity includes isotropic antenna receiver gain. Units are in dBmi.

Example: -10

Data Types: double

Usage

Description

dets = sensor(targets,simTime) creates radar detections, dets, from sensor measurements taken of targets at the current simulation time, simTime. The sensor can generate detections for multiple targets simultaneously.

dets = sensor(targets,ins,simTime) also specifies the INS-estimated pose information, ins, for the sensor platform. INS information is used by tracking and fusion algorithms to estimate the target positions in the NED frame.

To enable this syntax, set the HasINS property to true.

dets = sensor(targets,interference,simTime) also specifies an interference signal, interference.

To enable this syntax, set the HasInterference property to true.

[dets,numDets,config] = sensor(___) also returns the number of valid detections reported, numDets, and the configuration of the sensor, config, at the current simulation time. You can use these output arguments with any of the previous input syntaxes.

Input Arguments

expand all

Tracking scenario target poses, specified as a structure or array of structures. Each structure corresponds to a target. You can generate this structure using the targetPoses method of a platform. You can also create such a structure manually. The table shows the required fields of the structure:

FieldDescription
PlatformID

Unique identifier for the platform, specified as a scalar positive integer. This is a required field with no default value.

ClassID

User-defined integer used to classify the type of target, specified as a nonnegative integer. Zero is reserved for unclassified platform types and is the default value.

Position

Position of target in platform coordinates, specified as a real-valued, 1-by-3 vector. This is a required field with no default value. Units are in meters.

Velocity

Velocity of target in platform coordinates, specified as a real-valued, 1-by-3 vector. Units are in meters per second. The default is [0 0 0].

Acceleration

Acceleration of target in platform coordinates specified as a 1-by-3 row vector. Units are in meters per second-squared. The default is [0 0 0].

Orientation

Orientation of the target with respect to platform coordinates, specified as a scalar quaternion or a 3-by-3 rotation matrix. Orientation defines the frame rotation from the platform coordinate system to the current target body coordinate system. Units are dimensionless. The default is quaternion(1,0,0,0).

AngularVelocity

Angular velocity of target in platform coordinates, specified as a real-valued, 1-by-3 vector. The magnitude of the vector defines the angular speed. The direction defines the axis of clockwise rotation. Units are in degrees per second. The default is [0 0 0].

The values of the Position, Velocity, and Orientation fields are defined with respect to the platform coordinate system.

Current simulation time, specified as a positive scalar. The trackingScenario object calls the scan radar sensor at regular time intervals. The radar sensor generates new detections at intervals defined by the UpdateInterval property. The value of the UpdateInterval property must be an integer multiple of the simulation time interval. Updates requested from the sensor between update intervals contain no detections. Units are in seconds.

Data Types: double

Platform pose information from an inertial navigation system (INS) is a structure which has these fields:

FieldDefinition
Position

Position of the GPS receiver in the local NED coordinate system, specified as a real-valued 1-by-3 vector. Units are in meters.

Velocity

Velocity of the GPS receiver in the local NED coordinate system, specified as a real-valued 1-by-3 vector. Units are in meters per second.

Orientation

Orientation of the INS with respect to the local NED coordinate system, specified as a scalar quaternion or a 3-by-3 real-valued orthonormal frame rotation matrix. Defines the frame rotation from the local NED coordinate system to the current INS body coordinate system. This is also referred to as a "parent to child" rotation.

Dependencies

To enable this argument, set the HasINS property to true.

Data Types: struct

Interfering or jamming signal, specified as an array of radarEmission objects.

Dependencies

To enable this argument, set the HasInterference property to true.

Data Types: double
Complex Number Support: Yes

Output Arguments

expand all

Sensor detections, returned as a cell array of objectDetection objects. For a high level view of object detections, see objectDetection objects. Each object has these properties but the contents of the properties depend on the specific sensor. For the monostaticRadarSensor, see Object Detections.

PropertyDefinition
TimeMeasurement time
MeasurementObject measurements
MeasurementNoiseMeasurement noise covariance matrix
SensorIndexUnique ID of the sensor
ObjectClassIDObject classification
MeasurementParametersParameters used by initialization functions of nonlinear Kalman tracking filters
ObjectAttributesAdditional information passed to tracker

For the Measurement and MeasurementNoise are reported in the coordinate system specified by the DetectionCoordinates property.

Number of detections reported, returned as a nonnegative integer.

  • When the MaxNumDetectionsSource property is set to 'Auto', numDets is set to the length of dets.

  • When the MaxNumDetectionsSource property is set to 'Property', dets is a cell array with length determined by the MaxNumDetections property. The maximum number of detections returned is MaxNumDetections. If the number of detections is fewer than MaxNumDetections, the first numDets elements of dets hold valid detections. The remaining elements of dets are set to the default value.

Data Types: double

Current sensor configuration, specified as a structure. This output can be used to determine which objects fall within the radar beam during object execution.

FieldDescription
SensorIndex

Unique sensor index

IsValidTime

Valid detection time, returned as 0 or 1. IsValidTime is 0 when detection updates are requested at times that are between update intervals specified by UpdateInterval.

IsScanDone

IsScanDone is true when the sensor has completed a scan.

FieldOfView

Field of view of sensor determines which objects fall within the sensor beam during object execution. The field of view is defined as a 2-by-1 vector of positive real values, [azfov;elfov].

MeasurementParameters

MeasurementParameters is an array of structures containing the coordinate frame transforms needed to transform positions and velocities in the top-level frame to the current sensor frame.

Data Types: struct

Object Functions

To use an object function, specify the System object as the first input argument. For example, to release system resources of a System object named obj, use this syntax:

release(obj)

expand all

stepRun System object algorithm
releaseRelease resources and allow changes to System object property values and input characteristics
resetReset internal states of System object

Examples

expand all

Simulate a radar scenario.

sc = trackingScenario('UpdateRate',1);

Create an airport control tower with a surveillance radar located 15 meters above the ground. The radar rotates at 12.5 rpm and its field of view in azimuth is 5 degrees and its field of view in elevation is 10 degrees.

rpm = 12.5;
fov = [5;10]; % [azimuth; elevation]
scanrate = rpm*360/60;
updaterate = scanrate/fov(1) % Hz

radar = monostaticRadarSensor(1,'Rotator', ...
    'UpdateRate',updaterate, ...
    'MountingLocation',[0 0 -15], ...
    'MaxMechanicalScanRate',scanrate, ...
    'FieldOfView',fov, ...
    'AzimuthResolution',fov(1));
towermotion = kinematicTrajectory('SampleRate',1,'Position',[0 0 0],'Velocity',[0 0 0]);
tower = platform(sc,'ClassID',1,'Trajectory',towermotion);
aircraft1motion = kinematicTrajectory('SampleRate',1,'Position',[10000 0 1000],'Velocity',[-100 0 0]);
aircraft1 = platform(sc,'ClassID',2,'Trajectory',aircraft1motion);
aircraft2motion = kinematicTrajectory('SampleRate',1,'Position',[5000 5000 200],'Velocity',[100 100 0]);
aircraft2 = platform(sc,'ClassID',2,'Trajectory',aircraft2motion);

Perform 5 scans.

detBuffer = {};
scanCount = 0;
while advance(sc)    
    simTime = sc.SimulationTime;
    targets = targetPoses(tower);
    [dets,numDets,config] = radar(targets,simTime);
    detBuffer = [detBuffer;dets];
    if config.IsScanDone
            scanCount = scanCount + 1;
            if scanCount == 5;
                break;
            end
    end
end

Plot detections

tp = theaterPlot;
clrs = lines(3);
rp = platformPlotter(tp,'DisplayName','Radar','Marker','s',...
    'MarkerFaceColor',clrs(1,:));
pp = platformPlotter(tp,'DisplayName','Truth',...
    'MarkerFaceColor',clrs(2,:));
dp = detectionPlotter(tp,'DisplayName','Detections',...
    'MarkerFaceColor',clrs(3,:));
plotPlatform(rp,[0 0 0])
plotPlatform(pp,[targets(1).Position; targets(2).Position])
if ~isempty(detBuffer)
    detPos = cellfun(@(d)d.Measurement(1:3),detBuffer,...
        'UniformOutput',false);
    detPos = cell2mat(detPos')';
    plotDetection(dp,detPos)
end

More About

expand all

Extended Capabilities

See Also

Objects

Functions

System Objects

Introduced in R2018b