雷达仿真:FMCW DDMA-MIMO 3D点云获取方法

news2024/11/22 14:00:17

1.DDMA-MIMO原理

        由于TDMA-MIMO采用不同单天线交替发射信号,没有更好的利用发射天线同时工作的发射资源,导致发射功率低以及损耗大,从而使得TDMA波形只能应用在近距离探测的低功率雷达场景。而DDMA波形则能很好的弥补TDMA上述缺点,与TDMA波形下单天线交替工作不同,DDMA波形下所有发射天线同时发射,但是每个发射天线的信号都加入一个特定的频率偏移(在速度维度体现为一个速度频移),通过这个人为偏移的频率使得不同发射天线的信号在Doppler域上分离出来。使不同发射天线的信号在Doppler域上能分离开来。此外,由于DDMA相比于TDMA来说拥有更高的发射功率,因此DDMA波形也将成为往后车载毫米波雷达MIMO雷达的主流波形。有关于DDMA更多细节请参考DDMA原理,这里不在累赘。

2.信号建模

        有关于信号建模我在雷达仿真:FMCW TDMA-MIMO 3D点云获取方法已经介绍得非常详细,只需要做如下修改就可。我们基于TDMA信号模型做以下修改即可获得DDMA波形:

1) DDMA是Ntx个发射天线同时发射,因此我们需要在接收端分别叠加每个发射天线产生的回波信号。

2)为了区别不同发射天线发射的信号,每个发射天线施加一个固定的频率频移

上式子中,N通常由发射天线决定,但后续采用Empty Band解调通常满足下式:

式中Nt为发射天线数。在本案例中设置为4 Tx 4 Rx,其中发射天线的分布情况为线性排列,相邻发射天线距离为2λ,通过DDMA解调后,可以等价为1Tx16Rx虚拟阵列。由于固定的频率偏移在中频信号中没法体现出来,为了更直观的体现不同发射天线之间的固定频率频移,将这个频率偏移换算成固定的速度频移为:

 其中为发射脉冲间隔(chirp间隔)。因此DDMA信号模型建模代码如下:

for frameid = 1 : numframe
    for txid = 1 : numtx
        for rxid = 1 : numrx
            for chirpid = 1 : numchirp
                for targetid = 1 : numtarget 
                    for  sampleid = 1 : numsamples
                        R = target(targetid,1) + ((chirpid-1)*T)*(target(targetid,2) + (txid - 1)*lambda/2/Emptyband/T) + (frameid-1)*numchirp*T*(target(targetid,2)+ (txid - 1)*lambda/2/Emptyband/T); %计算目标随速度变化的距离,以忽略快时间对距离的影响
                        delay = 2 * R / parameter.c;
                        fixphase = exp(1j*2*pi*(f0*delay-0.5*slope*delay^2));         %中频信号的固定相位,末尾的相位为剩余视频相位,为了更真实还原毫米波雷达数据,本程中没有将其省略
                        fastsampdata(sampleid) = exp(1j*2*pi*slope*delay*t(sampleid)) * fixphase; %这里采用随机起伏   
                    end
                    azimuthphase = exp(1j*(2*pi/lambda)*sind(target(targetid,3)) * ( (rxid -1) * Detarx  + (txid - 1) * Detatx) );  %目标方位角信息
                    temprawdata(:,chirpid,(txid-1)*numrx + rxid,frameid) = temprawdata(:,chirpid,(txid-1)*numrx + rxid,frameid) + fastsampdata.* azimuthphase;
                end
            end
            %加入高斯噪声
            MixIQ = temprawdata(:,:,(txid-1)*numrx + rxid,frameid);
            xigema = std(MixIQ)/db2mag(snr);
            MixIQ = MixIQ + ((randn(size(MixIQ)) + 1i*randn(size(MixIQ)))).*xigema;
            temprawdata(:,:,(txid-1)*numrx + rxid,frameid) = MixIQ;   
        end
    end
    
    %%  叠加
    for i = 1 : numtx
        for k = 1 : numrx
            rawdata(:,:,i,frameid) = rawdata(:,:,i,frameid) + temprawdata(:,:,i + (k - 1)*numrx,frameid);
        end
    end

end

图 1 信号时域图

3.DDMA-MIMO仿真代码

        仿真环境:window 11 ,Matalb2021b

       4T4R两个空带,距离、速度、角度分别为(150,-12,30)、(100,4.4,-15)、(56, 25,13)的仿真效果为:

图 2 4T4R3个目标仿真效果图

通过Emptyband算法解调,采用OMP-CS算法进行方位角估计(关于OMP-CS算法原理可参看我另一篇文章基于压缩感知(CS)的DOA估计方法-OMP-CS算法),这里为什么选用OMP-CS算法进行到DOA估计,主要原因是通过DDMA波形解调后,比较容易解调出每个发射天线和接收天线的单快拍数据,而数据采样点减少时,由于传统的基于协方差估计(Capon、MUSIC、ESPRIT)的方法失效,因此这里采用OMP-CS算法。如果各位头铁硬要使用上诉传统的方法,可以积累多个帧进行操作。方位角估计效果为:

