主要内容

由于多路径返回模拟雷达鬼魂

这个例子展示了如何模拟鬼目标探测和跟踪由于多路径反射,在信号能量反射回到雷达之前另一个目标。在本例中您将模拟鬼魂统计雷达模型和一个收发器模型,生成IQ信号。

动机

不仅许多高速公路场景涉及其他车辆,而且壁垒和护栏。考虑使用创建的简单的高速公路驾驶场景设计师(自动驾驶工具箱)为更多的信息关于如何模型应用。看到的壁垒使用合成雷达和视觉传感器融合数据(自动驾驶工具箱)的例子。使用helperSimpleHighwayScenarioDSD函数导出的驾驶场景设计师让高速公路场景和自我车辆的处理。

%设置随机种子可重复的结果rndState = rng (“默认”);%使用辅助创建场景[场景,egoVehicle] = helperSimpleHighwayScenarioDSD ();

模型生成的检测一个前瞻性的汽车雷达、使用radarDataGenerator系统对象™。使用77 GHz中心频率,这是典型的汽车雷达。生成检测到150米距离和径向速度高达100 m / s。

%汽车雷达系统参数频率= 77 e9;%赫兹rgMax = 150;% mspMax = 100;% m / srcs = 10;% dBsmazRes = 4;%度rgRes = 2.5;% m存款准备金率= 0.5;% m / s%创建一个前瞻性的汽车雷达读数= radarDataGenerator (1,“没有扫描”,“UpdateRate”10“MountingLocation”(3.4 0 0.2),“CenterFrequency”频率,“HasRangeRate”,真的,“FieldOfView”70年[5],“RangeLimits”[0 rgMax],“RangeRateLimits”,(-spMax spMax),“HasRangeAmbiguities”,真的,“MaxUnambiguousRange”rgMax,“HasRangeRateAmbiguities”,真的,“MaxUnambiguousRadialSpeed”spMax,“ReferenceRange”rgMax,“ReferenceRCS”rcs,“AzimuthResolution”azRes,“RangeResolution”rgRes,“RangeRateResolution”存款准备金率,“TargetReportFormat”,“检测”,“配置文件”actorProfiles(场景));%创建鸟瞰情节和检测绘图机的功能[~,detPlotterFcn] = helperSetupBEP (egoVehicle读数);标题(的自由空间(没有多路));%生成原始检测时间= scenario.SimulationTime;tposes = targetPoses (egoVehicle);[侦破,~,配置]=读数(tposes、时间);%绘制检测detPlotterFcn(引爆器,配置);

由于多路径图模拟雷达鬼魂cep包含一个坐标轴对象。标题为自由空间的坐标轴对象(没有多路径),包含X (m), ylabel Y (m)包含5类型的对象,补丁。一个或多个行显示的值只使用这些对象标记代表路,雷达视场,雷达探测。

这个图显示了沿着目标检测车辆的位置以及沿一侧的障碍。然而,检测并不总是那么彬彬有礼的。一个现象,可以对雷达工程师多路径构成相当大的挑战。多路径是当信号不仅直接传播到目标和回雷达还包括额外的反射环境中的对象。

多路径反射

当雷达信号传播到目标的利益可以通过不同的路径到达。除了直接从雷达到目标路径,然后返回到雷达、还有其他可能的传播路径。路径的数量是无限的,但每个反射信号能量减少。通常,一个传播模型考虑three-bounce路径用于模型这一现象。

了解three-bounce模型,首先考虑one-bounce和two-bounce路径越简单,这些数字所示。

2-Bounce-Multipath-Illustration.png

One-Bounce路径

one-bounce路径传播的雷达目标(2)(1),然后从目标(2)反映雷达。这是通常被称为直接或视距路径。

Two-Bounce路径

在这种情况下,有两个独特的传播路径,由两个反弹。

第一个two-bounce路径传播从雷达(1)反射表面(3),然后到目标(2)返回雷达(1),因为之前在雷达接收到的信号到达从去年反弹真正的目标,它生成鬼检测沿同一方向为真正的目标。因为这个传播的路径长度较长,似乎在更远的范围比真正的目标检测。

