自动驾驶雷达信号仿真与处理GÿdF4y2Ba

该示例示出了如何将雷达的硬件,信号处理,以及传播环境模型的驱动方案。首先,你开发雷达发射的模型,并使用相控阵系统工具箱™接收硬件,信号处理,检测和评估。然后,你的模型车辆的运动和跟踪使用自动驾驶工具箱™的汽车综合检测。在这个例子中,你使用这个雷达模型来跟踪高速公路行驶场景检测。GÿdF4y2Ba

这个例子需要自动驾驶的工具箱。GÿdF4y2Ba

介绍GÿdF4y2Ba

你可以用GÿdF4y2BadrivingScenarioGÿdF4y2Ba从自动驾驶工具箱对象。然后,车辆地面实况可用于生成合成的传感器的检测,这可以通过使用跟踪GÿdF4y2BamultiObjectTrackerGÿdF4y2Ba对象。有关此工作流的示例,请参见GÿdF4y2Ba利用Simulink中的合成雷达和视觉数据进行传感器融合万博1manbetxGÿdF4y2Ba(自动驾驶工具箱)。本例中使用的汽车雷达使用根据高级雷达规范参数化的统计模型。本例中建模的通用雷达体系结构不包括特定的天线配置、波形或独特的信道传播特性。在设计汽车雷达时,或者在已知雷达的特定体系结构时,建议使用包含此附加信息的雷达模型。GÿdF4y2Ba

相控阵系统工具箱使您能够评估不同的雷达架构。您可以探索不同的发射和接收阵列配置、波形和信号处理链。您还可以根据不同的渠道模型评估您的设计,以评估它们对不同环境条件的鲁棒性。此建模帮助您确定最适合您的应用程序需求的特定设计。GÿdF4y2Ba

在本例中,您将了解如何从远程雷达的一组系统需求中定义雷达模型。然后,您将模拟一个驾驶场景,以从您的雷达模型生成检测结果。跟踪器是用来处理这些检测,以产生精确的估计位置和速度的车辆检测到你的汽车雷达。GÿdF4y2Ba

根据远程雷达要求计算雷达参数GÿdF4y2Ba

定义了调频连续波(FMCW)波形的雷达参数,如示例所示GÿdF4y2Ba汽车自适应巡航控制系统使用FMCW技术GÿdF4y2Ba.该雷达的中心频率为77千兆赫。这种频率通常被汽车雷达使用。对于远程操作,雷达必须探测到自我车辆前方100米范围内的车辆。雷达需要分辨距离至少1米的目标。因为这是一个前向雷达应用,雷达也需要处理大关闭速度的目标,高达230公里/小时。GÿdF4y2Ba

该雷达被设计成使用FMCW波形。这些波形在汽车应用中很常见,因为它们通过计算高效的FFT操作实现了距离和多普勒估计。GÿdF4y2Ba

%设定随机数发生器,用于可重复的结果GÿdF4y2Barng (2017);GÿdF4y2Ba根据指定的长期要求计算硬件参数GÿdF4y2Bafc = 77 e9;GÿdF4y2Ba中心频率(Hz)GÿdF4y2BaC = physconst(GÿdF4y2Ba“光速”GÿdF4y2Ba);GÿdF4y2Ba%光速(m/s)GÿdF4y2Baλ= c / fc;GÿdF4y2Ba%波长(m)GÿdF4y2Ba%设置啁啾持续时间为5倍最大范围要求GÿdF4y2Ba的RangeMax = 100;GÿdF4y2Ba最大射程(m)GÿdF4y2BaTM = 5 * range2time(的RangeMax,C);GÿdF4y2Ba%啁啾持续时间(S)GÿdF4y2Ba%根据所需的距离分辨率确定波形带宽GÿdF4y2BarangeRes = 1;GÿdF4y2Ba%所需的范围分辨率(米)GÿdF4y2Babw=范围2bw(范围,c);GÿdF4y2Ba%对应带宽(Hz)GÿdF4y2Ba设置采样率,以满足范围和速度的要求GÿdF4y2Ba雷达费用%GÿdF4y2BasweepSlope =体重/ TM;GÿdF4y2BaFMCW扫描斜率% (Hz/s)GÿdF4y2BafbeatMax=range2beat(rangeMax,扫掠坡度,c);GÿdF4y2Ba%最大拍频(Hz)的GÿdF4y2BaVMAX = 230 *3600分之1000;GÿdF4y2Ba汽车的%最大速度(米/秒)GÿdF4y2BafdopMax = speed2dop (2 * vMax,λ);GÿdF4y2Ba%最大多普勒频移(Hz)的GÿdF4y2BafifMax = fbeatMax + fdopMax;GÿdF4y2Ba%最大接收中频(赫兹)GÿdF4y2Bafs = max (2 * fifMax bw);GÿdF4y2Ba%采样率(Hz)GÿdF4y2Ba%配置FMCW波形使用波形参数派生GÿdF4y2Ba%长期需求GÿdF4y2Ba波形= phased.FMCWWaveform (GÿdF4y2Ba'扫描时间'GÿdF4y2Batm,GÿdF4y2Ba'SweepBandwidth'GÿdF4y2Babw,GÿdF4y2Ba...GÿdF4y2Ba“SampleRate”GÿdF4y2Bafs,GÿdF4y2Ba“SweepDirection”GÿdF4y2Ba,GÿdF4y2Ba“了”GÿdF4y2Ba);GÿdF4y2Ba如果GÿdF4y2Ba比较字符串(waveform.SweepDirectionGÿdF4y2Ba'下'GÿdF4y2Ba)sweepSlope = -sweepSlope;GÿdF4y2Ba结束GÿdF4y2BaNsweep = 192;GÿdF4y2Ba

