Linux GNU无线电和野生动物跟踪

Linux GNU无线电和野生动物跟踪,linux,signal-processing,radio,gnuradio,gnuradio-companion,Linux,Signal Processing,Radio,Gnuradio,Gnuradio Companion,我和野生动物无线电发射机一起工作,我想建立一个能够监听这些信号并跟踪它所听到的东西。该信号通常为每分钟60次的音调,如果运动传感器指示动物死亡,则为120次 我的计划是使用GNU无线电收听并将信号转换成某种类型的矩阵,保存到文件中,然后在第二个程序中进行分析。有没有一种方法可以在几兆赫范围内以500赫兹的间隔获得信号强度矢量,并将它们组合成一个矩阵 第二个程序将解释该输出,找到野生动物发射机并记录它们的脉冲率。我们的想法是每隔10秒左右从GNU电台获取一个新文件,并在接收到第二个程序时对其进行处

我和野生动物无线电发射机一起工作,我想建立一个能够监听这些信号并跟踪它所听到的东西。该信号通常为每分钟60次的音调,如果运动传感器指示动物死亡,则为120次

我的计划是使用GNU无线电收听并将信号转换成某种类型的矩阵,保存到文件中,然后在第二个程序中进行分析。有没有一种方法可以在几兆赫范围内以500赫兹的间隔获得信号强度矢量,并将它们组合成一个矩阵

第二个程序将解释该输出,找到野生动物发射机并记录它们的脉冲率。我们的想法是每隔10秒左右从GNU电台获取一个新文件,并在接收到第二个程序时对其进行处理

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

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

我的计划是使用GNU收音机收听和转换信号

好吧,你需要硬件来实现这一点;你想要什么样的SDR设备

在下文中,我将假设您真的在使用经典的SDR方法来获取一个设备,该设备提供原始I&Q样本

如果有一种方法可以在几兆赫范围内以500赫兹的间隔获得信号强度矢量,并将它们组合成一个矩阵

放慢矩阵的速度,让我们集中精力从等距频率获取能量:

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

GNU Radio Companion具有对数功率FFT块,对于输入时间采样流,该块将以
帧速率
向您提供
FFT大小
向量(显然应为=采样率/500 Hz);例如:

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

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

它是原始的、连续的数字,就像它们在内存中一样。关于这一点总是有一些误解,因此有一个关于这一点的解释;引用:

所有文件都是纯二进制格式。只是点点滴滴。就这样。浮点数据流以32位的形式依次保存在文件中。复数信号的实部为32位,虚部为32位。读回复数意味着读入32位,将其保存到复数数据结构的实部,然后读入下一个32位作为数据结构的虚部。继续读数据

因此,可以使用的一种方法就是使用Python/
numpy
,使用
numpy.fromfile(file,dtype=numpy.float32)
,然后
numpy.reformate((rows,cols))
将生成的1D浮点数组转换为所需的矩阵形状

关于您的文件命名愿望:这是一个相当复杂的算法问题(为什么我认为这个问题在这里非常重要)。您可能无法自己编写一点代码;这真的不难做到。Python块总是采用
n
向量,并将它们写入一个名称与当前时间匹配的文件中,这对您的应用程序完全适用

书写积木是GNU无线电中最有趣的事情之一;我认为这是非常值得你指出的问题。它们读起来很有趣,你可以在没有硬件的情况下学习这些示例!建议按顺序做


几点意见:

  • FFT是一种好的、易于使用的、快速有效的估计器。
    但是,根据跟踪器的特性,使用滤波器组可能在精度/错误概率方面优于它。一旦您对GNU收音机和DSP感到满意,请查看GNU收音机附带的多相滤波器组。它们允许您使用一个“好的”低通滤波器来选择单个通道,并以偶数间隔复制它们
  • 我非常习惯于不在GNU Radio之外进行分析。
    我发现编写另一个python块要容易得多,它只需要从估计器(在您的例子中,例如对数功率FFT)中提取样本,并使用它们做有用的事情,然后将输出连接到Qt GUI频率接收器,比如说,通过Matlab或R获取测量样本并将其推送。大多数情况下,我会生成一个Python文件来运行我的测量流图,该文件将其结果保存在向量接收器中。从该Python文件中,在流程图完成运行后,我立即使用numpy进行自己的脱机分析。
    具有可即时重复的优点
    最后一句话:你说你已经有了SDR设备(RTL加密狗)。太好了

    将其连接到您的电脑;使用librtl/gr osmosdr,通过使用
    osmocom-s1e6-W
    获得1 MHz的带宽“显示”;调整发射机的频率并观察频谱。你会学到很多

    如果您还没有所有的软件:只需下载并启动。即插即用


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

    我会对发射机进行一些研究。查找网页,特别是从发送器中查找FCC ID,并在网站上查找。然后我们可以提供更多帮助


    我们在哪里可以找到追踪器?在家里录制信号会很方便。

    我认为解决方案很大程度上取决于您的接收设备。您需要对此进行更多解释。@Sheller我认为这是一个非常具体的实现问题,尽管我同意OP可能是m