主要内容

模拟多路径返回引起的雷达回波

这个例子演示了如何模拟由于多路径反射而产生的鬼目标探测和跟踪,在多路径反射中,信号能量在返回到雷达之前被另一个目标反射。你将用一个统计雷达模型和一个生成IQ信号的更详细的收发器模型来模拟幽灵。

动机

许多公路场景不仅涉及其他车辆,而且还包括障碍物和护栏。驾驶场景设计师(自动驾驶工具箱)要了解更多关于如何在一个drivingScenario看看基于合成雷达和视觉数据的传感器融合(自动驾驶工具箱)例子。使用功能helperSimpleHighwayScenarioDSD从驾驶场景设计器导出,以获取高速公路场景和ego车辆的把手。

%为可重复的结果设置随机种子rndstate = RNG(“默认”);%使用助手创建场景[场景,电子车辆]=helperSimpleHighwayScenarioDSD();

要模拟由前瞻性的汽车雷达生成的检测,请使用radarDataGenerator.使用77 GHz的中心频率,这是典型的汽车雷达。我们将在100米的范围内产生探测,并选择一个PRF,使我们能够毫不含糊地测量高达67米/秒的接近率。

%汽车雷达系统参数fc=77e9;%中心频率(Hz)最大范围=100;%最大射程(米)管理员= 2.5;距离分辨率(m)vMax=67;汽车最大闭合率%(M / s)c = physconst (“光速”);%光速(m/s)bw = rangeres2bw(rangeres,c);%信号带宽(Hz)lambda = freq2wavelen(fc,c);%波长(m)prf = speed2dop(2 * vmax,lambda);%最大多普勒班次(Hz)Ramb=c/(2*prf);最大无歧义范围(m)创建一个前瞻性的汽车雷达rdr=雷达数据发生器(1,“无扫描”......“MountingLocation”,[3.4 0 0.2],......“AzimuthResolution”,4,......'rangeresolution'管理员,......“中心频率”足球俱乐部,......“带宽”,bw,......“HasRangeRate”,真的,......'rangerateresolution', 10,......“参考范围”,100,......“FieldOfView”,[70 5],......“RangeLimits”[0 rangeMax],......“RangeRateLimits”(-100 100),......“HasRangeAmbiguities”,真的,......“MaxUnambiguousRange”,兰姆,......“HasRangerate歧义”,真的,......“MaxUnambiguousRadialSpeed”, / 2,......“TargetReportFormat”“侦查”......'哈塞普州', 错误的,......“配置文件”,actorProfiles(场景));为说明目的显示所有检测RDR.DetectionProbability = 1;%创建鸟的眼图和检测绘图仪功能[~,detPlotterFcn]=helperSetupBEP(电子车辆,rdr);%生成原始检测时间= scenario.SimulationTime;tposes = targetPoses (egoVehicle);[侦破,~,配置]= rdr (tposes、时间);%绘图检测Detplotterfcn(DETS,Config);标题('自由空间(无多径)'

图中包含一个坐标轴。具有标题可用空间(无多径)的轴包含4个类型的线,修补程序。这些物体代表道路,雷达FOV,雷达检测。

上图显示了沿目标车辆以及沿屏障一侧的检测位置。然而,检测结果并不总是表现良好。对雷达工程师来说,多路径是一个相当大的挑战。多路径是指信号不仅直接传播到目标并返回到雷达,还包括环境中物体的额外反射。

多路径反射

当雷达信号传播到感兴趣的目标时,它可以通过各种路径到达。除了从雷达到目标再回到雷达的直接路径之外,还有其他可能的传播路径。路径的数量是不受限制的,但是随着每次反射,信号能量会减少。通常采用考虑三跳路径的传播模型来模拟这一现象。

为了理解三跳模型,首先考虑更简单的一次跳和两次跳路径,如下图所示。

一条反弹路径

单弹路径从雷达(1)传播到目标(2),然后从目标(2)反射回雷达。这通常被称为直接路径或视线路径。

双弹跳

存在两个独特的传播路径,由两个反弹组成。

前两条反弹路径从雷达(1)传播到反射面(3),然后在返回雷达(1)之前传播到目标(2)。因为雷达接收到的信号来自真实目标的最后一次反弹,它将沿着与真实目标相同的方向生成重影检测。因为此传播的路径长度较长,它将出现在比真实目标检测更远的范围内。

在返回到雷达(1)之前,第二两次两次反弹路径从雷达(1)传播到目标(2),然后在反射表面(3)上。在这种情况下,重影检测将出现在反射表面的另一侧,因为这是雷达将接收反射信号的方向。

请注意,两个反弹路径的路径长度是相同的。结果,这些路径的测量范围和范围率也是相同的。

Three-Bounce路径

三次反弹的路径在屏障上反射两次。这条路径不会直接传播到目标,也不会直接传回雷达。三反射鬼探测将出现在反射表面的另一侧,因为这是雷达接收反射信号的方向。此外,它具有三跳路径中最长的传播路径长度,因此将具有三跳路径中最长的测量范围。这条路径对应于屏障另一侧真实目标的镜面反射。

模型鬼目标检测

设定HasGhosts财产的radarDataGenerator对这些三反射路径产生的检测进行建模。

%启用重影目标模型release(rdr);rdr.hasgoots=true;%生成原始检测时间= scenario.SimulationTime;tposes = targetPoses (egoVehicle);[侦破,~,配置]= rdr (tposes、时间);%绘图检测Detplotterfcn(DETS,Config);标题(“简单的多路径环境”);

图中包含一个坐标轴。标题为“简单多路径环境”的轴包含7个类型为line、patch的对象。这些物体分别代表道路、雷达视场、雷达探测、1^{st} 2-反弹鬼、2^{nd} 2-反弹鬼、3-反弹鬼。

上图再现了对这三个传播路径的分析。第一个2次反弹的鬼在目标方向上,距离稍微大一点。第二个2-弹跳位于由障碍物反射产生的目标镜像的方向,与第一个2-弹跳的距离相同。而3-bounce检测则遵循目标车辆成像幽灵的轮廓。

鬼迹

因为Ghost目标检测的范围和速度就像真实目标的范围和速度,所以它们将具有一致的动力学,该导通跟踪器被配置为跟踪真正的目标检测。实际和鬼魂目标的运动学之间的这种一致性导致屏障另一侧的幽灵目标生成曲目。

设定targetreportformat.财产的radarDataGenerator到'Tracks',以模拟雷达在多路径存在时生成的轨迹。

%输出轨迹而不是检测释放(rdr);rdr。TargetReportFormat =“跟踪”; rdr.ConfirmationThreshold=[23];rdr.DeletionThreshold=[5];过滤器初始化FCN='initcvekf'%等速EKF创建一个新的鸟瞰图来绘制轨道[bep,trkPlotterFcn]=helperSetupBEP(egoVehicle,rdr);%运行模拟重启(场景);场景.StopTime=7.5;虽然前进(场景)时间=场景。模拟时间;TPOS=目标姿态(电子车辆);%生成轨迹[载重汽车,~,配置]= rdr (tposes、时间);%过滤出与静态对象(例如屏障)对应的轨迹dyntrks = helperKeepDynamicObjects(trks, egoVehicle, rdr);%可视化动态轨道egoVehicle helperPlotScenario (cep);trkPlotterFcn (dyntrks配置);结束标题(“简单的多路径环境”);

图中包含一个轴。标题为Simple Multipath Environment的轴包含9个类型为line、patch、text的对象。这些对象表示道路、雷达视场、雷达航迹、重影航迹。

上图显示了使用方形标记确认的轨迹位置。与静态对象(即障碍物)相对应的轨迹不打印。请注意,有多条轨道与引导车关联。覆盖在领头车上的轨迹对应于真实检测和第一个2弹跳重影。位于护栏另一侧道路之外的轨迹对应于第二个2反弹和3反弹重影。

轨道速度由指向远离轨道位置的矢量的长度和方向表示(这些矢量很小,因为它们相对于车辆)。幽灵探测可能会愚弄跟踪器,因为它们的运动学与真实目标的运动学相似。这些重影轨迹可能会有问题,因为它们会给跟踪器增加额外的处理负载,并且可能会混淆使用目标轨迹的控制决策。

模型IQ信号

在上面执行的单跳和多跳模拟中,您使用统计雷达模型来生成探测和跟踪。现在,使用RadarTransceiver.生成时域IQ信号。尽管RadarTransceiver.有其他建筑选择吗radarDataGenerator方便地有一个选项,以返回一个自动配置的收发器对象,使其性能特征尽可能接近的radarDataGenerator

因为收发机不会执行任何检测或估计,所以将雷达的角度分辨率设置为其FoV。还将检测概率设置为0.9,以便收发机使用真实的发射功率和噪声系数。

重置radardatgenerator并获取收发器释放(rdr);rdr。AzimuthResolution = rdr.FieldOfView (1);rdr。DetectionProbability = 0.9;收发机= radarTransceiver (rdr);

使用numrepetitions.属性指定每次对收发器的调用要收集多少脉冲。

收集的脉冲总数numPulses = 128;每集合%脉冲数收发器。NumRepetitions = numPulses;

辅助功能Helperincludesignatures.将签名信息添加到POSE STRUCT,这告诉收发器每个目标的RC。HelperGetPathFromposes将生成关于环境中的每个传播路径的信息,包括涉及多次反弹的传播路径。收发器将使用它来计算我们的多径返回。

重启(场景);%重新启动方案tgtposs =针织品(例如,Egovehicle);%在ego车辆的参考坐标系中获取目标姿势tgtPoses = helperIncludeSignatures (tgtPoses,场景);%获取传播路径信息路径=helperGetPathsFromPoses(tgtPoses、scenario、rdr、lambda);

现在,收集数据的单一相干处理间隔(CPI),形成RDM,并绘图。收发器简单地采用上面的路径结构和当前的模拟时间作为输入,并返回按脉冲范围格式化的IQ数据,通常称为相位历史(PH)。

时间= scenario.SimulationTime;电流模拟时间rx =收发器(路径、时间);从收发机获取真实目标和幽灵目标的智商数据%匹配过滤接收的信号matchingcoeff = getMatchedFilter(收发器.WaveForm);matchedfilter = phased.matchedFilter('系数', matchingcoeff);matchingdelay =大小(matchingcoeff, 1) 1;mfiltOut = matchedfilter (rx);mfiltOut =缓冲区(mfiltOut (matchingdelay + 1:结束),大小(mfiltOut, 1));

使用以DC为中心的距离多普勒图(RDM)和延伸至最大范围的距离测绘带,每个分辨率单元一个样本。

df = prf / numpulse;%多普勒滤波器间距dopax =(-prf / 2:df:prf / 2-df)。';%多普勒轴rngax =(rangeres:rangeres:rangemax)。';%范围内轴%仅选择到最大范围的范围门PH=mfiltOut(1:numel(rngAx),:);%以dc为中心的RDMRDM = FFTSHIFT(FFT(pH,[],2),2);%绘制RDM和目标车辆的特写镜头helperPlotRDM(RDM、rngAx、dopAx、scenario.SimulationTime);

图中包含2个轴。标题为RDM的轴1在T = 0.00 s包含一个类型为image的对象。标题为Vehicle Return的Axes 2包含一个类型为image的对象。

上图的曲线显示了完整的RDM以及车辆返回的特写镜头。大约12 kHz多普勒的返回条带是从道路侧面的护栏。目标车辆在范围内约为30米,并且在略微负的多普勒处可见,因为它比EGO车辆更快地前进。另外两条返回条来自护栏和目标车辆之间的多径反射。

下面是以更高的分辨率记录了大约60帧数据,从大约3秒开始,以及早些时候的鸟瞰图。此录制仅显示护栏的单次反弹反射。当目标车辆开始改变车道且其到护栏的距离减小时,目标车辆的多路径返回开始。我们看到幽灵目标出现在比真实目标更大的距离和多普勒上,然后随着真实车辆稳定在道路中心,它们慢慢收敛。

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

总结

在这个例子中,您了解了如何通过雷达和目标之间的多次反射来探测鬼目标。一个汽车雷达场景被用来突出一个常见的情况,鬼目标是由雷达视野中的护栏产生的。因此,有4个独特的反弹路径可以产生这些鬼探测。鬼目标探测的运动学与真目标探测相似,因此,这些鬼目标会产生鬼轨迹,这会给跟踪器增加额外的处理负载,并可能会混淆使用这些轨迹的控制算法。的RadarTransceiver.可用于生成适合作为检测和跟踪算法的更高保真IQ数据。

金宝app支持功能

helperKeepDynamicObjects

作用dyntrks =升级lekegynamicobjects(Trks,Egovehicle,RDR)%滤除与静态对象相对应的曲目(例如护栏)%这是一个辅助功能,可以在将来删除或修改%释放。dyntrks=trks;如果~isempty(trks)vel=cell2mat(arrayfun)(t)t.State(2:2:end),trks(:)','统一输出'、假));isStatic = (- level (1,:) > egoVehicle.Velocity(1)-rdr.RangeRateResolution) & (- level (1,:) < egoVehicle.Velocity(1)+rdr.RangeRateResolution);dyntrks = trk (~ isStatic);结束结束

Helperincludesignatures.

作用tgtPoses=helperIncludeSignatures(tgtPoses,场景)%包括目标中的签名信息姿势结构以供使用% radarTransceiver%这是一个辅助功能,可以在将来删除或修改%释放。教授= scenario.actorProfiles;id0 = [prof.ActorID];id = [tgtPoses.ActorID];int = 1:numel(tgtpose) I = id0 == id(ind); / / id = 1tgtPoses(印第安纳州)。= {rcsSignature(签名“方位角”教授(我)。RCSAzimuthAngles,“海拔”......教授(一)RcselevationAngels,“模式”,教授(I).RCSPattern};结束结束

Helperplotrdm.

作用helperPlotRDM (RDM rngAx dopAx,时间)%绘制RDM和特写镜头%这是一个辅助功能,可以在将来删除或修改%释放。图;集(gcf,“位置”得到(gcf“位置”)+ [0 0 560 0]);子图(1,2,1);imagesc(dopax / 1e3,rngax,20 * log10(abs(rdm)));彩色杆;cx = caxis;caxis([Cx(2)-60 cx(2)]);Xlabel(“多普勒(千赫)”);ylabel(的范围(m));套装(GCA,“ydir”“正常”);标题(Sprintf('RDM时,T = %。2 f s ',时间));子图(1,2,2);RIDX = rngax> = 22&rngax <= 38;didx = dopax> = -5e3和dopax <= 0;ImagesC(Dopax(DIDX)/ 1E3,RNGAX(RIDX),20 * log10(ABS(RDM(RIDX,DIDX)))));彩色杆;cx = caxis;caxis([Cx(2)-60 cx(2)]);Xlabel(“多普勒(千赫)”);ylabel(的范围(m));套装(GCA,“ydir”“正常”);标题(“车辆返回”);结束