型号汽车雷达硬件GÿdF4y2Ba

该雷达使用线性阵列(ULA)的均匀成发射和接收雷达波形。使用线性阵列使得能够雷达来估计从所述目标车辆接收到的反射能量的方位角方向。长程雷达需要检测整个覆盖区域的目标,在自身车辆前方跨度15度。A 6-元件通过提供一16度的半功率波束宽度的接收阵列满足这一要求。在发送时,雷达仅使用单个阵列元素,从而使其能够覆盖比上接收一个较大的面积。GÿdF4y2Ba

对天线单元建模GÿdF4y2BaantElmnt = phased.IsotropicAntennaElement (GÿdF4y2Ba'BackBaffled'GÿdF4y2Ba,真正的);GÿdF4y2Ba%构建接收阵列GÿdF4y2Ba不= 6;rxArray = phased.ULA (GÿdF4y2Ba'元件'GÿdF4y2BaantElmnt,GÿdF4y2Ba“NumElements”GÿdF4y2Ba,NE,GÿdF4y2Ba...GÿdF4y2Ba'ElementSpacing'GÿdF4y2Ba,λ-/ 2);GÿdF4y2Ba%形态朝前光束,以检测自身车辆的前方的物体GÿdF4y2Babeamformer = phased.PhaseShiftBeamformer (GÿdF4y2Ba'SensorArray'GÿdF4y2Ba,rxArray,GÿdF4y2Ba...GÿdF4y2Ba“PropagationSpeed”GÿdF4y2BacGÿdF4y2Ba'工作频率'GÿdF4y2Ba足球俱乐部,GÿdF4y2Ba“方向”GÿdF4y2Ba,(0,0));GÿdF4y2Ba接收阵列的半功率波束宽度GÿdF4y2Bahpbw = helperAutoDrivingRadarSigProc (GÿdF4y2Ba“阵列波束宽度”GÿdF4y2BarxArray c fc)GÿdF4y2Ba
HPBW = 16.3636GÿdF4y2Ba

使用根音乐估计器估计接收信号的到达方向。波束扫描也用于说明目的,以帮助空间可视化的分布的接收信号能量。GÿdF4y2Ba

%线性相控阵信号的波达方向估计GÿdF4y2Badoa = phased.RootMUSICEstimator (GÿdF4y2Ba...GÿdF4y2Ba'SensorArray'GÿdF4y2Ba,rxArray,GÿdF4y2Ba...GÿdF4y2Ba“PropagationSpeed”GÿdF4y2BacGÿdF4y2Ba'工作频率'GÿdF4y2Ba足球俱乐部,GÿdF4y2Ba...GÿdF4y2Ba“NumSignalsSource”GÿdF4y2Ba,GÿdF4y2Ba“属性”GÿdF4y2Ba,GÿdF4y2Ba“NumSignals”GÿdF4y2Ba1);GÿdF4y2Ba扫描光束在自我车辆前的距离-角度图像显示GÿdF4y2Baangscan = -80:80;beamscan = phased.PhaseShiftBeamformer(GÿdF4y2Ba“方向”GÿdF4y2Ba(angscan; 0 * angscan),GÿdF4y2Ba...GÿdF4y2Ba'SensorArray'GÿdF4y2Ba,rxArray,GÿdF4y2Ba'工作频率'GÿdF4y2Ba,FC);GÿdF4y2Ba

建模为单个传输信道的雷达发射器和每个接收信道的接收器前置放大器模型,用在实施例中定义的参数GÿdF4y2Ba汽车自适应巡航控制系统使用FMCW技术GÿdF4y2Ba.GÿdF4y2Ba

