Main Content

staticDetectionFuser

Static fusion of synchronous sensor detections

Description

staticDetectionFuserSystem object™ creates a static detection fuser object to fuse angle-only sensor detections.

To obtain the fuser:

  1. Create thestaticDetectionFuserobject and set its properties.

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

To learn more about how System objects work, seeWhat Are System Objects?

Creation

Description

fuser= staticDetectionFuser()creates a default three-sensor static detection fuser object to fuse angle-only sensor detections.

example

fuser= staticDetectionFuser(Name,Value)sets properties using one or more name-value pairs. For example,fuser = staticDetectionFuser('FalseAlarmRate',1e-6,'MaxNumSensors',12)creates a fuser that has a maximum of 12 sensors and a false alarm rate of1e-6. Enclose each property name in quotes.

Properties

expand all

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

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

For more information on changing property values, seeSystem Design in MATLAB Using System Objects.

传感器指数的综合检测报告by the fuser, specified as a positive integer. This index becomes theSensorIndexofobjectDetectionobjects returned by the fuser.

Example:5

Data Types:double

Function for fusing multiple sensor detections, specified as a character vector, string, or function handle. The function fuses multiple detections into one and returns the fused measurement and measurement noise. Any fusing function combines at most one detection from each sensor. The syntax of the measurement fuser function is:

[fusedMeasurement, fusedMeasurementNoise] =测量mentFusionFcn(detections)
输入和输出函数参数是在哪里

  • detections– cell array ofobjectDetectionmeasurements.

  • fusedMeasurement– anN-by-1 vector of fused measurements.

  • fusedMeasurementNoise– anN-by-Nmatrix of fused measurements noise.

The value ofNdepends on theMeasurementFormatproperty.

MeasurementFormat Property N
'Position' 1, 2, and 3
'Velocity 1, 2, and 3
'PositionAndVelocity 2, 4, and 6
'Custom' Any

Data Types:char|string|function_handle

Format of the fused measurement, specified as'Position','Velocity','PositionAndVelocity', or'Custom'. The formats are

  • 'Position'– the fused measurement is the position of the target in the global coordinate frame.

  • 'Velocity'– the fused measurement is the velocity of the target in the global coordinate frame.

  • 'PositionAndVelocity'– the fused measurement is the position and velocity of the target in the global coordinate frame defined according to the format[x;vx;y;vy;z;vz].

  • 'Custom'– custom fused measurement. To enable this format, specify a function using theMeasurementFcn.

Example:'PositionAndVelocity'

Custom measurement function, specified as a character vector, string, or function handle. Specify the function that transforms fused measurements into sensor measurements. The function must have the following signature:

sensorMeas = MeasurementFcn(fusedMeas,measParameters)

Dependencies

To enable this property, set theMeasurementFormatproperty to'Custom'.

Data Types:char|string|function_handle

Maximum number of sensors in surveillance region, specified as a positive integer greater than one.

Data Types:double

Volume of sensors detection bins, specified as a positive scalar orN-length vector of positive scalars.Nis the number of sensors. If specified as a scalar, each sensor is assigned the same volume. If a sensor produces an angle-only measurement, for example, azimuth and elevation, the volume is defined as the solid angle subtended by one bin.

Data Types:double

Probability of detection of a target by each sensor, specified as a scalar orN-length vector of positive scalars in the range (0,1).Nis the number of sensors. If specified as a scalar, each sensor is assigned the same detection probability. The probability of detection is used in calculating the cost of fusing a "one" (target was detected) or "zero" (target was not detected) detections from each sensor.

Example:0.99

Data Types:double

Rate at which false positives are reported by sensor in each bin, specified as a scalar orN-length vector of positive scalars.Nis the number of sensors. If specified as a scalar, each sensor is assigned the same false alarm rate. The false alarm rate is used to calculate the likelihood of clutter in the detections reported by each sensor.

Example:1e-5

Data Types:double

Option to use parallel computing resources, specified asfalseortrue. ThestaticDetectionFusercalculates the cost of fusing detections from each sensor as an n-D assignment problem. The fuser spends most of the time in computing the cost matrix for the assignment problem. If Parallel Computing Toolbox™ is installed, this option lets the fuser use the parallel pool of workers to compute the cost matrix.

Data Types:logical

