【信息融合】雷达和视觉合成数据的目标级传感器融合【含Matlab源码 3852期】

这篇文章介绍了在Matlab中如何使用MDPDA算法实现雷达和视觉传感器的信息融合,以提升目标检测和跟踪的精度。通过综合平均法、贝叶斯估计、D-S方法等手段融合数据,展示了目标级传感器融合的原理和部分源代码实例。
摘要由CSDN通过智能技术生成

在这里插入图片描述
✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、 MDPDA算法水下潜艇与航行器信息融合

1 数据融合(信息融合)
将经过集成处理的多传感器信息进行合成,形成一种对外部环境或被测对象某一特征的表达方式称为信息融合。常见由以下几种信息融合方法。
(1)综合平均法,即把各传感器数据求平均,乘上权重系数;
(2)贝叶斯估计法,通过先验信息和样本信息得到后验分布,再对目标进行预测;
(3)D-S法,采用概率区间和不确定区间判定多证据体下假设的似然函数进行推理;
(4)神经网络法,以测量目标的各种参数集为神经网络的输入,输出推荐的目标特征或权重;
(5)kalman法、专家系统法等。。。

2 雷达和视觉合成数据的目标级传感器融合
雷达和视觉合成数据的目标级传感器融合是一种将雷达和视觉传感器的数据进行融合的方法,以提高目标检测和跟踪的准确性和鲁棒性。通过将雷达和视觉传感器的数据进行融合,可以获得更全面和准确的目标信息,从而提高自动驾驶、智能交通系统等领域的性能。

在MATLAB中,可以使用雷达和视觉合成数据的目标级传感器融合的代码实现。这些代码可以通过定义传感器配置和使用场景生成器工具箱来合成雷达和视觉观察。同时,还可以使用扩展卡尔曼滤波器来将车辆的状态传播到未来,并通过比较投影状态值与当前测量值来执行目标跟踪。

雷达和视觉合成数据的目标级传感器融合原理是将雷达和视觉传感器的数据进行融合,以提高目标检测和跟踪的准确性和鲁棒性。该方法结合了雷达和视觉传感器的优势,能够在不同环境和条件下更好地感知和理解周围的目标。

具体原理如下:
(1)数据获取:雷达传感器通过发射和接收电磁波来探测周围目标的位置和速度,而视觉传感器则通过摄像头获取图像信息。
(2)数据预处理:对雷达和视觉传感器的数据进行预处理,包括去噪、滤波、校准等操作,以提高数据质量和一致性。
(3)特征提取:从雷达和视觉数据中提取目标的特征,例如目标的位置、速度、大小、形状等。
(4)数据关联:将雷达和视觉数据进行关联,即将雷达和视觉传感器所观测到的同一目标进行匹配,以建立目标的对应关系。
(5)目标跟踪:基于关联的结果,使用跟踪算法对目标进行连续跟踪,以估计目标的轨迹和状态。
(6)目标融合:将雷达和视觉传感器的跟踪结果进行融合,得到更准确和完整的目标信息。
(7)目标识别:基于融合后的目标信息,使用目标识别算法对目标进行分类和识别,以进一步理解目标的属性和行为。
(8)应用:将融合后的目标信息应用于各种应用场景,例如自动驾驶、智能交通、安防监控等。

⛄二、部分源代码

clear all
close all
clc

%% Parameters

% Assignment gate value
AssignmentThreshold = 30; % The higher the Gate value, the higher the likelihood that every track…
% will be assigned a detection.

% M/N initiation parameters
% The track is “confirmed” if after N consecutive updates at
% least M measurements are assigned to the track after the track initiation.
N = 5;
M = 4;

% Elimination threshold: The track will be deleted after EliminationTH # of updates without
% any measurement update
EliminationTH = 10; % updates

% Measurement Noise
R = [22.1 0 0 0
0 2209 0 0
0 0 22.1 0
0 0 0 2209];

% Process noise
Q= 7e-1.*eye(4);

% Performance anlysis parameters:
XScene = 80;
YScene = 40;
% PerfRadius is defined after scenario generation

%% Generate the Scenario

% Define an empty scenario.
scenario = drivingScenario;
scenario.SampleTime = 0.01; % seconds
SensorsSampleRate = 0.1; % seconds

EgoSpeed = 25; % m/s

