【无人机】无人机FMCW毫米波高度计雷达仿真(Matlab实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

无人机FMCW毫米波高度计雷达仿真是指利用仿真软件或工具,模拟FMCW(频率调制连续波)毫米波雷达在无人机上的应用,用于测量高度信息。首先需要建立FMCW毫米波雷达系统的数学模型,包括雷达发射信号、接收信号、信号处理和距离解算等部分。模型需要考虑雷达天线、波束形成、信号传播、回波接收等各个环节的影响。设定仿真所需的参数,包括雷达工作频率、调制方式、波束宽度、波束方向、采样率等。还需考虑无人机的飞行高度、速度、姿态等参数,以及环境条件如大气压力、温度等对信号传播的影响。通过FMCW毫米波高度计雷达仿真,可以评估无人机在不同高度下的高度测量性能,优化雷达系统参数设计,并为实际应用提供参考和指导。

📚2 运行结果

部分代码:


clc;clear

%% Radar Parameters
fc = 24e9;   
c = physconst('LightSpeed');
lambda = c/fc;

tm = 5e-4;   % Chirp Cycle
bw = 300e6;    % FMCW Bandwidth
range_max = 5;     % Max detection Range 1~100 meters
v_max = 2.5;         % Max Velocity
%
range_res = c/2/bw;
sweep_slope = bw/tm;
fr_max = range2beat(range_max,sweep_slope,c);
fd_max = speed2dop(2*v_max,lambda);
fb_max = fr_max+fd_max;
fs = max(2*fb_max,bw);

%%
%% Use Phased Array System Toolbox to generate an FMCW waveform
waveform = phased.FMCWWaveform('SweepTime',tm,'SweepBandwidth',bw,...
'SampleRate',fs);
%%
tx_antenna = phased.IsotropicAntennaElement('FrequencyRange',[23.8e9 24.4e9],'BackBaffled',true);
rx_antenna = phased.IsotropicAntennaElement('FrequencyRange',[23.8e9 24.4e9],'BackBaffled',true);
%%
transmitter = phased.Transmitter('PeakPower',0.001,'Gain',20);
receiver = phased.ReceiverPreamp('Gain',20,'NoiseFigure',8.5,'SampleRate',fs);

txradiator = phased.Radiator('Sensor',tx_antenna,'OperatingFrequency',fc,...
'PropagationSpeed',c);
rxcollector = phased.Collector('Sensor',rx_antenna,'OperatingFrequency',fc,...
'PropagationSpeed',c);

rng(2020);
fs_d = 2500000;
Dn = fix(fs/fs_d);

%%
%% --------------Radar Motion Platform-------------- %%
radar_s = phased.Platform('InitialPosition',[0;0;0],...
    'Velocity',[0.05;2.3;-0.04]);  %% *********** Set Radar Velocity Here **************        

%% Targets ------------- Ground -------------------- %%
target_ypos = -6:0.15:6;
target_num = size(target_ypos,2);
target_xpos = 1.3*ones(1,target_num) + 0*1.1*target_ypos; %% *********** Set Ground Shape Here ************** 
target_zpos = zeros(1,target_num);

target_pos = [[target_xpos,target_xpos,target_xpos];
    [target_ypos,target_ypos,target_ypos];
    [target_zpos-0.15,target_zpos,target_zpos+0.155]];
target_num = target_num*3;

target_rcs = 0.02*ones(1,target_num);
targets_vel = [zeros(1,target_num);zeros(1,target_num);zeros(1,target_num)];

targets = phased.RadarTarget('MeanRCS',target_rcs,'PropagationSpeed',c,'OperatingFrequency',fc);
targetmotion = phased.Platform('InitialPosition',target_pos,...
    'Velocity',targets_vel);

%%
%% Signal Propogation
% simulation of free space propagtion
channel = phased.FreeSpace('PropagationSpeed',c,...
'OperatingFrequency',fc,'SampleRate',fs,'TwoWayPropagation',true);

%%
%%
% Generate Time Domain Waveforms of Chirps
% xr is the data received at rx array

Nsweep = 32;               % Number of Chirps (IF signal) of this simulation

chirp_len = fix(fs_d*waveform.SweepTime);
xr = complex(zeros(chirp_len,1,Nsweep));

disp('The simulation will take some time. Please wait...')
for m = 1:Nsweep
    if mod(m,1)==0
        disp([num2str(m),'/',num2str(Nsweep)])
    end
    
    % Update radar and target positions
    [radar_pos,radar_vel] = radar_s(waveform.SweepTime);
    [tgt_pos,tgt_vel] = targetmotion(waveform.SweepTime);
    [~,tgt_ang] = rangeangle(tgt_pos,radar_pos);
    
    % Transmit FMCW waveform
    sig = waveform();
    txsig = transmitter(sig);
    
    % Toggle transmit element
    txsig = txradiator(txsig,tgt_ang);
    
    % Propagate the signal and reflect off the target
    txsig = channel(txsig,radar_pos,tgt_pos,radar_vel,tgt_vel);
    txsig = targets(txsig);
    
    % Dechirp the received radar return
    rxsig = rxcollector(txsig,tgt_ang);
    rxsig = receiver(rxsig);
    dechirpsig = dechirp(rxsig,sig);
    
    % Decimate the return to reduce computation requirements
    for n = size(xr,2):-1:1
        xr(:,n,m) = decimate(dechirpsig(1:chirp_len*Dn,n),Dn,'FIR');
    end
end

range_res = range_res*size(dechirpsig,1)/Dn/size(xr,1);

%%
xrv = squeeze(xr);
save('vrv.mat',...
    'xrv','fc','fs_d','c','tm','bw','waveform','range_res',...
    'Nsweep','chirp_len','Dn','fb_max','lambda',...
    'v_max','range_max')

%%
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%         Part II: Signal Processing                %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%
if ~exist('xrv')
    load('vrv.mat');
end
    
% FFT points
nfft_r = 2^nextpow2(size(xrv,1));
nfft_d = 2^nextpow2(size(xrv,2));
nfft_mul = 2;
ra_res = range_res*size(xrv,1)/nfft_mul/nfft_r;

🎉3 参考文献

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

[1]李二飞.无人机在消防救援中的应用研究[J].中国设备工程,2024(07):40-43.

[2]陆宗明.植保无人机雾滴飘移测试试验台设计及飘移性能分析[J].南方农机,2024,55(07):70-72.

🌈4 Matlab代码实现

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

荔枝科研社

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

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

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

打赏作者

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

抵扣说明:

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

余额充值