antAperture = 6.06的军医;GÿdF4y2Ba%天线孔径(平方公尺)GÿdF4y2BaantGain = aperture2gain(antAperture,拉姆达);GÿdF4y2Ba%天线增益(dB)GÿdF4y2BatxPkPower = db2pow(5)* 1E-3;GÿdF4y2Ba% Tx峰值功率(W)GÿdF4y2BatxGain = antGain;GÿdF4y2Ba% Tx天线增益(dB)GÿdF4y2BarxGain = antGain;GÿdF4y2Ba% Rx天线增益(dB)GÿdF4y2BarxNF=4.5;GÿdF4y2Ba%接收机噪声指数(dB)GÿdF4y2Ba%波形发送器GÿdF4y2Ba发射机= phased.Transmitter (GÿdF4y2Ba“PeakPower”GÿdF4y2BatxPkPower,GÿdF4y2Ba'获得'GÿdF4y2Ba,txGain);GÿdF4y2Ba%散热器为单个发射元件GÿdF4y2Ba散热器= phased.Radiator (GÿdF4y2Ba“传感器”GÿdF4y2BaantElmnt,GÿdF4y2Ba'工作频率'GÿdF4y2Ba,FC);GÿdF4y2Ba接收阵列的%收集器GÿdF4y2Ba集电极= phased.Collector(GÿdF4y2Ba“传感器”GÿdF4y2Ba,rxArray,GÿdF4y2Ba'工作频率'GÿdF4y2Ba,FC);GÿdF4y2Ba%接收机前置放大器GÿdF4y2Ba接收机= phased.ReceiverPreamp (GÿdF4y2Ba'获得'GÿdF4y2Ba,rxGain,GÿdF4y2Ba“NoiseFigure”GÿdF4y2BarxNF,GÿdF4y2Ba...GÿdF4y2Ba“SampleRate”GÿdF4y2Ba,FS);GÿdF4y2Ba

定义雷达信号处理链GÿdF4y2Ba

该雷达对每个线性相控阵天线单元上的波形进行多次扫描。这些收集的扫描形成一个数据立方体,定义在GÿdF4y2Ba雷达数据魔方GÿdF4y2Ba.这些扫描被相干沿着数据立方体的快和慢时间维度处理以估计车辆的距离和多普勒。GÿdF4y2Ba

使用GÿdF4y2Baphased.RangeDopplerResponseGÿdF4y2Ba对象来执行对雷达数据立方体的范围和多普勒处理。使用汉宁窗以抑制车辆所产生的大旁瓣,当他们接近雷达。GÿdF4y2Ba

NFT = waveform.SweepTime * waveform.SampleRate;GÿdF4y2Ba快速时间样本的数量GÿdF4y2Ba望远镜= Nsweep;GÿdF4y2Ba慢时间样本的数量GÿdF4y2BaNR = 2 ^ nextpow2(NFT);GÿdF4y2Ba范围样本的数量GÿdF4y2Ba的Nd = 2 ^ nextpow2(NST);GÿdF4y2Ba%多普勒样本数GÿdF4y2Barngdopresp = phased.RangeDopplerResponse(GÿdF4y2Ba“RangeMethod”GÿdF4y2Ba,GÿdF4y2Ba'FFT'GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2Ba“DopplerOutput”GÿdF4y2Ba,GÿdF4y2Ba'速度'GÿdF4y2Ba,GÿdF4y2Ba“SweepSlope”GÿdF4y2Ba,sweepSlope,GÿdF4y2Ba...GÿdF4y2Ba“RangeFFTLengthSource”GÿdF4y2Ba,GÿdF4y2Ba“属性”GÿdF4y2Ba,GÿdF4y2Ba'RangeFFTLength'GÿdF4y2BaNr,GÿdF4y2Ba...GÿdF4y2Ba'RangeWindow'GÿdF4y2Ba,GÿdF4y2Ba“汉娜”GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2Ba“DopplerFFTLengthSource”GÿdF4y2Ba,GÿdF4y2Ba“属性”GÿdF4y2Ba,GÿdF4y2Ba“DopplerFFTLength”GÿdF4y2BaNd,GÿdF4y2Ba...GÿdF4y2Ba'DopplerWindow'GÿdF4y2Ba,GÿdF4y2Ba“汉娜”GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2Ba“PropagationSpeed”GÿdF4y2BacGÿdF4y2Ba'工作频率'GÿdF4y2Ba足球俱乐部,GÿdF4y2Ba“SampleRate”GÿdF4y2Ba,FS);GÿdF4y2Ba

