2022年中国研究生数学建模竞赛A题——移动场景超分辨定位问题

一、题目原文

1、背景

在日常家庭生活中,人们可能需要花费大量时间去寻找随意摆放在家中某些角落里的小物品。但如果给某些重要物品贴上电路标签,再利用诸如扫地机器人的全屋覆盖能力,可以精准定位到这些物体,将极大地提升人们生活的便利性。而在智能辅助驾驶或者自动驾驶领域,更需要精准探测邻近车辆、行人的位置及速度,来控制车速、转向和刹车等以免发生意外。这些都属于移动场景定位问题。显然,定位的精度越高,应用价值越大,特别是超分辨率定位,具有广阔的应用前景。

移动场景超分辨率定位是指:在上述移动场景下,设计鲁棒的低复杂度在线算法,实时超分辨率定位到物体。(不妨假设天线半径远小于物体的距离)。

2、研究现状

(1)现有产品中基线算法是通过加Hamming窗,然后做FFT来测距、测角。优点是复杂度低,缺点是分辨率较低。
(2)传统算法如MUSIC算法,通过空间平滑化滤波以及特征子空间的分解来分离信号空间和噪声空间,但是也会造成分辨率下降以及受噪声的较大干扰。
(3)现有的压缩感知算法利用了空间物体分布的稀疏性,可以有效提升分辨率,但处理这种连续傅里叶字典场景并设计低复杂度算法是一个巨大的挑战。

3、待解决的问题

(1)针对提供的无噪声仿真数据,建立定位模型,计算出物体相对位置,并以二维极坐标图(横坐标表示距离,纵坐标表示角度)展示。
(2)针对提供的高斯噪声仿真数据,利用一个chirp周期内的IF信号,设计超分辨算法精确定位多个物体。
(3)设计在线低复杂度算法,利用一帧中频信号来超分辨定位,并且通过数值实验验证算法性能。针对提供的一帧数据,计算出物体相对运动轨迹,并以二维图(横坐标表示距离,纵坐标表示角度)展示。
(4)考虑实际场景中由于老化等原因,天线阵列对于自身的定位也会有误差。针对提供的仿真数据,设计提升定位算法的鲁棒性的改进算法。

二、雷达基础知识

三、解决方案

根据第一问给出的数据,data_q1是一个86×256的矩阵,其中,86行代表天线数量,256列代表单个chirp的采样点。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述第一问的代码如下,如有疑问,可等待参考博文第二部分雷达基础知识。

clc;
clear;
close all;

load data_q1;
% -----—— Copyright By ZhiZhao,20230510 ---------- %
%% 雷达参数设置
c = physconst('LightSpeed');    % 光速
f0 = 78.8e9;                    % 载频
Lambda = c/f0;                  % 波长

T = 32e-6;                  % 单个chirp的周期
Ts = 0.125e-6;              % 采样间隔
Fs  = 1/Ts;                 % 单个chirp的采样频率
Nf = 32;                    % 一帧的脉冲数
Na = 86;                    % 天线数量
L = 0.0815;                 % 天线孔径
u = 78.986e12;              % 调频斜率
NumADC = fix(Fs*T);         % 单个chirp的采样点
Nfft1 = NumADC;             % 距离维做FFT的点数
Fs_Ant = 1/T;               % 空间FFT采样频率
Nfft2 = 128;                % 角度做FFT的点数
d_lambda = 1/2;             % 阵元间距与波长之比

%% 计算过程
dataIn = Z;
% 目标回波信号时域
t = (0:1/Fs:T-1/Fs);
figure;
plot(t*1e6,real(dataIn(1,:)));
xlabel('时间/us');ylabel('幅值');title('目标回波信号时域');

% 求目标回波信号距离
[m,n] = size(dataIn);
fft1_Data = zeros(m,n);
for ii = 1:m
    fft1_Data(ii,:) = fft(dataIn(ii,:),Nfft1);
end

f1 = (0:Nfft1-1)*Fs/Nfft1;     % 真实频率刻度
figure;
plot(f1*c/(2*u),abs(fft1_Data(1,:)));
xlabel('距离/m');ylabel('幅值');title('目标回波信号距离维');

fft2_Data = zeros(Nfft2,Nfft1);
win2 = hamming(Na);
for jj = 1:n
    fft2_Data(:,jj) = fftshift(fft(fft1_Data(:,jj).*win2,Nfft2));
end

f2 = (-Nfft2/2:Nfft2/2-1)*180/pi;
figure;
mesh(f1*c/(2*u),f2*2/Nfft2,abs(fft2_Data));
xlabel('距离/m');ylabel('角度/°');title('目标距离和角度');

猜你喜欢

转载自blog.csdn.net/weixin_45317919/article/details/127193369