【信号检测】毫米波雷达和视觉传感器融合检测仿真【含Matlab源码 3683期】

在这里插入图片描述

⛄一、毫米波雷达和视觉传感器融合检测仿真

1 毫米波雷达与视觉的融合
一般来说,毫米波雷达和视觉有三个融合级别,包括数据级、决策级和特征级。数据级融合是对毫米波雷达和摄像机检测到的数据的融合,它的数据损失最小,可靠性最高。决策级融合是对毫米波雷达和摄像机的探测结果的融合。特征级融合需要提取雷达特征信息,然后与图像特征融合。表1提供了三种融合水平的比较。
在这里插入图片描述
2 数据
数据方面, 3D场景下的多传感器目标检测,涉及到空间信息的处理还有不同传感器数据的结合,所以数据的维度更多,结构也相对复杂。方案中以nuScenes数据集为例,对模型进行可行性验证和预训练。整个方案的流程中,针对不同的场景和计算需要,共建立了5个不同的坐标系,不同坐标系间的映射关系由现场标定进行获取,nuSences数据集中提供了完备的标定信息供计算使用。

3 数据坐标系
方案中共包含5个坐标系,分别是全局坐标系(global)、车身坐标系(ego)、雷达坐标系(radar)、相机坐标系(cam)和像素坐标系(image)。其中,像素坐标系为常见的左上角点二维坐标系,像素坐标系和相机坐标系的转换关系由相机内参确定。其他四个坐标系均为三维坐标系,坐标系间的转换关系由现场标定确认。一共需要三个变换矩阵,分别是:
(1)雷达外参:雷达坐标系到车身坐标系的变换矩阵
(2)相机外参:相机坐标系到车身坐标系的变换矩阵
(3)车身姿态:车身姿态包括当前时刻车辆在全局坐标系中的位置和偏转信息两部分。

4 模型输入
模型输入共包括三个部分:
相机数据和雷达数据:

5 图像特征提取
图像特征提取分为全卷积骨干网和主要回归头两部分。
(1)全卷积骨干网
CenterFusion 网络架构在对图像进行初步检测时,采用 CenterNet 网络中修改版本的骨干网络 DLA(深层聚合)作为全卷积骨干网,来提取图像特征,因为 DLA 网络大大减少了培训时间,同时提供了合理的性能。
(2)主要回归头
主动回归头包括六个分支(如图2),分别输出中心点热力图、中心点偏移量、2D宽高、3D长度、距离和旋转角度,其中的中心点热力图、中心点偏移量、2D宽高、3D维度就是最终输出,不会再次预测。

6 雷达数据与目标图像的关联
要实现雷达数据与相机数据的融合,首先要将雷达的检测点与其对应的物体在图像平面进行匹配。一种比较简单直接的方法是将图像平面上落在一个2D bunding box里的雷达检测点与这个目标进行关联,但这种方法的可靠性很低,原因包括以下三点:
(1)雷达检测点和目标不是一一对应的,场景中有的目标会产生多个雷达检测点,也有的雷达检测点匹配不到任何目标。

(2)毫米波雷达的检测点的z轴信息准确性很差或者根本没有,在投影过程中可能无法精准投影到图像平面上的对应的bunding box内。

(3)同样是因为z轴信息的不稳定,如果目标被遮挡,则前后两个目标的监测点很容易在图像平面上落在同一区域内,造成错误匹配。

因此需要引入截锥关联和支柱扩张模块,来更好的进行检测点和目标框的匹配。

⛄二、部分源代码

% Define an empty scenario
scenario = drivingScenario;
scenario.SampleTime = 0.01;
roadCenters = [0 0; 50 0; 100 0; 250 20; 500 40];
roadWidth = 7.2; % Two lanes, each 3.6 meters
road(scenario, roadCenters, roadWidth);
% Create the ego vehicle that travels at 25 m/s along the road
egoCar = vehicle(scenario, ‘ClassID’, 1);
path(egoCar, roadCenters(2:end,:) - [0 1.8], 25); % On right lane

% Add a car in front of the ego vehicle
leadCar = vehicle(scenario, ‘ClassID’, 1);
path(leadCar, [70 0; roadCenters(3:end,:)] - [0 1.8], 25); % On right lane

% Add a car that travels at 35 m/s along the road and passes the ego vehicle
passingCar = vehicle(scenario, ‘ClassID’, 1);
waypoints = [0 -1.8; 50 1.8; 100 1.8; 250 21.8; 400 32.2; 500 38.2];
path(passingCar, waypoints, 35);