%% Simple Scenario (Choice #1)

% Load scenario road and extract waypoints for each lane
Scenario = load(‘SimpleScenario.mat’);
WPs{1} = Scenario.data.ActorSpecifications(2).Waypoints;
WPs{2} = Scenario.data.ActorSpecifications(1).Waypoints;
WPs{3} = Scenario.data.ActorSpecifications(3).Waypoints;

road(scenario, WPs{2}, ‘lanes’,lanespec(3));

% Ego vehicle (lane 2)
egoCar = vehicle(scenario, ‘ClassID’, 1);
egoWPs = circshift(WPs{2},-8);
path(egoCar, egoWPs, EgoSpeed);

% Car1 (passing car in lane 3)
Car1 = vehicle(scenario, ‘ClassID’, 1);
Car1WPs = circshift(WPs{1},0);
path(Car1, Car1WPs, EgoSpeed + 5);

% Car2 (car in lane 1)
Car2 = vehicle(scenario, ‘ClassID’, 1);
Car2WPs = circshift(WPs{3},-15);
path(Car2, Car2WPs, EgoSpeed -5);

% Ego follower (lane 2)
Car3 = vehicle(scenario, ‘ClassID’, 1);
Car3WPs = circshift(WPs{2},+5);
path(Car3, Car3WPs, EgoSpeed);

% Car4 (stopped car in lane 1)
Car4 = vehicle(scenario, ‘ClassID’, 1);
Car4WPs = circshift(WPs{3},-13);
path(Car4, Car4WPs, 1);

ActorRadius = norm([Car1.Length,Car1.Width]);
%---------------------------------------------------------------------------------------------
%% Waypoint generation (Choice #2)

% % Load scenario road and extract waypoints for each lane
% WPs = GetLanesWPs(‘Scenario3.mat’);
% % Define road wtr the middle lane waypoints
% road(scenario, WPs{2}, ‘lanes’,lanespec(3));
% %%%%%%%%%%%% BE CAREFUL OF LANESPACE(3) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% % Ego vehicle (lane 2)
% egoCar = vehicle(scenario, ‘ClassID’, 1);
% path(egoCar, WPs{2}, EgoSpeed); % On right lane
%
% % Car1 (passing car in lane 3)
% Car1 = vehicle(scenario, ‘ClassID’, 1);
% WPs{1} = circshift(WPs{1},20);
% path(Car1, WPs{1}, EgoSpeed + 2);
%
% % Car2 (slower car in lane 1)
% Car2 = vehicle(scenario, ‘ClassID’, 1);
% WPs{3} = circshift(WPs{3},-50);
% path(Car2, WPs{3}, EgoSpeed -5);

%---------------------------------------------------------------------------------------------

%% Create a Tracker
% Create a |<matlab:doc(‘multiObjectTracker’) multiObjectTracker>| to track
% the vehicles that are close to the ego vehicle. The tracker uses the
% |initSimDemoFilter| supporting function to initialize a constant velocity
% linear Kalman filter that works with position and velocity.
%
% Tracking is done in 2-D. Although the sensors return measurements in 3-D,
% the motion itself is confined to the horizontal plane, so there is no
% need to track the height.
tracker = multiObjectTracker(‘FilterInitializationFcn’, @initSimDemoFilter, …
‘AssignmentThreshold’, 30, ‘ConfirmationParameters’, [4 5]);
positionSelector = [1 0 0 0; 0 0 1 0]; % Position selector
velocitySelector = [0 1 0 0; 0 0 0 1]; % Velocity selector

%% Define Sensors and Bird’s Eye Plot
sensors = SensorsConfig(egoCar,SensorsSampleRate);

BEP = createDemoDisplay(egoCar, sensors);
BEP1 = createDemoDisplay(egoCar, sensors);

%% Fusion Loop for the scenario

Tracks = [];
count = 0;
toSnap = true;
TrackerStep = 0;
time0 = 0;
currentStep = 0;
Performance.Actors.Ground = [];
Performance.Actors.EATracks = [];
Performance.Actors.MATracks = [];
Performance.MeanDistance.EA = [];
Performance.MeanDistance.MA = [];
Performance.GhostActors.EA = [];
Performance.GhostActors.MA = [];
while advance(scenario) %&& ishghandle(BEP.Parent)
currentStep = currentStep + 1;
% Get the scenario time
time = scenario.SimulationTime;

% Get the position of the other vehicle in ego vehicle coordinates
ta = targetPoses(egoCar);

% Simulate the sensors
detections = {};
isValidTime = false(1,length(sensors));
for i = 1:length(sensors)
    [sensorDets,numValidDets,isValidTime(i)] = sensors{i}(ta, time);
    if numValidDets
        for j = 1:numValidDets
            % Vision detections do not report SNR. The tracker requires
            % that they have the same object attributes as the radar
            % detections. This adds the SNR object attribute to vision
            % detections and sets it to a NaN.
            if ~isfield(sensorDets{j}.ObjectAttributes{1}, 'SNR')
                sensorDets{j}.ObjectAttributes{1}.SNR = NaN;
            end
        end
        detections = [detections; sensorDets]; %#ok<AGROW>
    end
end

⛄三、运行结果

在这里插入图片描述
在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]陈寅,林良明,颜国正.D-S证据推理在信息融合应用中的存在问题及改进[J].系统工程与电子技术. 2000,(11)

[2]邓肯·麦克尼尔.多传感器数据融合:基于卡尔曼滤波和神经网络的方法[M].机械工业出版社, 2005

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

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 31
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Matlab领域

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

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

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

打赏作者

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

抵扣说明:

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

余额充值