自制合成孔径雷达(9) 声卡实现测距的另一种方法(FMCW)

本文介绍了一种使用FMCW雷达原理进行测距的方法,并详细解释了如何通过调整参数来实现有效的测距功能。文章分享了一个成功的信号处理流图配置案例,包括锯齿波信号周期、VCO采样率及灵敏度等关键参数的选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

FMCW雷达或者声呐,其实都是用chirp信号作为信号源,比较接收和发射的频率差,找出对应的时间差,算出距离的。MIT的雷达,除了测速部分在用单音外,都是在用这种信号(包括测距和SAR)。因此,做完上一篇文章的互相关测距,我感觉还不太够,还是得用chirp信号的方法来测距,这样才更符合将来要实现的合成孔径雷达/声呐。

其实这套东西,我之前就找到资料了,就是balint seeber做的演讲提到的内容。

SDR实现FMCW雷达和模拟视频解调_哔哩哔哩_bilibili

原理其实很好理解,但是始终调不出来,首先跟上一篇文章类似,有硬件的原因,但也有流图上几个参数导致的原因。哪怕流图画对了,参数不对,也是无法出现能让人理解的图像的。

以下是我成功实现的流图,要注意:

1.锯齿波信号周期要高一些,我设置为了100,当它施加在VCO上时,其实人耳已经听不到忽高忽低的音调了,但是就必须这么高,才会有效果,如果降低到1,能听出音调,但是出不来测距的效果。切记!

2.VCO的采样率和灵敏度也很重要,不知道为啥,balint seeber的演示里,采样率是1,灵敏度是pi,显然不对,采样率就应该是音频硬件采样率48k,灵敏度是48k * pi。

3.multiply const里的500m代表0.5,这个也挺重要,代表要给原始信号衰减一下,不能直接把它与接收信号混频,不然效果也不好。

 

要注意的其实就以上3点,做好它们,你就能看到效果。但是就像之前几片文章说的,实数FFT左右对称,看出来的图形可能有点奇怪。那你也可以参照下图把它变为复数,看起来效果会更好些。 

还有个小遗憾,我始终无法用手来反射喇叭的信号给麦克风,只能测喇叭到麦克风的直接距离,这个不影响测距的演示,但是后面如果要做合成孔径声呐就必须能测反射,因为它的原理是通过不同位置的反射来探测物体的形状。

流图:

链接: https://pan.baidu.com/s/1-XMUcZfGHqb3rgHAq8qAHw 提取码: 6ibs 

视频:

gnuradio实现测距声呐2(chirp)_哔哩哔哩_bilibili 

优快云 IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现FMCW调频连续波雷达的测距测角,各种资源分配算法实现,是毕业设计 的题目,多目标跟踪的粒子滤波器,是学习PCA特征提取的很好的学习资料,合成孔径雷达(SAR)目标成像仿真+使用说明文档 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
### FMCW 雷达在 GNU Radio 中的实现 FMCW(调频连续波)雷达是一种广泛应用的技术,在GNU Radio平台上的实现在很大程度上依赖于软件定义无线电(SDR)设备的支持,例如USRP (Universal Software Radio Peripheral)[^1]。 #### 构建基本信号处理流程图 为了构建一个完整的FMCW雷达系统,需要创建一系列GNURadio模块来生成线性调频信号(chirp),并通过SDR硬件发送出去。接收端会捕捉反射回来的信号并与原始发射信号混频得到差拍频率,从而计算目标距离和速度信息。 ```python from gnuradio import gr, analog, blocks, fft import uhd class fmwc_radar(gr.top_block): def __init__(self): gr.top_block.__init__(self) self.samp_rate = 2e6 self.carrier_freq = 900e6 # 发射部分 self.chirp_signal_source = analog.sig_source_c(self.samp_rate, analog.GR_SIN_WAVE, 0, 1, 0) self.modulator = chirp_modulation() self.tx_gain = 50 self.uhd_usrp_sink = uhd.usrp_sink(device_addr="", stream_args=uhd.stream_args('fc32')) # 接收部分 self.rx_gain = 40 self.uhd_usrp_source = uhd.usrp_source(device_addr="", stream_args=uhd.stream_args('fc32')) self.mixer = multiply_conjugate_cc() self.fft_size = 1024 self.fft_module = fft.fft_vcc(self.fft_size,True,()) ... ``` 上述代码片段展示了如何利用Python API初始化一个简单的FMWC雷达结构框架,其中包含了必要的组件如chrip信号源、调制器以及用于传输/接收数据流的UHD驱动程序接口实例化过程。 #### 数据采集与分析 通过调整参数设置并运行此脚本可以获取到实际环境下的回波样本文件;之后借助MATLAB或其他工具进一步做FFT变换等后续处理工作以提取有用的目标特征量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值