基于MATLAB中雷达和视觉合成数据的目标级传感器融合(Matlab代码实现)

简介: 基于MATLAB中雷达和视觉合成数据的目标级传感器融合(Matlab代码实现)

👨‍🎓个人主页:研学社的博客

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


image.gif

💥1 概述

本文使用MATLAB的场景生成器工具箱,通过合成雷达和视觉观察创建一个简单的高速公路驾驶场景。扩展卡尔曼滤波器已被实现以将车辆的状态传播到未来。将投影状态值与当前测量值进行比较以执行跟踪。

📚2 运行结果

image.gif

image.gifimage.gif

image.gifimage.gif

部分代码:

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
       
   
   % Update the tracker if there are new detections
   if any(isValidTime)
       TrackerStep = TrackerStep + 1;

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]尹晓东,刘后铭.改进的多目标多传感器数据融合相关算法[J].地质科技管理,1994(03):225-231.

🌈4 Matlab代码实现

https://mbd.pub/o/bread/Y56UmJ5x

相关文章
|
2月前
|
监控 算法 数据安全/隐私保护
基于视觉工具箱和背景差法的行人检测,行走轨迹跟踪,人员行走习惯统计matlab仿真
该算法基于Matlab 2022a,利用视觉工具箱和背景差法实现行人检测与轨迹跟踪,通过构建背景模型(如GMM),对比当前帧与模型差异,识别运动物体并统计行走习惯,包括轨迹、速度及停留时间等特征。演示三维图中幅度越大代表更常走的路线。完整代码含中文注释及操作视频。
|
3月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
200 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
3月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
129 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
|
4月前
|
传感器 算法
基于无线传感器网络的MCKP-MMF算法matlab仿真
MCKP-MMF算法是一种启发式流量估计方法,用于寻找无线传感器网络的局部最优解。它从最小配置开始,逐步优化部分解,调整访问点的状态。算法处理访问点的动态影响半径,根据带宽需求调整,以避免拥塞。在MATLAB 2022a中进行了仿真,显示了访问点半径请求变化和代价函数随时间的演变。算法分两阶段:慢启动阶段识别瓶颈并重设半径,随后进入周期性调整阶段,追求最大最小公平性。
基于无线传感器网络的MCKP-MMF算法matlab仿真
|
3月前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
90 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
|
4月前
|
传感器 监控 算法
基于虚拟力优化的无线传感器网络覆盖率matlab仿真
**摘要:** 本文探讨了基于虚拟力优化提升无线传感器网络(WSNs)覆盖率的方法。通过在MATLAB2022a中仿真,显示了优化前后网络覆盖率对比及收敛曲线。虚拟力优化算法模拟物理力,以优化传感器节点布局,防止重叠并吸引至目标区域,同时考虑墙壁碰撞。覆盖计算利用平面扫描法评估圆形和正方形传感器的覆盖范围。算法通过迭代优化网络性能,以提高WSNs的监控能力。
|
5月前
|
存储 算法
基于布谷鸟搜索的多目标优化matlab仿真
该程序运用布谷鸟搜索算法进行多目标优化,设置三个目标函数,生成三维优化曲面和收敛曲线。在MATLAB2022a中运行,显示了迭代过程中的优化结果图。算法基于布谷鸟的寄生繁殖和列维飞行行为,通过非支配排序和拥挤度计算处理多目标问题。迭代中,新解不断被评估、更新并加入帕累托前沿,最终输出帕累托前沿作为最优解集。
|
5月前
|
存储 编解码
数字频率合成器dds的量化性能分析matlab仿真
### 课题概述 分析DDS(数字频率合成器)量化性能的MATLAB仿真,研究累加器、截位和DAC位宽对频谱的影响。 ### 核心程序 在MATLAB 2022a中,使用相位映射、量化码本和频偏分析函数,比较了10bit DAC位宽截取、无截取以及相位位宽截取的频谱特性。 ### 系统原理 DDS利用相位累加器、波形查找表、DAC和LPF生成精确频率信号。相位累加器的位数决定频率分辨率和杂散性能,量化和非线性影响信号质量。 ### 分析重点 频率分辨率与相位累加器位数相关,杂散和噪声性能受相位截断、幅度量化及DAC非线性影响。提高这些参数能提升DDS输出质量。
|
4月前
|
传感器 算法
基于无线传感器网络的LC-DANSE波束形成算法matlab仿真
摘要: 此MATLAB程序对比了LC-DANSE与LCMV波束形成算法在无线传感器网络中的性能,基于SNR和MSE指标。测试在MATLAB 2022a环境下进行。核心代码涉及权重更新迭代,用于调整传感器节点权重以增强目标信号。LC-DANSE是分布式自适应算法,关注多约束条件下的噪声抑制;LCMV则是经典集中式算法,侧重单个期望信号方向。两者在不同场景下各有优势。程序结果显示SNR和MSE随迭代变化趋势,并保存结果数据。
|
6月前
|
数据安全/隐私保护
耐震时程曲线,matlab代码,自定义反应谱与地震波,优化源代码,地震波耐震时程曲线
地震波格式转换、时程转换、峰值调整、规范反应谱、计算反应谱、计算持时、生成人工波、时频域转换、数据滤波、基线校正、Arias截波、傅里叶变换、耐震时程曲线、脉冲波合成与提取、三联反应谱、地震动参数、延性反应谱、地震波缩尺、功率谱密度

热门文章

最新文章

下一篇
无影云桌面