【基于扩展的卡尔曼滤波的毫米波雷达的目标检测与跟踪】多普勒维度进行CFA、进行1D CFAR ,平均单元恒虚警率、多普勒相位补偿 、水平角度估计、聚类DBSCAN 距离和水平角度两个维度的信息

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

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

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

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

目录

 ⛳️赠与读者

💥1 概述

一、引言

二、毫米波雷达基础

三、扩展卡尔曼滤波(EKF)

四、多普勒维度处理

五、聚类DBSCAN

六、距离和水平角度两个维度的信息研究

七、结论与展望

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

以下是关于“基于扩展的卡尔曼滤波的毫米波雷达的目标检测与跟踪:多普勒维度进行CFA、1D CFAR、平均单元恒虚警率、多普勒相位补偿、水平角度估计、聚类DBSCAN以及距离和水平角度两个维度的信息”的研究文档概要:

一、引言

本文旨在探讨基于扩展卡尔曼滤波(EKF)的毫米波雷达目标检测与跟踪技术,特别是在多普勒维度上的处理。通过CFA(恒虚警检测)、1D CFAR(一维恒虚警率处理)、多普勒相位补偿、水平角度估计以及聚类DBSCAN等方法,实现对目标的精确检测与跟踪。

二、毫米波雷达基础

毫米波雷达以其体积小、重量轻、检测精度高、恶劣环境下性能出色及易于安装维护等特点,在安防监控、交通管制、智能驾驶等多个领域得到广泛应用。其工作原理基于多普勒效应,通过发射和接收毫米波信号来检测目标的距离、速度和角度等信息。

三、扩展卡尔曼滤波(EKF)

EKF是卡尔曼滤波的一种扩展形式,适用于非线性系统。在毫米波雷达目标跟踪中,EKF通过对非线性系统进行一阶泰勒展开线性化,然后利用卡尔曼滤波器进行状态估计。其主要步骤包括预测和更新,预测步骤利用状态转移方程和过程噪声协方差矩阵预测状态和协方差,更新步骤则利用测量方程和测量噪声协方差矩阵,结合预测结果更新状态估计和协方差。

四、多普勒维度处理

  1. CFA与1D CFAR

    • CFA(恒虚警检测)是一种用于在噪声和干扰环境中检测目标信号的技术。在毫米波雷达中,CFA可以帮助区分目标和背景噪声。
    • 1D CFAR(一维恒虚警率处理)是在CFA基础上的一种改进,它通过对邻近单元的测量值进行平均或加权平均来估计背景噪声水平,从而实现对目标的更精确检测。
  2. 多普勒相位补偿

    • 多普勒相位补偿用于纠正由于目标运动引起的相位偏移,从而提高雷达测量的准确性。在毫米波雷达中,多普勒相位补偿是实现目标精确跟踪的关键步骤之一。
  3. 水平角度估计

    • 水平角度估计是毫米波雷达目标检测与跟踪中的重要环节。通过测量雷达波束与目标之间的角度关系,可以实现对目标水平位置的精确估计。

五、聚类DBSCAN

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,适用于处理具有噪声的空间数据。在毫米波雷达目标检测与跟踪中,DBSCAN可以用于对检测到的目标进行聚类分析,从而实现对多个目标的区分和跟踪。

六、距离和水平角度两个维度的信息研究

在毫米波雷达目标检测与跟踪中,距离和水平角度是两个重要的维度信息。通过结合这两个维度的信息,可以实现对目标的三维定位。同时,利用这些信息还可以进行目标轨迹的预测和跟踪滤波器的设计。

七、结论与展望

本文探讨了基于扩展卡尔曼滤波的毫米波雷达目标检测与跟踪技术,特别是在多普勒维度上的处理。通过CFA、1D CFAR、多普勒相位补偿、水平角度估计以及聚类DBSCAN等方法,实现了对目标的精确检测与跟踪。未来工作可以进一步探索如何更有效地处理目标机动和遮挡等复杂情况,以及如何提高算法的鲁棒性和实时性。

📚2 运行结果

部分代码:

%% 多普勒相位补偿 
for k =1:3
    for  m=1:96
         Sig_fft2D1(m,:,((k-1)*4+1):k*4) =   Sig_fft2D(m,:,((k-1)*4+1):k*4)*exp(-j*2*3.14*k*m/(3*96));
    end
end
Sig_fft2D  =Sig_fft2D1;
%% 水平角度估计
objRange = single(C*(objRagIdx-1)*sampleRate/2/freqSlope/ADC_samples);

if(~isempty(objDprIdx))
    angle =processingChain_angleFFT(objDprIdx,objRagIdx,Sig_fft2D(:,:,1:8));
    angle = (angle+90)'./57.8;