使用恒虚警率(CFAR)检测器识别处理范围内的检测和多普勒数据。CFAR探测器对接收到的雷达数据的背景噪声水平进行估计。当信号功率超过估计的噪声阈值时,就会发生检测。较低的阈值导致由于环境噪声而报告的错误检测数量较多。增加阈值可以产生更少的假检测,但也降低了场景中实际目标的检测概率。有关CFAR检测的更多信息,请参见示例GÿdF4y2Ba恒虚警率(CFAR)检测GÿdF4y2Ba.GÿdF4y2Ba

保卫细胞和训练区域的距离尺寸GÿdF4y2BanGuardRng = 4;nTrainRng = 4;nCUTRng = 1 + nGuardRng + nTrainRng;GÿdF4y2Ba%多普勒维的保卫细胞和训练区域GÿdF4y2BadopOver =圆形(ND / Nsweep);nGuardDop = 4 * dopOver;nTrainDop = 4 * dopOver;nCUTDop = 1 + nGuardDop + nTrainDop;CFAR = phased.CFARDetector2D(GÿdF4y2Ba'GuardBandSize'GÿdF4y2Ba,(nGuardRng nGuardDop),GÿdF4y2Ba...GÿdF4y2Ba'TrainingBandSize'GÿdF4y2Ba[nTrainRng nTrainDop]GÿdF4y2Ba...GÿdF4y2Ba'ThresholdFactor'GÿdF4y2Ba,GÿdF4y2Ba“自定义”GÿdF4y2Ba,GÿdF4y2Ba“CustomThresholdFactor”GÿdF4y2Ba,db2pow(13),GÿdF4y2Ba...GÿdF4y2Ba'噪声输出端口'GÿdF4y2Ba,真正,GÿdF4y2Ba“OutputFormat”GÿdF4y2Ba,GÿdF4y2Ba“检测指标”GÿdF4y2Ba);GÿdF4y2Ba%在所有范围和多普勒细胞的执行CFAR处理GÿdF4y2Ba频率= ((0:Nr-1) / nr - 0.5) * fs;rnggrid = beat2range(频率、sweepSlope);iRngCUT =找到(rnggrid > 0);iRngCUT = iRngCUT ((iRngCUT > = nCUTRng) & (iRngCUT < = Nr-nCUTRng + 1));iDopCUT = nCUTDop: (Nd-nCUTDop + 1);[iRng, iDop] = meshgrid (iRngCUT iDopCUT);idxCFAR = [iRng(:) iDop(:)]';GÿdF4y2Ba

该GÿdF4y2Baphased.RangeEstimatorGÿdF4y2Ba和GÿdF4y2Baphased.DopplerEstimatorGÿdF4y2Ba目标将距离-多普勒数据中探测到的位置转换为测量值及其相应的测量方差。这些估计器对距离-多普勒数据拟合二次曲线来估计每次检测的峰值位置。所得到的测量分辨率只是数据的范围和多普勒采样的一小部分。万博 尤文图斯GÿdF4y2Ba

是需要的根均方(RMS)范围分辨率的发射波形的计算的范围内测量的方差。瑞利范围分辨率为远程雷达物1米前所定义。瑞利分辨率是最小间隔在这两个独特的目标,就可以解决。该值定义为雷达的距离分辨率的细胞之间的距离。然而,一个分辨单元内的目标的差异是由波形的RMS分辨率决定。对于LFM啁啾波形,瑞利分辨率和RMS分辨率之间的关系是由[1]中给出。GÿdF4y2Ba