第二two-bounce路径传播的雷达目标(2)(1),然后到反射表面(3)之前返回雷达(1)。在这种情况下,鬼检测出现在另一边的反射表面的雷达接收反射信号的方向。

注意,路径长度为two-bounce路径是一样的。因此,这些路径的测量范围和范围将是相同的。

Three-Bounce路径

3-Bounce-Multipath-Illustration.png

两次three-bounce路径反射障碍。这条路从来没有直接传播到目标或直接回雷达。three-bounce鬼检测出现在另一边的反射表面的雷达接收反射信号的方向。此外,它有最长的three-bounce路径的传播路径,因此有最长的测量范围的三个路径。这条路径对应于一个镜面反射的真正目标的另一边的障碍。

模型鬼目标检测

设置HasGhosts财产的radarDataGenerator从这些three-bounce路径模型生成的检测。

%使鬼目标模型释放(读数);读数。HasGhosts = true;%生成原始检测时间= scenario.SimulationTime;tposes = targetPoses (egoVehicle);[侦破,~,配置]=读数(tposes、时间);%绘制检测detPlotterFcn(引爆器,配置);标题(“简单的多路径环境”);

由于多路径图模拟雷达鬼魂cep包含一个坐标轴对象。坐标轴对象标题简单的多路径环境包含X (m), ylabel Y (m)包含8线类型的对象,补丁。一个或多个行显示的值只使用这些对象标记代表路,雷达视场、雷达探测、1 ^{圣}2-bounce鬼魂、2 ^{和}2-bounce鬼魂,3-bounce鬼。

这个数字再现了三个传播路径的分析。第一个two-bounce鬼魂躺在目标的方向稍微长比直接路径检测范围。第二two-bounce three-bounce鬼魂躺在反映图像的方向的目标反射产生的障碍。

鬼跟踪

因为鬼魂的目标检测的范围和速度的范围和速度就像真正的目标,他们一致的运动学跟踪配置跟踪真实目标检测。这种一致性之间的运动学和鬼魂的目标导致跟踪被生成的鬼魂的目标在势垒的另一边。

设置TargetReportFormat属性radarDataGenerator跟踪模型生成的跟踪雷达在多路径的存在。

%输出跟踪检测释放(读数);读数。TargetReportFormat =“跟踪”;读数。ConfirmationThreshold = [2 3];读数。DeletionThreshold = 5 [5];FilterInitializationFcn =“initcvekf”;%常速卡尔曼滤波器%创建一个新的鸟瞰阴谋情节(cep trkPlotterFcn] = helperSetupBEP (egoVehicle读数);标题(“简单的多路径环境”);%运行仿真重启(场景);场景。StopTime = 7.5;推进(场景)时间= scenario.SimulationTime;tposes = targetPoses (egoVehicle);%生成跟踪[载重汽车,~,配置]=读数(tposes、时间);%过滤掉跟踪对应静态对象(如屏障)dyntrks = helperKeepDynamicObjects(载重汽车,egoVehicle);%可视化动态跟踪egoVehicle helperPlotScenario (cep);trkPlotterFcn (dyntrks配置);结束

由于多路径图模拟雷达鬼魂cep包含一个坐标轴对象。坐标轴对象标题简单的多路径环境包含X (m), ylabel Y (m)包含10线类型的对象,补丁,文本。一个或多个行显示的值只使用这些对象标记代表路,雷达视场,雷达跟踪,鬼的踪迹。

这图显示了使用方形标记确认跟踪位置。相对应的轨道静态对象(例如一个障碍)不是策划。注意到有多个追踪相关领导的车。跟踪,覆盖汽车对应于真实的检测和第一个two-bounce鬼。的跟踪的路的另一侧护栏对应第二two-bounce three-bounce鬼。

跟踪速度表示的长度和方向的向量指向远离轨道位置(这些都很小,因为它们相对于自我车辆)。鬼检测可能愚弄一个追踪者,因为他们有运动学的运动学的真正目标。这些鬼跟踪问题可以添加额外的处理负载跟踪器,可以混淆使用目标跟踪控制决策。

模型IQ信号

在前面的空间和多路模拟在本例中,您使用measurement-level雷达模型生成检测和跟踪。现在,使用radarTransceiver系统对象生成时域IQ信号。创建一个等价的radarTransceiver直接从radarDataGenerator