%     RVA = [objRange,angle];
%     figure(1);
%     plot(angle,objRange,'o')
%     rlim = 8;
%     axis([-90/rlim 90/rlim 0 1]*rlim);
%     
%     title(['水平角度计算结果,当前帧:',num2str(FrameIndx)]);
%     ylabel('距离(m)');
%     xlabel('角度(°)');
%     pause(0.1);
else
end

%% 垂直角度计算(高度) 高度值不是很确定
H = 1.4;%雷达安装高度

Sig_fft2DE =Sig_fft2D(:,:,8:9);
if(~isempty(objDprIdx))
    Eangle =processingChain_angleFFTE(objDprIdx,objRagIdx,Sig_fft2DE,lambda,d);  
    Eangle =( Eangle+90)'./57.8;
    h = objRange.*sin(Eangle);
    snr = outSNRDimCfarThresholdMap'; %数据整合
    X1 = objRange.*cos(angle);
    Y = objRange.*sin(angle);
    RVA = [ Y,X1,h ,objSpeed,snr];

%     figure(1);
%     plot( h,objRange,'ro')
%     axis([-10 10 0 8]);
%     title(['垂直角度计算结果,当前帧:',num2str(FrameIndx)]);
%     ylabel('距离(m)');
%     xlabel('目标高度(m)')
%     pause(); 
% if(~isempty(objDprIdx))
%      figure(1);
%      plot3(angle,objRange,h,'o');
%      view(2);
%      grid on;
%      rlim = 8;
%      axis([-90/rlim 90/rlim 0 1 -0.5 0.5]*rlim);
%      title(['3D点云,帧数:',num2str(FrameIndx)]);
%      ylabel('距离(m)');
%      xlabel('角度(°)');
%      zlabel('高度(m)');
%      pause(); 
%     %     
% else
% end

%% 聚类DBSCAN 距离和水平角度两个维度的信息
%聚类参数
eps = 1;%邻域半径
minPointsInCluster = 6;
xFactor = 1;   %变大控制距离变大,变小分类距离变小 椭圆
yFactor = 1;   %变大控制角度变大,变小分类距离变小 椭圆 
figure(2);
sumClu =DBSCANclustering_eps_test_3D(eps,RVA,xFactor,yFactor,minPointsInCluster,FrameIndx);  %2D聚类
 
%%  跟踪算法
MmwDemo_Tracking_s(sumClu,F,Q,measurementNoiseVariance,activeThreshold,forgetThreshold,...%扩展的卡尔曼滤波
                             iirForgetFactor,...
                             Track_Thres);
else
    
end                         
%% 跟踪图形绘制
if  ~isempty(activeTrackerList)
    for i=1:length(activeTrackerList)
        tid=activeTrackerList(i); 
        if Tracker(tid).state==1
            MmwDemo_Tracking_s_count  =MmwDemo_Tracking_s_count+1;
            xx(i)=Tracker(tid).S_hat(1,:);
            yy(i)=Tracker(tid).S_hat(2,:);         
            if(MmwDemo_Tracking_s_count==1)%仅有一个目标时计数为1
                 sumTid(i) =1;
            else
                 sumTid(i)=tid;
            end
            hold on;
            plot(yy,xx,'bd','MarkerSize',25)
            text(yy(i)+0.3,xx(i),['ID :',num2str(sumTid(i)),]);  % ID号
            %% 
            text(yy(i),xx(i)+0.8,['坐标:',num2str(yy(i)),',',num2str(xx(i)),'m']); % 水平距离
%            

            text(yy(i)+0.3,xx(i)+0.3,['速度:',num2str(Tracker(tid).doppler(1)),'  m/s']); %速度
        end 
    end
end
title([' 跟踪结果,帧数: ',num2str(FrameIndx)])
%% 目标在可视距离内消失,记忆其位置信息
%设定雷达探测的物理范围 长度 8m, 宽度 6米

%% 
hold off
xx =[];  %没有存在的目标 清除
yy =[];
MmwDemo_Tracking_s_count =0;
end

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]陈莹,韩崇昭.基于扩展卡尔曼滤波的车道融合跟踪[J].公路交通科技[2024-11-12].

[2]贺越.基于路侧毫米波雷达的自组织车联网检测与跟踪技术研究[D].北京邮电大学,2022.

[3]黄胜昔,刘华.基于加性无迹卡尔曼滤波的雷达目标跟踪方法[J].计算机工程与应用, 2010, 46(8):3.

[4]常浩,殳国华,胡博文.基于毫米波雷达的室内目标检测与跟踪算法[J].电气自动化, 2023, 45(6):69-71.

🌈Matlab代码实现

资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取

                                                           在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值