σGÿdF4y2Ba [RGÿdF4y2Ba 中号GÿdF4y2Ba 小号GÿdF4y2Ba =GÿdF4y2Ba 1GÿdF4y2Ba 2GÿdF4y2Ba ΔGÿdF4y2Ba [RGÿdF4y2Ba 一种GÿdF4y2Ba ÿGÿdF4y2Ba 升GÿdF4y2Ba ËGÿdF4y2Ba 一世GÿdF4y2Ba GGÿdF4y2Ba HGÿdF4y2Ba

哪里GÿdF4y2Ba σGÿdF4y2Ba [RGÿdF4y2Ba 中号GÿdF4y2Ba 小号GÿdF4y2Ba 在RMS距离分辨率和GÿdF4y2Ba ΔGÿdF4y2Ba [RGÿdF4y2Ba 一种GÿdF4y2Ba ÿGÿdF4y2Ba 升GÿdF4y2Ba ËGÿdF4y2Ba 一世GÿdF4y2Ba GGÿdF4y2Ba HGÿdF4y2Ba 是瑞利范围的分辨率。GÿdF4y2Ba

多普勒测量的方差取决于扫描处理的次数。GÿdF4y2Ba

现在,使用前面定义的参数创建距离和多普勒估计对象。GÿdF4y2Ba

rmsRng = sqrt(12) *管理员;rngestimator = phased.RangeEstimator (GÿdF4y2Ba“ClusterInputPort”GÿdF4y2Ba,真正,GÿdF4y2Ba...GÿdF4y2Ba“VarianceOutputPort”GÿdF4y2Ba,真正,GÿdF4y2Ba“NoisePowerSource”GÿdF4y2Ba,GÿdF4y2Ba“输入端口”GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2Ba'RMSResolution'GÿdF4y2Ba,rmsRng);dopestimator = phased.DopplerEstimator(GÿdF4y2Ba“ClusterInputPort”GÿdF4y2Ba,真正,GÿdF4y2Ba...GÿdF4y2Ba“VarianceOutputPort”GÿdF4y2Ba,真正,GÿdF4y2Ba“NoisePowerSource”GÿdF4y2Ba,GÿdF4y2Ba“输入端口”GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2Ba“NumPulses”GÿdF4y2Ba,Nsweep);GÿdF4y2Ba

为了进一步提高估计车辆位置的精度,将雷达的检测结果传递给跟踪器。将轨迹配置为使用扩展卡尔曼滤波器(EKF),该滤波器将球形雷达测量值转换为ego车辆的笛卡尔坐标系。同时,将跟踪器配置为对检测到的车辆使用恒定速度动力学。通过比较多个测量时间间隔内的车辆检测,跟踪器进一步提高了车辆位置的准确性,并提供车辆速度估计。GÿdF4y2Ba

追踪= multiObjectTracker (GÿdF4y2Ba'FilterInitializationFcn'GÿdF4y2Ba@initcvekf,GÿdF4y2Ba...GÿdF4y2Ba“AssignmentThreshold”GÿdF4y2Ba,50);GÿdF4y2Ba

模型自由空间传播信道GÿdF4y2Ba

使用自由空间信道向发送和接收的雷达信号的传播进行建模。GÿdF4y2Ba

频道= phased.FreeSpace (GÿdF4y2Ba“PropagationSpeed”GÿdF4y2BacGÿdF4y2Ba'工作频率'GÿdF4y2Ba足球俱乐部,GÿdF4y2Ba...GÿdF4y2Ba“SampleRate”GÿdF4y2Bafs,GÿdF4y2Ba'TwoWayPropagation'GÿdF4y2Ba,真正的);GÿdF4y2Ba

在自由空间模型中,雷达能量沿雷达与目标车辆之间的直线传播,如下图所示。GÿdF4y2Ba

模拟驾驶情形GÿdF4y2Ba

三路车在自身车辆附近行驶创建高速公路行驶的情况。这些车辆建模为点状目标,并有不同的速度和驾驶情形定义的位置。自主车辆用80公里/小时,其他三个汽车在110公里/小时移动时,100公里/小时和130公里/小时的速度分别移动。有关模拟驾驶情况详见例子GÿdF4y2Ba创建演员和车辆轨迹GÿdF4y2Ba(自动驾驶工具箱)。雷达传感器安装在ego车辆的前部。GÿdF4y2Ba

要创建驾驶场景,请使用GÿdF4y2BahelperAutoDrivingRadarSigProcGÿdF4y2Ba函数。若要检查此函数的内容,请使用GÿdF4y2Ba编辑( 'helperAutoDrivingRadarSigProc')GÿdF4y2Ba命令。GÿdF4y2Ba

%建立驾驶场景GÿdF4y2Ba[方案中,egoCar,radarParams,pointTgts] =GÿdF4y2Ba...GÿdF4y2BahelperAutoDrivingRadarSigProc(GÿdF4y2Ba设置场景的GÿdF4y2Bac fc);GÿdF4y2Ba

下面的循环使用了GÿdF4y2BadrivingScenarioGÿdF4y2Ba反对推进车辆的情况。在每个仿真时间步骤,雷达数据立方体通过收集雷达波形的192个扫描组装。组装的数据立方体,然后在范围和多普勒处理。的范围和多普勒处理然后数据被波束形成,并且在波束成形的数据执行CFAR检测。范围,径向速度,并到达测量的方向估计为CFAR检测。然后,这些检测被组装成GÿdF4y2BaobjectDetectionGÿdF4y2Ba对象,然后由GÿdF4y2BamultiObjectTrackerGÿdF4y2Ba对象。GÿdF4y2Ba

%初始化显示驱动场景的例子GÿdF4y2BahelperAutoDrivingRadarSigProc(GÿdF4y2Ba初始化显示的GÿdF4y2BaegoCar radarParams,GÿdF4y2Ba...GÿdF4y2BarxArray, fc, rangeMax);tgtProfiles = actorProfiles(场景);tgtProfiles = tgtProfiles(2:结束);tgtHeight = [tgtProfiles.Height];GÿdF4y2Ba运行仿真循环GÿdF4y2BaSWEEPTIME = waveform.SweepTime;GÿdF4y2Ba而GÿdF4y2Ba推进(场景)GÿdF4y2Ba%获取当前场景时间GÿdF4y2Ba时间= scenario.SimulationTime;GÿdF4y2Ba在自我车辆的参考系中得到当前目标的姿态GÿdF4y2BatgtPoses = targetPoses (egoCar);tgtPos =重塑([tgtPoses.Position] 3 []);GÿdF4y2Ba%的每个目标的高度的一半的位置点目标GÿdF4y2BatgtPos(3,:) = tgtPos(3,:)+ 0.5 * tgtHeight;tgtVel =重塑([tgtPoses.Velocity],3,[]);GÿdF4y2Ba在当前场景时间组装数据立方体GÿdF4y2BaXcube = 0(非功能性测试,Ne Nsweep);GÿdF4y2Ba对于GÿdF4y2Bam=1:n哭泣GÿdF4y2Ba计算雷达观察到的目标的角度GÿdF4y2BatgtAngs =南(2,元素个数(tgtPoses));GÿdF4y2Ba对于GÿdF4y2BaiTgt = 1:numel(tgtPoses)tgtAxes = ROTZ(tgtPoses(iTgt).Yaw)*GÿdF4y2Ba...GÿdF4y2Baroty (tgtPoses (iTgt) .Pitch) * rotx (tgtPoses (iTgt) .Roll);(~ tgtAngs (:, iTgt)] = rangeangle (radarParams.OriginPosition,GÿdF4y2Ba...GÿdF4y2BatgtPos (:, iTgt), tgtAxes);GÿdF4y2Ba结束GÿdF4y2Ba%发射FMCW波形GÿdF4y2BaSIG =波形();[〜,txang] = rangeangle(tgtPos,radarParams.OriginPosition,GÿdF4y2Ba...GÿdF4y2BaradarParams.Orientation);txsig =发射机(团体);txsig =散热器(txsig txang);txsig =通道(txsig radarParams.OriginPosition tgtPos,GÿdF4y2Ba...GÿdF4y2BaradarParams.OriginVelocity tgtVel);GÿdF4y2Ba%传播的信号,并反射离开目标GÿdF4y2Batgtsig = pointTgts (txsig tgtAngs);GÿdF4y2Ba收集收到的目标回波GÿdF4y2Barxsig =收集器(tgtsig txang);rxsig =接收机(rxsig);GÿdF4y2Ba对接收到的信号进行解码GÿdF4y2Barxsig = dechirp (rxsig、团体);GÿdF4y2Ba保存对数据多维数据集的扫描GÿdF4y2BaXcube(:,:,米)= rxsig;GÿdF4y2Ba%移动目标前进的时候一次扫描GÿdF4y2BatgtPos = tgtPos + tgtVel * sweepTime;GÿdF4y2Ba结束GÿdF4y2Ba%计算范围多普勒响应GÿdF4y2Ba[Xrngdop, rnggrid dopgrid] = rngdopresp (Xcube);GÿdF4y2Ba% Beamform接收数据GÿdF4y2BaXbf = permute(Xrngdop,[1 3 2]);Xbf =重塑(Xbf Nr * Nd, Ne);Xbf = beamformer (Xbf);Xbf =重塑(Nr, Xbf Nd);GÿdF4y2Ba%检测目标GÿdF4y2BaXPOW = ABS(XBF)^ 2。[detidx,noisepwr] = CFAR(XPOW,idxCFAR);GÿdF4y2Ba%集群检测GÿdF4y2BaclusterIDs = helperAutoDrivingRadarSigProc (GÿdF4y2Ba“集群检测项”GÿdF4y2Ba,detidx);GÿdF4y2Ba估计方位、距离和径向速度测量GÿdF4y2Ba[az, azvar snrdB] =GÿdF4y2Ba...GÿdF4y2BahelperAutoDrivingRadarSigProc(GÿdF4y2Ba“估计角”GÿdF4y2Ba,doaest,GÿdF4y2Ba...GÿdF4y2Ba缀(Xrngdop),XBF,detidx,noisepwr,clusterIDs);azvar = azvar + radarParams.RMSBias(1)^ 2;[rngest,rngvar] = rngestimator(XBF,rnggrid,detidx,noisepwr,clusterIDs);rngvar = rngvar + radarParams.RMSBias(2)^ 2;[rsest,rsvar] = dopestimator(XBF,dopgrid,detidx,noisepwr,clusterIDs);GÿdF4y2Ba%转换径向速度范围速率由跟踪器使用GÿdF4y2Barr = -rsest;rrvar = rsvar;rrvar = rrvar + radarParams.RMSBias (3) ^ 2;GÿdF4y2Ba装配目标检测,供跟踪器使用GÿdF4y2BanumDets =元素个数(rng);依据=细胞(numDets, 1);GÿdF4y2Ba对于GÿdF4y2BaiDet=1:numDets dets{iDet}=objectDetection(时间,GÿdF4y2Ba...GÿdF4y2Ba[azest(IDET)rngest(IDET)rrest(IDET)]”,GÿdF4y2Ba...GÿdF4y2Ba“MeasurementNoise”GÿdF4y2Ba,DIAG([azvar(IDET)rngvar(IDET)rrvar(IDET)]),GÿdF4y2Ba...GÿdF4y2Ba'MeasurementParameters'GÿdF4y2Ba{radarParams}GÿdF4y2Ba...GÿdF4y2Ba'ObjectAttributes'GÿdF4y2Ba{结构(GÿdF4y2Ba'SNR'GÿdF4y2Ba,snrdB(IDET))});GÿdF4y2Ba结束GÿdF4y2Ba%跟踪检测GÿdF4y2Ba曲目=跟踪器(dets的,时间);GÿdF4y2Ba%更新显示器GÿdF4y2BahelperAutoDrivingRadarSigProc(GÿdF4y2Ba“显示更新”GÿdF4y2Ba,egoCar,限定词,轨道,GÿdF4y2Ba...GÿdF4y2Badopgrid,rnggrid,XBF,beamscan,Xrngdop);GÿdF4y2Ba%发布快照GÿdF4y2BahelperAutoDrivingRadarSigProc(GÿdF4y2Ba“发布快照”GÿdF4y2Ba、时间> = 1.1);GÿdF4y2Ba%收集自由空间信道度量GÿdF4y2BametricsFS = helperAutoDrivingRadarSigProc (GÿdF4y2Ba“收集指标”GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2BaradarParams,tgtPos,tgtVel,dets的);GÿdF4y2Ba结束GÿdF4y2Ba

上图为仿真时间1.1秒时3辆目标车辆的雷达探测与跟踪情况。左上角的情节显示了来自ego车辆视角的驾驶场景的chase camera视图(以蓝色表示)。作为参考,ego车辆的行驶速度为80公里/小时,其他三辆车分别为110公里/小时(橙色车)、100公里/小时(黄色车)和130公里/小时(紫色车)。GÿdF4y2Ba

图的右侧显示了鸟瞰图,它提供了场景的“自顶向下”透视图。所有的车辆、检测和轨迹都显示在ego车辆的坐标参考系中。每个雷达测量的估计信噪比(SNR)打印在每个探测的旁边。跟踪器估计的车辆位置显示在图中,图中使用了黑色方块,旁边的文本指示每条轨迹的ID。跟踪器对每辆车辆的估计速度显示为指向车辆速度方向的黑线。线的长度与估计的速度相对应,较长的线表示相对于ego车辆具有更高速度的车辆。紫色车的轨道(ID2)有最长的线,而黄色车的轨道(ID1)有最短的线。跟踪的速度与前面列出的模型车辆速度一致。GÿdF4y2Ba

左下角的两个图显示了信号处理生成的雷达图像。上图显示了从目标车辆接收到的雷达回波在距离和径向速度上的分布情况。在这里,三辆车都被观察到了。测得的径向速度与跟踪器估计的速度相一致,如鸟瞰图所示。下图显示了接收到的目标回波在距离和角度上的空间分布。同样,所有三个目标都存在,并且它们的位置与鸟瞰图中显示的一致。GÿdF4y2Ba

由于其靠近雷达,橙色的汽车可以依然被大波束形成损失检测,由于其位置的外侧以及束的3个dB波束宽度。这些检测已经生成了橙色车轨道(ID3)。GÿdF4y2Ba

为多路径信道建模GÿdF4y2Ba

前面的驾驶场景模拟使用了自由空间传播。这是一个简单的模型,它只对雷达和每个目标之间的直线传播进行建模。实际上,雷达信号的传播要复杂得多,在到达每个目标并返回到雷达之前,要经过多个障碍物的反射。这种现象被称为GÿdF4y2Ba多路径传播GÿdF4y2Ba.下面的插图展示了多路径传播的一个例子,其中撞击目标的信号来自两个方向:视线和从路面上的单一反弹。GÿdF4y2Ba

多径传播的总体效果是,所接收的雷达回波可以建设性和破坏性干涉。此建设性和破坏性干涉来自各种信号传播路径之间的路径长度差引起的。作为雷达和车辆之间的距离改变,这些路径长度差也发生变化。当这些路径之间的差异导致在几乎180度的相位由雷达接收回波,所述回波相消合并,和雷达不作任何检测该范围​​。GÿdF4y2Ba

将自由空间信道模型替换为双线信道模型,以演示前面插图中所示的传播环境。重用驾驶场景和雷达模型中的其余参数,再次运行仿真。GÿdF4y2Ba

%重置驾驶场景GÿdF4y2Ba[方案中,egoCar,radarParams,pointTgts] =GÿdF4y2Ba...GÿdF4y2BahelperAutoDrivingRadarSigProc(GÿdF4y2Ba设置场景的GÿdF4y2Bac fc);GÿdF4y2Ba%创建两个射线的传播信道。一个信道用于发射GÿdF4y2Ba%路径和不同的信道用于接收路径。GÿdF4y2Batxchannel = phased.TwoRayChannel(GÿdF4y2Ba“PropagationSpeed”GÿdF4y2BacGÿdF4y2Ba...GÿdF4y2Ba'工作频率'GÿdF4y2Ba足球俱乐部,GÿdF4y2Ba“SampleRate”GÿdF4y2Ba,FS);rxchannel = phased.TwoRayChannel(GÿdF4y2Ba“PropagationSpeed”GÿdF4y2BacGÿdF4y2Ba...GÿdF4y2Ba'工作频率'GÿdF4y2Ba足球俱乐部,GÿdF4y2Ba“SampleRate”GÿdF4y2Ba,FS);GÿdF4y2Ba%再次运行模拟,现在使用两个射线信道模型GÿdF4y2Bametrics2Ray = helperAutoDrivingRadarSigProc(GÿdF4y2Ba运行仿真的GÿdF4y2Ba,GÿdF4y2Ba...GÿdF4y2Bac、fc rangeMax,波形,Nsweep,GÿdF4y2Ba...GÿdF4y2Ba%波形参数GÿdF4y2Ba发射机,散热器,收集器,接收器,GÿdF4y2Ba...GÿdF4y2Ba%的硬件模型GÿdF4y2Barngdopresp,波束形成器,恒虚警,idxCFAR,GÿdF4y2Ba...GÿdF4y2Ba% 信号处理GÿdF4y2Babeamscan rngestimator、dopestimator doa,追踪,GÿdF4y2Ba...GÿdF4y2Ba%的评估GÿdF4y2Batxchannel rxchannel);GÿdF4y2Ba传播信道模型GÿdF4y2Ba

上图显示了追情节,鸟瞰图,并在模拟时间1.1秒雷达图像,就像被示出了用于自由空间信道传播情形。这两个数字相比较,观察到两个射线信道,没有检测存在于在此仿真时间的紫车。这种检测损失,因为此车的路径长度差异相消在此范围内的干扰,导致检测的总损失。GÿdF4y2Ba

将CFAR处理生成的信噪比估计值与来自自由空间和双射线通道模拟的紫色汽车的距离估计值进行对比。GÿdF4y2Ba

helperAutoDrivingRadarSigProc(GÿdF4y2Ba“阴谋频道”GÿdF4y2Ba、metricsFS metrics2Ray);GÿdF4y2Ba

当汽车接近距离雷达72米的距离时,相对于自由空间信道,双线信道的估计信噪比损失很大。正是在这个范围内,多径干扰的破坏性结合,导致了信号检测的损失。然而,观察跟踪器能够在这些信号丢失的时间沿轨道滑行,并为紫色汽车提供一个预测的位置和速度。GÿdF4y2Ba

摘要GÿdF4y2Ba

这个例子演示了如何使用相控阵系统工具箱对汽车雷达的硬件和信号处理建模。您还学习了如何将此雷达模型与自动驾驶工具箱驾驶场景模拟集成。首先你生成了合成雷达探测。然后,通过使用跟踪器在ego车辆的坐标系中生成精确的位置和速度估计,进一步处理这些检测。最后,您学习了如何使用GÿdF4y2Baphased.TwoRayChannelGÿdF4y2Ba在相控阵系统工具箱提供的模型。GÿdF4y2Ba

所提出的流程,就能了解你的雷达结构设计决策的影响更高级别的系统要求。使用这个流程,就能选择一个雷达的设计,满足您独特的应用需求。GÿdF4y2Ba

参考GÿdF4y2Ba

[1] 理查兹,马克。GÿdF4y2Ba雷达信号处理基础GÿdF4y2Ba.纽约:麦格劳希尔,2005。GÿdF4y2Ba