% Add a car behind the ego vehicle
chaseCar = vehicle(scenario, ‘ClassID’, 1);
path(chaseCar, [25 0; roadCenters(2:end,:)] - [0 1.8], 25); % On right lane
sensors = cell(8,1);
% Front-facing long-range radar sensor at the center of the front bumper of the car.
sensors{1} = radarDetectionGenerator(‘SensorIndex’, 1, ‘Height’, 0.2, ‘MaxRange’, 174, …
‘SensorLocation’, [egoCar.Wheelbase + egoCar.FrontOverhang, 0], ‘FieldOfView’, [20, 5]);

% Rear-facing long-range radar sensor at the center of the rear bumper of the car.
sensors{2} = radarDetectionGenerator(‘SensorIndex’, 2, ‘Height’, 0.2, ‘Yaw’, 180, …
‘SensorLocation’, [-egoCar.RearOverhang, 0], ‘MaxRange’, 174, ‘FieldOfView’, [20, 5]);

% Rear-left-facing short-range radar sensor at the left rear wheel well of the car.
sensors{3} = radarDetectionGenerator(‘SensorIndex’, 3, ‘Height’, 0.2, ‘Yaw’, 120, …
‘SensorLocation’, [0, egoCar.Width/2], ‘MaxRange’, 30, ‘ReferenceRange’, 50, …
‘FieldOfView’, [90, 5], ‘AzimuthResolution’, 10, ‘RangeResolution’, 1.25);

% Rear-right-facing short-range radar sensor at the right rear wheel well of the car.
sensors{4} = radarDetectionGenerator(‘SensorIndex’, 4, ‘Height’, 0.2, ‘Yaw’, -120, …
‘SensorLocation’, [0, -egoCar.Width/2], ‘MaxRange’, 30, ‘ReferenceRange’, 50, …
‘FieldOfView’, [90, 5], ‘AzimuthResolution’, 10, ‘RangeResolution’, 1.25);

% Front-left-facing short-range radar sensor at the left front wheel well of the car.
sensors{5} = radarDetectionGenerator(‘SensorIndex’, 5, ‘Height’, 0.2, ‘Yaw’, 60, …
‘SensorLocation’, [egoCar.Wheelbase, egoCar.Width/2], ‘MaxRange’, 30, …
‘ReferenceRange’, 50, ‘FieldOfView’, [90, 5], ‘AzimuthResolution’, 10, …
‘RangeResolution’, 1.25);

% Front-right-facing short-range radar sensor at the right front wheel well of the car.
sensors{6} = radarDetectionGenerator(‘SensorIndex’, 6, ‘Height’, 0.2, ‘Yaw’, -60, …
‘SensorLocation’, [egoCar.Wheelbase, -egoCar.Width/2], ‘MaxRange’, 30, …
‘ReferenceRange’, 50, ‘FieldOfView’, [90, 5], ‘AzimuthResolution’, 10, …
‘RangeResolution’, 1.25);

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]司兵,吴铭.双稳随机共振在弱信号检测中的应用[J].四川兵工学报. 2012,33(04)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 22
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
基于MATLAB毫米波雷达接收发射信号仿真可以通过以下步骤实现。 首先,需要建立一个毫米波雷达系统的仿真模型。该模型应包括雷达天线、天线阵列、发射机、接收机、目标散射模型等主要组成部分。通过MATLAB中的仿真工具,可以根据雷达系统的具体参数和设计要求,建立相应的数学模型。 然后,需要进行目标散射模型的建模。目标散射模型主要描述了目标物体对雷达发射信号的能量回波情况。可以使用合适的数学模型来描述目标物体的反射、散射、绕射等效应,并根据物体的几何形状、材料特性、运动状态等参数进行建模。 接下来,需要生成雷达发射信号。可以利用MATLAB中的信号处理工具生成不同频率、不同调制方式的毫米波信号。可以根据雷达系统的设计要求和目标检测需求,选择合适的参数和信号处理算法进行仿真。 然后,将生成的雷达发射信号与目标散射模型进行卷积运算,得到接收信号。可以使用MATLAB中的卷积运算函数进行仿真计算,得到模拟的接收信号。 最后,可以对接收信号进行后续的信号处理、目标检测和跟踪算法。可以使用MATLAB中的信号处理、图像处理、模式识别等工具进行仿真计算,得到模拟的目标检测和跟踪结果。 综上所述,通过MATLAB可以实现基于毫米波雷达的接收发射信号仿真。通过建立雷达系统模型、目标散射模型、生成发射信号、卷积得到接收信号和进一步信号处理,可以得到毫米波雷达系统的仿真结果,用于性能评估和算法验证。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Matlab领域

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值