自动驾驶环境感知之毫米波雷达数据形式

文章介绍了FMCW雷达的数据形式,包括稠密数据块和稀疏点云,以及如何通过FFT转换和CFAR动态阈值方法进行数据过滤。CFAR通过设置适应性阈值有效过滤噪声,平衡误检率和召回率。这种方法常用于雷达信号处理和目标检测中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. FMCW雷达数据形式

(1)FMCW雷达数据处理流程

  • 输入信号:是指混频器输出的中频信号(IF信号),数据维度是K x M x N。其中,K为天线个数,M为每一帧内的Chirp个数,N为一个Chirp内采样个数
  • 对Chirp采样维度N进行FFT操作,得到距离Range
  • 对Chirp个数维度M进行FFT操作,得到速度Doppler
  • 对天线维度K进行FFT操作,得到角度Angle
  • 输出形式:RDA数据块,它是一个稠密的数据块,但是大部分点都是来自于背景噪声,因此需要对数据块进行过滤
  • 稀疏点云:通过CFAR动态阈值的方式对RDA稠密数据块进行过滤,得到离散的三维点,从而得到稀疏点云
  • 为了提高计算效率,可直接在距离和速度维度进行CFAR动态阈值过滤操作,不用生成RDA稠密数据块
    在这里插入图片描述

(2)CFAR(Constant False-Alarm Rate)

​ 通过设定动态阈值来更好地过滤噪声

  • 固定阈值

​ 如图所示,蓝色曲线表示信号,绿点表示真正的目标,红点表示噪声。通过设定阈值,高于阈值的认为是真正的目标点,低于阈值的认为是噪声点,需要过滤掉。

​ 图中通过设定阈值1,可将大部分噪声红点过滤掉,具有较低的误检率。但同时也有很多真正点被过滤掉,因此召回率也很低。

​ 图中通过设定阈值2,可将所有真正点检测出,具有较高的召回率。但同时也有很多噪声红点没有被过滤,因此误检率也很高。

在这里插入图片描述

  • 动态阈值

​ 如下图所示,在信号的不同位置设定不同阈值,使得将大部分真正点检测出来,并且将大部分红色噪点过滤掉,在提高召回率的同时,将误检率保持在一个较低的水平。
在这里插入图片描述

  • CFAR的具体流程(一维数据处理流程)

    • 对输入数据的每个单元,计算其邻域单元的均值(不包括保护单元,因为场景中的目标是有一定大小的,它可能覆盖当前处理单元周围的多个单元,因此保护单元也有可能是目标上的点。若将其当成背景来估计噪声,会带来一定的误差。所以,在计算时需要将保护单元去除掉)

    • 该均值乘以比例因子后与当前单元值进行对比

    • 如果当前单元值大,则认为是正确的目标检测,反之则认为是噪声

    • 比例因子控制着误检率的级别。比例因子越小,当前处理单元越容易被认为是正确目标点,有可能带来较大的误检。比例因子越大,判断较严格,此时误检率较低,但召回率也相对较低
      在这里插入图片描述

(3)FMCW雷达的两种数据形式——总结

  • 稠密的数据块(常用于深度学习中的感知算法)
    • 三维Tensor:距离 x 角度 x 速度
    • 常见大小:256 x 150 x 512
  • 稀疏点云(常用于传统感知算法)
    • 点特征:距离、角度、速度、反射强度
    • 常见大小:每帧64或128个点
### 使用 MATLAB 构建自动驾驶汽车毫米波雷达测试场景 #### 创建驾驶场景 为了创建一个适合毫米波雷达测试的驾驶场景,首先需要定义道路环境和其他交通参与者的位置和运动模式。这可以通过 `drivingScenario` 函数来完成。 ```matlab scenario = drivingScenario; road(scenario, [0 0; 80 0]); % 定义一条直线型的道路 egoCar = vehicle(scenario,'ClassID',1); % 添加自车到场景中 ``` #### 配置毫米波雷达传感器模型 接着配置毫米波雷达传感器参数,包括安装位置、检测范围以及角度分辨率等特性。利用 Automotive Sensor Blockset 中提供的预设模板简化设置过程。 ```matlab % 设置前向毫米波雷达属性 frontRadar = radarDataGenerator('SensorIndex',1,... 'MountingLocation',[2.5,0,-1],... 'MaxRange',70,... 'FieldOfView',40,... 'AzimuthResolution',1); ``` #### 进行动态目标设定 为了让模拟更加贴近实际情况,在场景里加入移动的目标物作为被探测对象,比如其他车辆或是行人。 ```matlab targetVehicle = actor(scenario,'ClassID',1,'Length',4.7,'Width',1.8,'Height',1.4); waypoints = [30 -2; 60 2]; % 行驶路径坐标点数组 speed = 10/3.6; % 车速转换成m/s单位 trajectory(targetVehicle, waypoints, speed); actorPoses = targetPoses(egoCar); % 获取当前时刻所有Actor的姿态信息 detections = frontRadar(actorPoses,time); % 计算此时此刻来自前方雷达的测量值集合 ``` #### 数据处理与可视化展示 最后一步是对获取的数据做进一步分析并呈现出来以便观察效果。可以调用内置函数绘制出点云图或者其他形式的结果图表辅助理解感知算法性能表现。 ```matlab if ~isempty(detections) pointCloudPlotter(gcf,detections.Measurement,[ones(size(detections.Measurement,1),1)*time]); end ``` 上述代码片段展示了如何借助 MATLAB 的 Driving Scenario Designer 工具包搭建基本框架用于评估车载毫米波雷达系统的有效性[^1]。此外,还可以参考 Radar Toolbox 提供的相关案例学习更多高级特性和最佳实践指南[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值