统计雷达具有以下范围和数据(多普勒)参数确定使用的波形的约束radarTransceiver

rgMax = rdg.RangeLimits (2)% m
rgMax = 150
spMax = rdg.RangeRateLimits (2)% m / s
spMax = 100

计算脉冲重复频率(脉冲),满足雷达的速度范围。

λ= freq2wavelen (rdg.CenterFrequency);脉冲重复频率= 2 * speed2dop (2 * spMax,λ);

计算所需的脉冲数量来满足数据分辨率的要求。

存款准备金率= rdg.RangeRateResolution
存款准备金率= 0.5000
dopRes = 2 * speed2dop(存款准备金率,λ);numPulses = 2 ^ nextpow2(脉冲重复频率/ dopRes)
numPulses = 512
脉冲重复频率= dopRes * numPulses
脉冲重复频率= 1.3150 e + 05

确认明确此脉冲重复频率对应的范围超出了最大射程限制。

rgUmb = time2range(1 /脉冲重复频率)
rgUmb = 1.1399 e + 03

重新设定的一些性质radarDataGenerator为了更好的比较智商的结果radarTransceiver

释放(读数);%设置范围和数据与根据所需的脉冲重复频率和模棱两可%的脉冲数读数。MaxUnambiguousRange = rgUmb;读数。MaxUnambiguousRadialSpeed = spMax;%设置统计雷达报告集群检测比较%的智商视频雷达收发机。读数。TargetReportFormat =“集群检测”;读数。DetectionCoordinates =“身体”;

构造等效radarTransceiver直接从radarDataGenerator。默认情况下,radarTransceiver使用部门增加矩形天线模式与方位角和仰角波束宽度等于方位角和仰角的决议金宝搏官方网站radarDataGenerator。模拟的雷达传输模式,涵盖了所需的视野,第一组的方位分辨率radarDataGenerator等于的视野。

azRes = rdg.AzimuthResolution;读数。AzimuthResolution = rdg.FieldOfView (1);%从雷达数据生成器构造雷达收发机rtxrx = radarTransceiver(读数)
rtxrx = radarTransceiver属性:波形:[1 x1分阶段。RectangularWaveform]发射机:[1 x1分阶段。发射机]TransmitAntenna: [1 x1分阶段。散热器]ReceiveAntenna: [1 x1分阶段。收集器)接收机:[1 x1分阶段。ReceiverPreamp] MechanicalScanMode:‘没有’ElectronicScanMode:‘没有’MountingLocation: [3.4000 0 0.2000] MountingAngles: [0 0 0] NumRepetitionsSource:“财产”NumRepetitions: 512 RangeLimitsSource:“财产”RangeLimits: 150年[0]RangeOutputPort:假TimeOutputPort:假
%恢复所需的统计雷达方位分辨率读数。AzimuthResolution = azRes;

统计雷达模拟使用均匀线性阵列(齿龈)形成多个接收光束,根据需要达到指定的方位分辨率。所需的数量或元素是由雷达的方位分辨率和波长,和可以找到beamwidth2ap函数。

numRxElmt =装天花板(beamwidth2ap (rdg.AzimuthResolutionλ,0.8859)/(λ/ 2))
numRxElmt = 26

附上齿龈的接收天线radarTransceiver

elmt = rtxrx.ReceiveAntenna.Sensor;rxarray = phased.ULA (numRxElmtλ/ 2,“元素”,elmt);rtxrx.ReceiveAntenna。传感器= rxarray;

生成智商样品

使用helper3BounceGhostPaths函数计算three-bounce路径为目标和传感器位置的多路径场景。

重启(场景);tposes = targetPoses (egoVehicle);%为场景中的目标生成3-bounce传播路径路径= helper3BounceGhostPaths (tposes,读数);

使用radarTransceiver生成基带采样智商数据接收的雷达。

时间= scenario.SimulationTime;%当前仿真时间Xcube = rtxrx(路径、时间);%从3-bounce路径生成智商数据收发器模型

范围和多普勒处理

接收到的数据立方体三维:夏令时间样本,接收天线元素,标准时间样本。

大小(Xcube)
ans =1×364年26 512年