图 3 目标的方位向

将图2图3中目标的距离、速度、角度进行匹配,得到目标的3D点云图像:

图 4 目标点云图

DDMA仿真的部分代码结构如下:

%%  Author : Poulen
%%  Data :  2023.9.11

%%  内容介绍:DDMA-MIMO demo,该案例用于学习DDMA原理以及接收端解调。DDMA主要原理为:在发射端每个发射天线同时发射,但是相邻发射天线之间加入一个人为的固定相移;
%%  这使得不同的发射天线发射的chirp在doppler域得以区分出来,在接收端按照这种差异解调出来。
%%  缺点:使得最大不模糊速度区间变为原来的1/N(N为发射天线数量),即最大不模糊速度区间减小了
clear 
close all;
clc;
%%  DDMA波形参数设置
%%  参数设计
parameter = RadarSystemDesign();
maxv = parameter.dopplerindex;
%%  获取原始数据
rawdata = RawDataCapture(parameter);

%%  展示时域信号波形
timedomian = squeeze(rawdata(:,10,1,1));
figure;
subplot(2,1,1);
plot(real(timedomian),'Color',[0 0 0],'LineWidth',1.2);
title('原始信号时域波形(实部)');
ylabel('信号幅度');
xlabel('时域采样点');
xlim([0 384]);
subplot(2,1,2);
plot(imag(timedomian),'Color',[0 0 0],'LineWidth',1.2);
title('原始信号时域波形(实部)');
ylabel('信号幅度');
xlabel('时域采样点');
xlim([0 384]);

clear timedomian;

%% 2DFFT(距离-速度估计)
rangedoppler = RangeDopplerEst(parameter,rawdata);

%% 多通道积累
mulaccumulata = MulAccumulataEst(parameter,rangedoppler);

figure;
mesh(parameter.dopplerindex,parameter.rangeindex(1:end/2-38),db(mulaccumulata(1:end/2-38,:,1)));
xlabel('速度(m/s)');
ylabel('距离(m)');
title('RD 图(4T4R Empty Band = 6)');

%% 解调
[CFAROUT,tagetestindex,targeest] = CA_2DCFAR(parameter,mulaccumulata);     %二维cfar
% figure;
% mesh(parameter.dopplerindex,parameter.rangeindex(1:end/2-38),CFAROUT((1:end/2-38),:,1));
% xlabel('速度(m/s)');
% ylabel('距离(m)');
% title('RD CA-CFAR 图');
% % clear mulaccumulata;

[target,AzimuthData] = EmptyBand(parameter,tagetestindex,mulaccumulata,rangedoppler);

%% doa 估计(OMP-CS算法)
[Azimuspectral,pointcloud] = OMPCS(parameter,target,AzimuthData);

figure;
plot(parameter.scale,abs(Azimuspectral));
xlabel('方位向(°)');
ylabel('幅度');
title('OMPCS 角度谱');
%%  绘制3D点云散点图(在该散点图中仅展示第一帧的图像信息)
figure;
X = pointcloud(1,:);
Y = pointcloud(2,:);
Z = pointcloud(3,:);
S = 50;
C = [0 1 0; 1 0 0; 0.5 0.5 0.5];                                            %注意:这是三个点目标是的RGB原组,若要改变目标数量,该原组需要改变
get = scatter3(X,Y,Z,S,C);
xlim([0 parameter.rangeindex(end/2-38)]);
xlabel('距离(m)');
ylim([parameter.dopplerindex(1) parameter.dopplerindex(end)]);
ylabel('速度(m/s)');
zlim([parameter.scale(1) parameter.scale(end)]);
zlabel('角度(°)');
title('3D点云图');
view(30,35);

总结

        文中难免有笔误之处,望各位海涵。另外,制作不易望多多支持。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1022246.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么用IP访问网站也要使用SSL证书

IP地址SSL证书是一种专门用于公网IP地址验证的数字证书。它可以为公网IP地址提供安全的数据传输保障,解决了IP地址明文传输的安全隐患,保护了IP地址的数据传输安全。 与普通的SSL证书不同,IP地址SSL证书是基于IP地址进行验证的。在申请IP地址…

ssh登录时间久或登陆后报错

情况1 问题描述: ssh登录时间很久,登录后出现abrt-cli status timed out 的报错 问题原因: .lock文件被锁导致 执行systemctl status abrtd.service可以看到被锁的.lock 处理方式: ps -ef | grep pid 找到被锁的进程kill掉…

Java基于SpringBoot的在线考试系统的研究与实现(附源码,教程)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 第一章第二章.主要技术第三章第四章 系统设计4.1功能结构4.2 数据库设计4.2.1 数据库E/R图4.2.2 数…

Windows安装cuda和cudnn教程最新版(2023年9月)

文章目录 cudacudnn cuda 查看电脑的cuda最高驱动版本(适用于N卡电脑-Nvidia) winR打开命令行,输入nvidia-smi 右上角cuda -version就是目前支持的最高cuda版本 nvidia官网下载cuda 下载地址:https://developer.nvidia.com/cuda…

