scanning radar mode configuration -凯发k8网页登录
this example shows you how to model different radar scan modes using the fusionradarsensor
. this example shows how to configure the fusionradarsensor
for several commonly used radar scan modes. with this model, you can simulate radars which mechanically scan, electronically scan, and which use both mechanical and electronic scanning. the scan limits in azimuth and elevation are configurable for both mechanical and electronic scan modes.
mechanical rotator
360 degree azimuth scan
360 degree azimuth scan is a mode commonly found on both ground and airborne radars. this mode provides 360 degree surveillance by mechanically scanning the radar's antenna in azimuth. in this mode, radars typically employ a fan beam, which has a narrow field of view in azimuth, but covers a wide elevation span. these radars provide accurate range and azimuth measurements, but typically do not report elevation for the detected targets. a common example of a 360 degree azimuth scan radar is the airport surveillance radar.
use the function helperscanradarmodesexample
to create a trackingscenario
with a platform to mount the radar and three targets. this function also sets up a theaterplot
to display the locations of the targets, the beam and boresight position for the radar, and the detections generated by the radar.
you can learn more about using trackingscenario
and theaterplot
from the example.
% initialize trackingscenario for simulation and theaterplot for % visualization ts = trackingscenario; [platform,fig] = helperscanradarmodesexample('setup tracking scenario',ts); % set random seed for repeatable results rng(2018)
create a radar that mechanically rotates its antenna 360 degrees in azimuth. mount it 15 meters above the platform with a yaw of -135 degrees from the platform's axes. increase the azimuth field of view for better visibility in the displayed figures.
% create a 360 degree mechanically rotating radar radar = fusionradarsensor(1,'rotator'); % locate the radar 15 meters above the platform radar.mountinglocation = [0 0 -15]; % rotate the radar so that it is yawed -135 degrees from the platform's axes radar.mountingangles(1) = -135; % set the radar's azimuth field of view to 5 degrees to display larger beams radar.fieldofview(1) = 5; % display configured radar radar
radar = fusionradarsensor with properties: sensorindex: 1 updaterate: 1 detectionmode: 'monostatic' scanmode: 'mechanical' interferenceinputport: 0 emissionsinputport: 0 mountinglocation: [0 0 -15] mountingangles: [-135 0 0] fieldofview: [5 10.0000] lookangle: [0 0] rangelimits: [0 100000] detectionprobability: 0.9000 falsealarmrate: 1.0000e-06 referencerange: 100000 targetreportformat: 'clustered detections' use get to show all properties
configure the radar to mechanically scan at a rate of 2 rpm. in this mode, the radar schedules beams at each dwell that are spaced by the radar's azimuthal field of view. the radar's update rate is then computed from the desired scan rate and its azimuthal field of view.
rpm = 2; fov = radar.fieldofview; scanrate = rpm*360/60; % deg/s updaterate = scanrate/fov(1) % hz radar.updaterate = updaterate;
updaterate = 2.4000
use trackingscenario
to simulate the motion of the targets in the scenario and generate detections using the mechanically rotating radar model. helperscanradarmodesexample
is used to update the theaterplot
with the platform positions, radar beam and boresight location, and detections generated at each step of the simulation.
% configure trackingscenario to advance at the radar's update rate. ts.updaterate = radar.updaterate; % run simulation figure(fig); title('360 degree azimuth scan'); while advance(ts) && ishghandle(fig) % current simulation time simtime = ts.simulationtime; % current target positions targets = targetposes(platform); % generate target detections at current scan position dets = radar(targets,simtime); % update display helperscanradarmodesexample('update display',ts,platform,radar,dets); % take a snapshot of detection on inbound target takesnapshot = simtime> 5 && any(cellfun(@(d)d.objectattributes{1}.targetindex,dets)==2); snapped = helperscanradarmodesexample('snapshot',fig,takesnapshot); if snapped close(fig); end end
the preceding figures show the detection of the inbound target in 3-d and 2-d views. the inbound target is detected by the radar when its beam sweeps across its position. the radar's boresight is shown as a black, dotted line. the radar's current beam is shown as a blue, dashed line. the history of beam and boresight positions are shown in gray scale, with the more recent positions shown as black and the older positions fading to white.
360 degree azimuth scan with tilted elevation coverage
in the preceding section, the boresight of the radar's antenna (black, dotted line) was constrained to lie in the horizontal plane, resulting in half of the radar's beam directed below the horizontal plane. if you are modeling a ground-based radar, you may want to tilt the radar's boresight upwards so that only the area above the ground is surveyed by the radar. conversely, for an airborne platform, you may desire to point the radar's beam downwards, to survey targets at altitudes below the radar's platform.
tilt the boresight of the radar antenna so that none of the elevation span of the beam lies below the ground. to do this, enable elevation for the radar and set the elevation mechanical scan limits to search from the ground up to the full elevation field of view. then set the elevation field of view to be slightly greater than the elevation spanned by the mechanical scan limits so that no raster scanning is performed by the radar (raster scanning is addressed in the next section).
as previously mentioned, the radar schedules beams that are spaced by the azimuth and elevation field of view to cover the entire mechanical scan limits. by setting the elevation field of view to be slightly larger than the mechanical elevation scan limits, the radar places the beams in the middle of the mechanical scan limits.
this configuration was already set up when you created the radar using the 'rotator' configuration. all that you need to do is enable elevation.
release(radar);
radar.haselevation = true;
% confirm mechanical scan limits
radar.mechanicalazimuthlimits
radar.mechanicalelevationlimits
ans = 0 360 ans = -10 0
% confirm elevation field of view is slightly larger than the elevation % spanned by the scan limits so that raster scan is not performed elspan = diff(radar.mechanicalelevationlimits) islarger = radar.fieldofview(2)>elspan
elspan = 10 islarger = logical 1
use the helperscanradarmodesexample
function to run the simulation as was done by using a while-loop in the preceding section.
helperscanradarmodesexample('run simulation',ts,platform,radar,2);
in the preceding figures, you observe that the antenna is tilted upwards so that no radar energy is directed below the ground. the entire radar beam (blue, dashed lines) lies above the ground.
360 degree azimuth with elevation raster
sometimes a radar must perform 360 degree surveillance which covers a region greater than can be spanned by its elevation field of view. in this case, the radar mechanically rotates in azimuth and mechanically steps its antenna in elevation at the end of each 360 degree scan. this is a form of raster scanning where each raster bar is spaced by the radar's elevation field of view across the radar's elevation scan limits.
setup the radar to scan a 10 degree region above the ground using a beam which spans 5 degrees in elevation. this produces 3 elevation raster bars at 0, -5, and -10 degrees elevation.
release(radar); elfov = 5; % deg radar.fieldofview(2) = elfov; radar.mechanicalelevationlimits = [-10 0]-elfov/2; % increase the scan rate of the radar to show 2 complete cycles of the % raster scan pattern. rpm = 5; fov = radar.fieldofview; scanrate = rpm*360/60; % deg/s updaterate = scanrate/fov(1); % hz radar.updaterate = updaterate; % run the simulation helperscanradarmodesexample('run simulation',ts,platform,radar,3);
the two preceding figures show the radar's beam positions. the figure on the left shows the beam positions as the beam steps down from the first to the second raster bar (notice the step in elevation in the middle of the figure). the figure on the right shows beam positions after the previous raster scan has completed. in this case, the radar is stepping up from the third raster bar to the second raster bar. the distance between each raster bar is the radar's elevation field of view.
sector scan
mechanical azimuth sector scan
scanning a full 360 degree sector is time consuming. if the targets of interest are known to occupy a smaller region, a sector scan is typically used. by scanning over a smaller azimuth sector, a higher update rate is achieved for each target within the sector without increasing the mechanical scan rate of the radar.
setup the radar to scan a 90 degree azimuth sector by setting the mechanical scan limits to span 45 degrees on either side of the radar's mounted orientation. disable elevation to constrain the radar's beam to the horizontal plane.
setup a fusionradarsensor
with this configuration by specifying the 'sector' configuration for the radar.
radar = fusionradarsensor(1,'sector','mountingangles',[-135 0 0],'mountinglocation',[0 0 -15]); % set the radar's azimuth field of view to 5 degrees to display larger beams radar.fieldofview(1) = 5; % set the update rate to show multiple cycles of the sector scan rpm = 2; fov = radar.fieldofview; scanrate = rpm*360/60; % deg/s updaterate = scanrate/fov(1); % hz radar.updaterate = updaterate; % run the simulation helperscanradarmodesexample('run simulation',ts,platform,radar,4);
the top row of the figures shows the first scan of the azimuth sector, with the beam traversing the sector from the left to the right side of the figure. the bottom row shows the following scan of the azimuth sector, where the direction of the mechanical scan has reversed, traversing the figure from the right to the left.
once again, half of the radar's beam lies below the horizontal ground plane. you can mechanically tilt the beam upward or downward using the same technique as you used in the preceding section 360 degree azimuth scan with tilted elevation coverage.
mechanical azimuth sector scan with electronic elevation scan
some radars scan mechanically in azimuth and electronically stack multiple beams in elevation at the antenna's boresight. this avoids the need to perform a raster scan to slowly search out the region of interest. electronically steering and processing multiple beams in a single dwell position requires more complicated antenna hardware and signal processing algorithms, but provides higher update rates on each target in the sector.
configure the radar to mechanically scan its beam in azimuth while processing a 10 degree elevation field of view by electronically stacking multiple elevation beams at each dwell position.
release(radar); % enable mechanical and electronic scanning radar.scanmode = 'mechanical and electronic'; % enable elevation scanning and measurements radar.haselevation = true; % elevation scanning is performed electronically. set the electronic % azimuth scan limits to zero to disable electronic azimuth scan. set the % mechanical elevation scan limits to zero to disable mechanical elevation % scan radar.electronicazimuthlimits = [0 0]; radar.mechanicalelevationlimits = [0 0]; % confirm that the elevation field of view is greater than the elevation % spanned by the scan limits elspan = diff(radar.electronicelevationlimits) islarger = radar.fieldofview(2)>elspan
elspan = 10 islarger = logical 1
% run the simulation helperscanradarmodesexample('run simulation',ts,platform,radar,5);
the preceding figures show the radar detecting the inbound target. notice that the radar's boresight (black, dotted line) lies in the horizontal ground plane, but that the radar's beam is offset in elevation from its boresight. this offset of the beam position from the radar's boresight is accomplished by electronically steering beams in elevation.
electronic azimuth sector scan
the azimuth sector can be surveyed using electronic scanning as well. electronically scan the same azimuth sector by creating a fusionradarsensor
using the 'sector' scan configuration with its scan mode set to 'electronic' instead of 'mechanical'. enable elevation so that the region above the ground is scanned by stacking beams in elevation to span the entire elevation scan limits.
radar = fusionradarsensor(1,'sector','scanmode','electronic','haselevation',true, ... 'mountingangles',[-135 0 0],'mountinglocation',[0 0 -15]); % set update rate to show multiple cycles of the raster scan pattern radar.updaterate = updaterate; % set the radar's azimuth field of view to 5 degrees to display larger beams radar.fieldofview(1) = 5; % run the simulation helperscanradarmodesexample('run simulation',ts,platform,radar,6);
the preceding figures show that electronic sector scans always scan in the same direction (in this case, from the left side of the figure to the right side of the figure). unlike mechanical scanning, where the next beam position is constrained by the antenna's current mechanical position, electronic scanning can instantaneously move the beams within the scanned sector.
raster scan
mechanical raster scan
the radar can be easily configured to execute a mechanical raster scan pattern as follows.
radar = fusionradarsensor(1,'raster','mountingangles', [-135 0 0], 'mountinglocation', [0 0 -15]); % set update rate to show multiple cycles of the raster scan pattern radar.updaterate = updaterate; % set the radar's azimuth field of view to 5 degrees to display larger beams radar.fieldofview(1) = 5; % run the simulation helperscanradarmodesexample('run simulation',ts,platform,radar,7);
the preceding figures show the radar's beam position along each of the radar's 3 elevation raster scan bars. at the end of each azimuth scan, the radar steps in elevation by its field of view and reverses the direction of its azimuth scan. when an elevation scan limit is reached, the radar begins a new raster scan by reversing the direction in which it steps the beams in elevation.
you can use this configuration as a starting point and adjust the mechanical scan limits and field of view to match the scan pattern for the radar you wish to model.
electronic raster scan
you can also configure the radar to perform an electronic raster scan pattern. electronic raster scan patterns immediately repeat the same scan sequence after each scan, but a mechanical raster reverses its scan sequence to return the antenna's mechanical position back to its origin.
configure the radar to perform an electronic raster scan by setting its scan mode to 'electronic'.
radar = fusionradarsensor(1,'raster','scanmode','electronic','mountingangles',[-135 0 0],'mountinglocation',[0 0 -15]); % set update rate to show multiple cycles of the raster scan pattern radar.updaterate = updaterate; % set the radar's azimuth field of view to 5 degrees to display larger beams radar.fieldofview(1) = 5; % run the simulation helperscanradarmodesexample('run simulation',ts,platform,radar,8);
the preceding figures show the radar's beam position along each of the radar's 3 elevation raster scan bars. at the end of each azimuth scan, the radar steps in elevation by its field of view and continues scanning in azimuth in the same direction as the previous scan. when an elevation scan limit is reached, the radar repeats the same sequence of raster scan positions. with electronic scanning, the radar can instantaneously return to the beginning of the scan pattern and is not constrained by the current mechanical position of the radar.
you can use this configuration as a starting point and adjust the electronic scan limits and field of view to match the scan pattern for the radar you wish to model.
summary
this example shows you how to model many common scan patterns using the fusionradarsensor
. this model provides presets that enable you to quickly configure the radar and make additional minor adjustments to the scan parameters to match the radar you are modeling.