gpt4 book ai didi

linux - GNU Radio 和野生动物追踪

转载 作者:可可西里 更新时间:2023-11-01 11:45:36 28 4
gpt4 key购买 nike

我与野生动物 radio 发射器打交道,我想构建一些东西来监听这些信号并跟踪它所听到的内容。该信号是一种音调,正常情况下每分钟传输 60 次,如果运动传感器指示动物已经死亡,则传输 120 次。

我的计划是使用 GNU Radio 来收听并将信号转换为某种类型的矩阵并保存到文件中,然后在第二个程序中进行分析。有没有办法在几兆赫兹内以 500 赫兹的间隔获取信号强度矢量,并将它们放在一起形成一个矩阵?

辅助程序将解释此输出并找到野生动物发射器并记录它们的脉搏率。这个想法是每 10 秒左右从 GNU Radio 获取一个新文件,并在收到第二个程序时处理它。

我一直在尝试使用 GNU Radio 中的文件接收器 block ,并意识到它是二进制的。也不确定它到底包含什么。

任何关于我应该如何做到这一点的建议方法都将不胜感激!

最佳答案

My plan is to use GNU Radio to listen and convert the signal

好吧,您需要硬件才能做到这一点;您想要什么样的 SDR 设备?

在下文中,我假设您确实在使用经典的 SDR 方法来获取可为您提供原始 I 和 Q 样本的设备。

If there were a way to get vectors of signal strength at 500 Hz intervals across a few megahertz, and put them together into a matrix.

放慢矩阵,让我们专注于从等距频率获取能量:

这几乎是一个功率谱密度 (PSD) 估计器。最简单、可能最快和经典的方法就是简单地获取输入信号的 FFT 的幅度平方。

GNU Radio Companion 有 log-power FFT block ,对于输入时间样本流,它会给你 FFT size 向量(显然应该是 =采样率/500 Hz)以 帧速率 速率;例如:

Flow Graph from GNU Radio Companion

将这些向量保存到一个文件中就足够了,因为:

I have been trying to use the file sink block in GNU, and realized that it is in binary. Also not sure what exactly what it contains.

这是数字,原始的,连续的,就像它们在内存中一样。对此总是有一些误解,所以有一个 FAQ entry就此;引用:

All files are in pure binary format. Just bits. That’s it. A floating point data stream is saved as 32 bits in the file, one after the other. A complex signal has 32 bits for the real part and 32 bits for the imaginary part. Reading back a complex number means reading in 32 bits, saving that to the real part of a complex data structure, and then reading in the next 32 bits as the imaginary part of the data structure. And just keep reading the data.

因此,一种方法是使用 Python/numpy,使用 numpy.fromfile(file, dtype=numpy.float32),然后是 numpy.reshape((rows,cols)) 将生成的一维 float 组转换为您想要的矩阵形状。

关于您的文件命名愿望:这是一个相当复杂的算法问题(以及为什么我认为这个问题在这里非常切题)。您可能不会绕过自己编写一些代码;这真的不难做到。始终采用 n 向量并将它们写入名称与当前时间匹配的文件的 Python block 将完全适合您的应用程序。

编写 block 是您在 GNU Radio 中可以做的最有趣的事情之一;我认为非常值得将您指向 GNU Radio Guided Tutorials .它们读起来很有趣,您可以在没有硬件的情况下学习示例!建议按顺序进行。


一些评论:

  1. FFT 是一种很好、易于使用、快速、高效的估算器。
    但是,根据您的跟踪器的特性,使用滤波器组在准确性/错误概率方面可能会优于它。一旦您对 GNU Radio 和 DSP 感到满意,就可以看看 GNU Radio 附带的多相滤波器组。它们允许您采用一个“良好”的低通滤波器来选择单个 channel ,并以均匀的间隔复制它们。
  2. 我非常习惯在 GNU Radio 之外进行分析。
    我发现编写另一个 python block 要容易得多,它只需要从估算器中提取的样本(在你的情况下,例如对数幂 FFT)并用它们做有用的事情,并连接它的输出,例如到 Qt GUI 频率接收器,而不是说获取测量样本并将它们插入 Matlab 或 R。
    大多数时候,我生成一个运行我的测量流程图的 Python 文件,它将其结果保存在矢量水槽。从那个 Python 文件,在流程图运行完成后,我立即使用 numpy 进行自己的离线分析。
    具有即时可重复的优势!

最后的评论:你说你已经有了一个 SDR 设备(一个 RTL 加密狗)。太好了!

将它连接到您的 PC;通过使用 osmocom -s 1e6 -W 使用 librtl/gr-osmosdr 来“显示”1 MHz 的带宽;调谐到发射机的频率并观察频谱。你会学到很多东西!

如果您还没有所有这些软件:只需下载并启动 GNU Radio live SDR environment .即插即用!

在 GNU Radio Companion 中,只需将 UHD: USRP Source 替换为 osmocom 源(可以与 RTL 加密狗通信)。

关于linux - GNU Radio 和野生动物追踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35964742/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com