pip常用指令

文章目录 简介pip的基本用法常用指令查看pip版本安装Python软件包指定版本安装Python软件包pip安装多个Python软件包通过requirements.txt文件批量安装Python软件包pip安装本地whl安装包 下载安装包到本地将已安装的Python软件包信息导出到指定文件中卸载Python软件包查看当前环…

[S2] Challenge 25 心脏病预测

问题 您是一家医疗保健公司的数据科学家,试图创建患者是否患有心脏病的预测因子。目前,您正在试验 11 种不同的特征(潜在心脏病指标)和 XGBoost 分类模型,您注意到它的性能可能会根据其调整方式而发生很大变化。在此挑…

Git学习笔记3

Git分支管理: 先来考虑一个问题: 开发者A开发软件的某一个功能模块, 还没有开发完成,但害怕进度丢失就提交。假设另一位开发者B并不知道A没有完成, 而直接使用了A开发的文件,这造成了问题。 解决方法: 开发者A创建一个属于自己的分支,这个分…

vite+react 使用 react-activation 实现缓存页面

对应的版本 "react": "^18.2.0", "react-activation": "^0.12.4", "react-dom": "^18.2.0", "react-router-dom": "^6.15.0",react-activation 这是一个npm包,在react keep alive…

Linux服务器查看CPU相关信息

文章目录 一、基本概念cpu个数cpu核数超线程技术 二、查看命令查看CPU型号查看物理CPU个数(物理层面)查看每个物理CPU中core个数(核数)查看逻辑CPU个数(逻辑层面) 三、以上概念的关系参考资料 一、基本概念 cpu个数 物理cpu个数…

图神经网络系列之序章

文章目录 一、为什么需要图神经网络?二、图的定义1.图的定义和种类2.一些关于图的重要概念2.1 子图2.2 连通图2.3 顶点的度、入度和出度2.4 边的权和网2.5 稠密图、稀疏图 3.图的存储结构3.1 邻接矩阵3.2 邻接表3.3 边集数组3.4 邻接多重表3.5 十字链表3.6 链式前向…

华为云HECS云服务器docker环境下安装mysql

华为云HECS云服务器,已经安装了docker环境,准备下docker环境下安装mysql。 一、HECS云服务器安装docker 登录华为HECS云服务器,安装docker环境。 安装docker参考如下文章: 华为云HECS安装docker并安装mysql-CSDN博客 二、拉取…

Linux下的Docker安装,以Ubuntu为例

Docker是一种流行的容器化平台,它能够简化应用程序的部署和管理。 Docker安装 1、检查卸载老版本Docker(为保证安装正确,尽量在安装前先进行一次卸载) apt-get remove docker docker-engine docker.io containerd runc 2、Dock…

【栈与队列面试题】用队列实现栈(动图演示)

两个队列实现一个栈 前言: 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥 ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上栈与队列的面试OJ题目 目录 两个队列实现一个栈 队列的实现&#xf…

Java毕业设计-基于SpingBoot的网上图书商城

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1. 简介2 技术栈3.1系统功能 4系统设计4.1数据库设计 5系统详细设计5.1系统功能模块5.1系统功能…

Python 图像处理库PIL ImageOps笔记

# 返回一个指定大小的裁剪过的图像。该图像被裁剪到指定的宽高比和尺寸。 # 变量size是要求的输出尺寸,以像素为单位,是一个(宽,高)元组 # bleed:允许用户去掉图像的边界(图像四个边界&#xff…

APP产品经理的职责(合集)

APP产品经理的职责1 职责: 1、根据部门发展规划、主动发掘业务需求,独立负责线上用户产品线的完整业务规划、产品设计、产品管理等工作; 2、负责协调BD、运营、研发、市场等各部门,共同推进新产品开发,确保产品能够保质按时上线…

C语言指针,深度长文全面讲解

指针对于C来说太重要。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针? 指针解决了一些编程中基本的问题。…

linus调试器---gdb的操作介绍

目录 一.背景 二.gdb的常用的操作介绍 小技巧:gdb会记住上一次的命令,按回车即可打出上次的命令。 1.看代码 2.打断点 3.删断点 4.禁用与开启断点 5.查看断点信息 6.调试 7.调试 8.查看变量 9.运行至某行 10.打印变量值 11.从一断点直接运行…

《深入浅出OCR》第一章:OCR技术导论

✨专栏介绍: 经过几个月的精心筹备,本作者推出全新系列《深入浅出OCR》专栏,对标最全OCR教程,具体章节如导图所示,将分别从OCR技术发展、方向、概念、算法、论文、数据集等各种角度展开详细介绍。 👨‍&…

github 网页显示不全?

问题 解决 1、检查网页,打开 network,重新刷新 github 网页 2、查看无法加载的资源(如 css 文件) 3、查看域名地址 https://tool.chinaz.com/dns/,github.githubassets.com(检查网页元素,点击无…