使用phased.RangeDopplerResponse系统对象执行范围和多普勒处理在第一和第三维度的数据立方体。

rngdopproc = phased.RangeDopplerResponse (“RangeMethod”,匹配滤波器的,“DopplerOutput”,“速度”,“PropagationSpeed”rtxrx.ReceiveAntenna.PropagationSpeed,“OperatingFrequency”rtxrx.ReceiveAntenna.OperatingFrequency,“SampleRate”,rtxrx.Receiver.SampleRate);mfcoeff = getMatchedFilter (rtxrx.Waveform);[Xrngdop, rggrid rrgrid] = rngdopproc (Xcube mfcoeff);

波束形成

使用phased.PhaseShiftBeamformer系统对象形成的光束接收天线沿二维数组元素的数据立方体。

azFov = rdg.FieldOfView (1);anggrid = -azFov / 2: azFov / 2;bmfwin = @ (N) normmax (taylorwin (N, -60));beamformer = phased.PhaseShiftBeamformer (“方向”(anggrid; 0 * anggrid),“SensorArray”rtxrx.ReceiveAntenna.Sensor,“OperatingFrequency”,rtxrx.ReceiveAntenna.OperatingFrequency);Xbfmrngdop = Xrngdop;(Nr、Ne、Nd) = (Xbfmrngdop)大小;Xbfmrngdop =排列(Xbfmrngdop [1 3 2]);% Nr x Nd NeXbfmrngdop =重塑(Xbfmrngdop [], Ne);Xbfmrngdop = beamformer (Xbfmrngdop。* bmfwin (Ne) ');Xbfmrngdop =重塑(Nr, Xbfmrngdop Nd, []);% Nr x Nd NbXbfmrngdop =排列(Xbfmrngdop [1 3 2]);% Nr Nb x和

使用helperPlotBeamformedRangeDoppler从beamformed情节射程角映射函数,范围和多普勒处理数据立方体。

helperPlotBeamformedRangeDoppler (Xbfmrngdop rggrid、anggrid rtxrx);

图Beamformed Range-Doppler包含一个坐标轴对象。坐标轴对象与标题Beamformed、范围和多普勒,包含X (m), ylabel Y (m)包含2类型的对象表面,线。一个或多个行显示的值只使用标记这个对象代表局部极大值。

接收到的信号的局部极大值对应的位置目标车辆,护栏,鬼的形象目标车辆的另一侧护栏。表明measurement-level检测所产生的radarDataGenerator符合的山峰射程角等效生成的地图吗radarTransceiver

使用helperPlayStatAndIQMovie函数比较measurement-level检测和智商处理期间视频这一场景。

helperPlayStatAndIQMovie(场景、egoVehicle rtxrx读数,rngdopproc, beamformer, bmfwin);

ghostIQ.gif

多路地面反弹

可以使用多路鬼检测有时在路上看到对象,否则不会检测到的雷达由于阻塞。一个例子是阻挡车辆的检测多路的路面。使用helperGroundBounceScenarioDSD函数来创建一个场景:一个缓慢移动的车辆在同一车道的自我车辆被另一辆车正前方的雷达。

[场景,egoVehicle] = helperGroundBounceScenarioDSD;ax3d = helperRadarChasePlot (egoVehicle);

黄色的车是被红色的车。之间的视线不存在蓝色自我汽车观测雷达和黄色的车。

viewLoc = [scenario.Actors (2) .Position (1) -10 -10);chasePlot (egoVehicle“ViewLocation”viewLoc,“ViewHeight”0,“ViewYaw”现年40岁的“父”,ax3d);

多路径可以通过一辆轿车的底部和表面之间的空间。

重用radarDataGenerator由于多路径生成鬼目标检测车辆和路面之间的。使用helperRoadProfileshelperRoadPoses函数列表中包括路面目标建模的场景,使多路路面和车辆。

释放(读数);读数。RangeRateResolution = 0.5;rdg.FieldOfView (2) = 10;读数。TargetReportFormat =“检测”;tprofiles = actorProfiles(场景);rdprofiles = helperRoadProfiles(场景);读数。概要文件= [tprofiles; rdprofiles];%创建鸟瞰情节和检测绘图机的功能(cep detPlotterFcn] = helperSetupBEP (egoVehicle读数);[ax3d, detChasePlotterFcn] = helperRadarChasePlot (egoVehicle读数);camup (ax3d [0 0 1);pos = egoVehicle。位置+ (5 5 0);坎波斯(ax3d pos);camtarget (ax3d [15 0 0]);%产生集群检测时间= scenario.SimulationTime;tposes = targetPoses (egoVehicle);rdposes = helperRoadPoses (egoVehicle);提出了= [tposes rdposes];[侦破,~,配置]=读数(姿势、时间);%绘制检测dyndets = helperKeepDynamicObjects(侦破,egoVehicle);detPlotterFcn (dyndets配置);

由于多路径图模拟雷达鬼魂cep包含一个坐标轴对象。坐标轴对象包含X (m), ylabel Y (m)包含8线类型的对象,补丁。一个或多个行显示的值只使用这些对象标记代表路,雷达视场、雷达探测、1 ^{圣}2-bounce鬼魂、2 ^{和}2-bounce鬼魂,3-bounce鬼。

阻挡汽车的检测可能是由于three-bounce路径之间存在路面和底部的红色车。

%找到3-bounce检测从闭塞的车i3 =找到(cellfun (@ (d) d.ObjectAttributes {1} .BouncePathIndex, dyndets) = = 3);det3 = dyndets {i3};%绘制3-bounce雷达和阻挡汽车之间的路径iBncTgt =找到([poses.ActorID] = = det3.ObjectAttributes {1} .BounceTargetIndex);iTgt =找到([poses.ActorID] = = det3.ObjectAttributes {1} .TargetIndex);pos = [rdg.MountingLocation;姿势(iBncTgt) .Position;姿势(iTgt) .Position] + egoVehicle.Position;持有(ax3d“上”);plot3 (ax3d pos (: 1), pos (:, 2), pos (:, 3),的r - *,“线宽”2);坎波斯([6 -15 2]);camtarget([0 0] 17日);

这图显示了three-bounce道路红线。观察到反弹的道路和雷达之间的咬合的黄色汽车存在通过下面底部的红色车。

%显示反弹路径到达阻挡黄色的车坎波斯([55 -10 3]);camtarget (35 0 [0]);

这图显示了three-bounce路径到达闭塞的黄色汽车后路面的反射。

总结

在这个示例中,您了解了如何将鬼目标检测来自之间可能发生多次反射雷达和目标。汽车雷达的场景被用来强调常见的情况下,鬼领域的目标是由一个护栏的雷达视图。因此,有四个独特的反射路径可以产生这些鬼检测。鬼的运动学目标检测的检测就像真正的目标,因此,这些可以创建鬼鬼目标跟踪可以添加额外的处理负载跟踪,可能混淆使用这些跟踪控制算法。的radarTransceiver可用于生成适当的高保真智商数据作为输入来检测和跟踪算法。

%恢复随机状态rng (rndState);

金宝app支持功能

helperKeepDynamicObjects

函数egoVehicle dynrpts = helperKeepDynamicObjects (rpt)%过滤目标报告对应静态对象(如护栏)%%这是一个helper函数,可能在未来被删除或修改%释放。dynrpts = rpt;如果~ isempty (rpt)如果iscell (rpt)或者= cell2mat (cellfun (@ (d) d.Measurement(4:结束),rpt (:),“UniformOutput”、假));其他的韦尔= cell2mat (arrayfun (@ (t) t.State(2:2:结束),rpt (:),“UniformOutput”、假));结束韦尔=符号(韦尔(:1))。* sqrt(总和(abs(韦尔(1:2,:))^ 2,1));egoVel =符号(egoVehicle.Velocity(1)) *规范(egoVehicle.Velocity (1:2));gndvel =韦尔+ egoVel;%检测速度相对于地面isStatic = gndvel > 4 &大于4米/秒离开,gndvel < 8;%不到8米/秒关闭速度dynrpts = rpt (~ isStatic);结束结束

normmax

函数y = normmax (x)如果所有(abs (x (:)) = = 0) y = 1(大小(x),“喜欢”,x);其他的y = x (:) / max (abs (x (:)));结束结束