Absolute tolerance between timestamps of detections, specified as a nonnegative scalar. ThestaticDetectionFuserassumes that sensors are synchronous. This property defines the allowed tolerance value between detection time-stamps to still be considered synchronous.

Example:1e-3

Data Types:double

Usage

Description

compositeDets= fuser(dets)returns the fused detections,compositeDets, of input detections,dets.

[compositeDets,analysisInfo] = fuser(dets)also returns analysis information,analysisInfo.

Input Arguments

expand all

Pre-fused detections, specified as a cell array ofobjectDetectionobjects.

Output Arguments

expand all

Pre-fused detections, returned as a cell array ofobjectDetectionobjects.

Analysis information, returned as a structure. The fields of the structure are:

  • CostMatrixN-dimensional cost matrix providing the cost of association of detections, whereNis the number of sensors. The cost is the negative log-likelihood of the association and can be interpreted as the negative score of the track that will be generated by the fused measurement.

  • Assignments– AP-by-Nlist of assignments, wherePis the number of composite detections.

  • FalseAlarms– AQ-by-1 list of indices of detections declared as false alarms by association.

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 namedobj, use this syntax:

release(obj)

expand all

release Release resources and allow changes toSystem objectproperty values and input characteristics
reset Reset internal states ofSystem object
isLocked Determine ifSystem objectis in use
clone Create duplicateSystem object

Examples

collapse all

Fuse angle-only detections from three ESM sensors.

Load stored detections from the sensors.

load('angleOnlyDetectionFusion.mat','detections');

Visualize angle-only detections for plotting the direction vector.

rPlot = 5000; plotData = zeros(3,numel(detections)*3);fori = 1:numel(detections) az = detections{i}.Measurement(1); el = detections{i}.Measurement(2); [xt,yt,zt] = sph2cart(deg2rad(az),deg2rad(el),rPlot);% The sensor is co-located at platform center, therefore use% the position from the second measurement parameteroriginPos = detections{i}.MeasurementParameters(2).OriginPosition; positionData(:,i) = originPos(:); plotData(:,3*i-2) = [xt;yt;zt] + originPos(:); plotData(:,3*i-1) = originPos(:); plotData(:,3*i) = [NaN;NaN;NaN];endplot3(plotData(1,:),plotData(2,:),plotData(3,:),'r-') holdonplot3(positionData(1,:),positionData(2,:),positionData(3,:),'o','MarkerSize',12,'MarkerFaceColor','g')

Figure contains an axes object. The axes object contains 2 objects of type line.

Create astaticDetectionFuserto fuse angle-only detections using the measurement fusion functiontriangulateLOS.

fuser = staticDetectionFuser('MeasurementFusionFcn','triangulateLOS','MaxNumSensors',3)
fuser = staticDetectionFuser with properties: FusedSensorIndex: 1 MeasurementFusionFcn: 'triangulateLOS' MeasurementFormat: 'Position' MaxNumSensors: 3 Volume: [3x1 double] DetectionProbability: [3x1 double] FalseAlarmRate: [3x1 double] TimeTolerance: 1.0000e-06 UseParallel: false

Create the fused detections and obtain the analysis information.

[fusedDetections, analysisInfo] = fuser(detections); fusedPositions = zeros(3,numel(fusedDetections));fori = 1:numel(fusedDetections) fusedPositions(:,i) = fusedDetections{i}.Measurement;endplot3(fusedPositions(1,:),fusedPositions(2,:),fusedPositions(3,:),'ko',...'MarkerSize',12,'MarkerFaceColor','k') legend('Angle-only Detections','Sensor Positions','Fused Target Measurements') title('Angle-only Detection Fusion') xlabel('x [m]') ylabel('y [m]') view(2)

Figure contains an axes object. The axes object with title Angle-only Detection Fusion contains 3 objects of type line. These objects represent Angle-only Detections, Sensor Positions, Fused Target Measurements.

Use theanalysisInfooutput to check the assignments.

analysisInfo.Assignments
ans =6x3 uint32 matrix0 10 14 1 6 11 2 7 12 3 8 13 4 9 0 5 0 15

Algorithms

expand all

References

[1] Bar-Shalom, Yaakov, Peter K. Willett, and Xin Tian.Tracking and data fusion. Storrs, CT, USA:: YBS publishing, 2011.

Extended Capabilities

Introduced in R2018b