标签: KRAKENSDR

  • KrakenSDR GNU Radio 模块

    简述

    GNU Radio 是一款流行的免费开源工具包,提供各种数字信号处理模块。您可以使用它来构建解调器、解码器,以及各种利用相干数据的应用,例如干涉测量和波束形成。

    KrakenSDR 源模块的工作原理

    gr-krakensdr 模块与 KrakenSDR 的数据采集软件 Heimdall 协同工作。Heimdall 是 KrakenSDR 的核心软件,负责确保所有通道的采样数据在时间和相位上保持一致性(相干性)

    在启动时,Heimdall 会自动完成采样和相位一致性的校准,并在运行过程中定期检查以确认相干性是否保持稳定。GNU Radio 中的该模块通过 TCP 套接字连接 从 Heimdall 接收相干 IQ 数据,用于后续的信号处理。

    Heimdall 服务器既可以运行在与 GNU Radio 程序相同的主机上,也可以运行在网络连接的设备上,例如 树莓派 4(Raspberry Pi 4)

    但如果使用网络传输,您需要确保网络带宽足以支持 5 通道的数据吞吐量

    模块安装

    KrakenSDR 的源代码块可在
    https://github.com/krakenrf/gr-krakensdr获取。

    模块预览

    这是一个用于 KrakenSDRGNU Radio 模块。它通过 TCP 套接字连接与 KrakenSDR 的数据采集服务器软件 Heimdall 通信。

    Heimdall 负责通过噪声源进行所有采样同步与相位一致性的校准,而该模块则接收 经过校准的相干 IQ 数据,并将其提供给 GNU Radio 进行后续的 数字信号处理(DSP)

    GNU Radio OOT Block 安装说明

    sudo apt-get install gnuradio-dev cmake libspdlog-dev clang-format
    
    git clone https://github.com/krakenrf/gr-krakensdr
    
    cd gr-krakensdr
    mkdir build
    cd build
    cmake ..
    make
    sudo make install

    使用说明

    首先安装Heimdall https://github.com/krakenrf/heimdall_daq_fw.

    如果你使用的是预配置的测向镜像,首先需要禁用测向软件的自动启动,否则可能会干扰 Heimdall 的连接。进入 /boot 目录,将 start_kraken.sh 重命名,例如改为 start_kraken.sh_stop,以停止测向应用的自动启动。

    接下来,将本仓库中的 heimdall_only_start.shheimdall_only_stop.sh 文件复制到你的 krakensdr 根目录中。

    然后,在 heimdall_daq_fw 文件夹中,编辑 Firmware/daq_chain_config.ini 文件,将 out_data_iface_type 的值修改为 eth

    [data_interface]
    out_data_iface_type = eth

    然后,在 krakensdr 根目录下运行:

    ./heimdall_only_start.sh

    现在你可以启动包含 KrakenSDR 源模块的 GRC 文件,程序将会通过套接字连接到本地 IP 地址 127.0.0.1 上运行的 heimdall 程序。

    另外,你也可以在一台联网设备上运行 heimdall 程序,但需要确保使用高速千兆网络,并尽可能是直连方式,以保证网络吞吐量足以处理五个通道的数据。

    GNU Radio KrakenSDR 示例流程图

    我们还提供了三个示例 GRC 流程图,以及一个互相关器(cross correlator)和一个 DOA MUSIC 块,以帮助用户熟悉源模块的使用。

    示例 1 – 简单的多通道 FFT

    第一个示例文件提供了每个输出通道的 简单 FFT 频谱显示。名为“kraken_fft_display.grc”。

    示例 2 – 使用 DOA MUSIC 块进行无线电测向

    第二个示例使用 DOA MUSIC 块,配合天线阵列,实现无线电测向并输出信号的方位角信息。名为“kraken_music_doa.grc”。

    示例 3 – 交叉相关采样与相位一致性检查

    最后一个示例可用于验证 Heimdall 输出是否真正保持相干,方法是对 通道 1 到 4 与参考通道 0 之间进行交叉相关处理。

    要使用该相关流程图,您需要在 Heimdall 源代码中修改一行代码,以强制噪声源始终保持开启状态。

    要测试该模块,您需要对 Heimdall 核心代码进行轻微修改,以使噪声源保持常开:

    1、使用文本编辑器打开文件:

    Firmware/_daq_core/rtl_daq.c

    2、在文件结尾附近,找到以下函数调用:

    rtlsdr_set_bias_tee_gpio(..., 0);

    将最后的 0 改为 1,使噪声源始终开启:

    rtlsdr_set_bias_tee_gpio(..., 1);

    3、然后在目录 Firmware/_daq_core 中运行:

    make

    4、完成测试后,请务必将这处修改还原为 0,并再次运行 make,以恢复默认行为。

  • KrakenSDR 天线阵列设置

    关于标准测向天线的说明

    在标准的无线电测向中,您需要 五根相同的全向天线。虽然可以在性能上妥协,使用较少的天线,但为了获得最佳性能,我们强烈建议使用 全部五根天线。这些天线通常是磁吸式鞭状天线或偶极子天线。

    我们建议始终使用 均匀圆形阵列(Uniform Circular Array, UCA) 的布置方式,因为它可以从所有方向获取方位信息。相比之下,线性阵列存在局限性,它无法区分信号是从阵列的正前方还是正后方传来的。

    注意,在安装天线时,约定的布置顺序是 从俯视角度看为顺时针方向。也就是说,天线0(antenna zero) 指向 0 度方向,天线1 位于天线0右侧的位置,依此类推。

    下方的说明将提供关于如何优化天线阵列的更详细信息。但如果您只是想快速上手,最简单的方式是使用我们提供的 Excel 天线阵列间距计算器文件 Antenna_Array_Size_Calculator.xlsx

    间距倍数说明(Spacing Multiplier Explained)

    天线阵列的尺寸由 间距倍数(spacing multiplier) 与信号频率共同决定。间距倍数是一个系数,它乘以所测频率对应的波长,得出天线阵列中各元素之间的 “阵元间距(interelement spacing)”,即相邻天线之间的距离。

    在所有应用场景中,间距倍数必须小于 0.5,以避免产生歧义(即出现多个可能的方位解)。
    理想情况下,间距倍数应 保持在 0.2 以上并尽量接近 0.5。间距倍数越大,阵列的角分辨率越高,能够更好地处理多径效应。但如果间距倍数低于 0.2,阵列的分辨能力就会显著下降,影响测向精度。

    使用 Excel 计算器

    在 Excel 计算器中,黄色框表示可以更改的数字。

    频率转阵列半径

    在此处输入您的频率,系统将根据该频率和一系列不同的间距倍数(Spacing Multiplier),为您显示对应的天线阵列半径。

    固定阵列半径下的可接受频率范围

    一旦您为应用选择了一个合适的阵列半径,请在此处输入该半径。绿色区域将显示在该阵列半径下可正常工作的频率范围。

    阵列半径对应的坐标位置

    本部分将为您提供在特定阵列半径下,每个天线单元的精确摆放坐标。请注意:这些坐标需要进行旋转,使得 ANT-0(天线0)指向运动方向

    天线间距模板

    您可以使用我们提供的天线间距模板,以帮助实现更精确的天线布置。阵列布置越准确,测向结果就越可靠。

    用于 3D 打印纸质打印 的模板文件可在以下获取:

    对于两种模板,请分别打印中间的五边形和五个臂,然后将它们粘合在一起。

    每个孔的间距以 50mm 半径递增,即您可以得到以下阵列半径选项:

    • 100mm
    • 150mm
    • 200mm
    • 250mm

    这些半径适用于以下频率范围:

    • 100mm:510 – 1275 MHz
    • 150mm:340 – 850 MHz
    • 200mm:255 – 637 MHz
    • 250mm:204 – 510 MHz

    天线排列方式

    均匀圆形阵列(Uniform Circular Array, UCA)

    如果您希望从 360 度全方位检测无线电信号源,则天线应布置成均匀圆形阵列(UCA)。阵列中的阵元间距(即相邻天线之间的顶点距离)必须根据目标频率范围进行精确设计。

    您必须确保设计的阵列满足以下条件:

    若阵列的阵元间距超过该上限,将出现所谓的**“歧义”现象**。简单来说,系统可能会检测到多个可能的信号方向,而无法判断哪一个才是真实的方向。这会严重影响测向精度,因此务必将 spacing multiplier 保持在 0.5 以下。

    在实际应用中,为了缩小阵列尺寸,可以适当降低 spacing multiplier,代价是测向精度的下降。通常 最低可以接受到 s = 0.2,我们推荐的典型设置是 s = 0.33。需要注意的是,spacing multiplier 越小,阵列的方向分辨率越低,尤其对于 5 元阵列而言,当 s 低于约 0.2 时,测向精度会变得不可接受

    由于阵元间距与波长直接相关,因此频率越低,波长越长,所需阵列尺寸就越大。这意味着在低频(如 HF 和部分 VHF 频段)下,使用该类型的方向测量方法可能不太现实,因为阵列会占用很大空间。在这种情况下,更适合使用如 TDoA(到达时间差)Watson-Watt手动八木天线 等其他测向方法。

    使用阵列半径而非阵元间距进行布置

    有时使用阵列半径来构建圆形阵列比直接测量阵元间距更方便。对应的计算公式为:

    这个公式可帮助您根据目标频率设计出适当的天线布置半径。

    均匀线性阵列(Uniform Linear Array, ULA)

    另一种天线阵列的布置方式是 均匀线性阵列(ULA),即将天线沿一条直线等间距排列。这种方式的缺点是阵列仅对 180 度范围内的信号有效,无法判断信号是从阵列前方还是后方到来。

    ULA 的优点在于,它可以提供更高的角分辨率精度,这是因为在相同波长条件下,它允许构建更大的有效孔径。但这种更高的分辨率仅对从接近垂直方向射入的信号有效。当信号角度接近 0 度或 180 度时,天线阵列“看见”的有效孔径显著减小,从而降低了测向精度。

    你可以这样理解:当信号从阵列边缘方向到达时,阵列“看到”的有效接收面积远小于信号垂直入射时。因此,线性阵列仅适用于已知信号大致方向,且其不会偏离太多的特定应用场景

    阵元间距计算(与 UCA 相同)

    线性阵列的阵元间距计算公式与 UCA 相同:

    天线与同轴电缆的精度要求

    KrakenSDR 不会对外部天线系统引入的相位失真进行补偿,因此您必须使用完全相同的天线完全相同长度的同轴电缆,并尽可能精确地布置天线阵列。我们建议使用 KrakenSDR 提供的阵列间距模板来辅助安装。一个实用建议是:在天线安装完成后,实际测量阵元间距,确认所有天线之间的距离完全一致。

    在频率不超过约 900 MHz 的情况下,连接 KrakenSDR 的同轴电缆必须长度一致,公差应控制在 1 厘米以内。如果电缆长度存在差异,将会导致测向失败

    您所使用的频率越高,对天线位置精度和电缆长度一致性的要求就越严格。例如:

    • 800 MHz 时,1 cm 的电缆长度差异可导致阵列各天线之间出现 高达 14 度 的相位失真;
    • 400 MHz 时,同样的 1 cm 差异会产生约 7 度 的相位失真。

    需要注意的是,这种相位失真仅发生在天线阵元之间,并不会直接等同于测向角度的误差,但它仍会对系统测向性能产生显著影响。

    因此,在搭建天线阵列时,保持电缆长度的一致性和布局的对称性至关重要

    天线阵列布置建议

    车载应用

    在车辆上进行测向时,天线阵列应安装在车顶,尽可能远离任何可能阻挡信号的物体。理想情况下,应移除如行李架等可能遮挡天线的部件,以减少干扰。

    固定站点

    在固定站点部署时,应尽量将天线阵列安装在尽可能高的位置,远离障碍物。附近的障碍物(如其他天线、铁杆、屋顶等)可能引起多径效应或信号折射,从而扭曲信号的入射角度,导致测向结果不准确。

    同轴电缆布线建议

    无论是车载还是固定站点,同轴电缆应布置整齐,尽可能朝同一方向敷设,并使用扎带捆绑在一起。这种规范的布线方式可确保所有电缆在弯曲时产生的相位失真保持一致,从而减小误差。

    多阵列干扰问题

    有些固定阵列(如 Arrow Antennas 提供的阵列)设计了可供不同半径使用的多个天线孔位。请注意:一次只能使用一组指定的天线元素。如果同时安装了多个(未使用的)天线元件,这些多余元件会对信号产生阻挡、反射和折射,从而严重扭曲系统对信号方向的判断结果

    多阵列系统的部署建议

    如果必须同时部署多个天线阵列,应采用以下两种方式之一以避免相互干扰:

    • 水平分隔:将多个阵列相距较远水平布置;
    • 垂直分层:例如将小型阵列堆叠在大型阵列上方,以充分拉开空间距离。

    正确的天线布置和空间隔离是确保测向系统性能的关键。

    伸缩天线长度说明

    以下是我们 KrakenTenna 天线套装的可用频率范围。这些天线为相对宽带设计,其工作特性并不完全等同于传统的 1/4 波长接地天线

    注意:我们从最底部(最粗)的段开始计量。
    最细、最顶部的那段是第 7 段,最粗、最底部的是第 1 段

    这些频率范围是基于在**金属接地面(例如车顶)**上放置天线时的 SWR(驻波比)测量结果得出的。若没有合适的接地面,性能和频率响应可能会有所不同。

    如果您使用的频率没有出现在下表中,请选择与该频率最接近的段数进行伸展。例如:

    • 对于 161 MHz,可选择 拉出三段天线使用。

    这种方式可大致匹配天线长度与频率,实现较优的驻波比表现。

    扩展频率范围 (MHz)
    0440 – 1050
    1366 – 950
    2330 – 1000
    3145 – 158, 290 – 420, 612 – 1050
    4140 – 156, 270 – 360, 595 – 1030
    5135 – 155, 250 – 330, 520 – 1050
    6130 – 150, 240 – 290, 460 – 1050
    7127 – 150, 235 – 282, 450 – 1050

    外部射频组件注意事项

    请注意,任何置于射频链路中的外部组件(如开关、LNA 放大器、滤波器等)都可能对天线信号产生相位失真,从而导致测向结果不准确。

    建议在使用前进行实验室测试,以确认所使用的组件是否会引入不可忽略的相位偏差。

    一般来说:

    • 普通滤波器通常引起的相位失真可以忽略不计;
    • LNA(低噪声放大器)只要每个通道使用的型号完全一致,且使用了相同的连接器和适配器,通常仅会带来轻微的失真。

    在测向系统中,确保 每一路天线通道使用的射频组件完全一致 是保证系统性能的关键之一。

    天线选择

    如前所述,您最有可能选择使用磁吸式鞭状天线偶极子天线

    • 磁吸式鞭状天线非常适用于车辆环境。
    • 在选择天线时,请确保其具备良好的接地性能,即具有直接接地或电容耦合的接地平面连接,以获得最佳性能。

    许多廉价的磁吸天线底座存在接地不良,甚至完全没有接地连接,会严重影响测向效果。

    此外,正如上文所述,如果天线的同轴电缆是固定连接在天线底座上的,也需要特别关注电缆长度的一致性容差,以避免因长度不一致引起的相位误差。

    KrakenSDR 测向天线套装

    如果您订购了 KrakenSDR 的 5 根天线套装,则需要进行简单的组装。操作步骤如下:

    1. SMA T 型连接器 拧到天线底座上;
    2. 再将 伸缩鞭状天线 拧到 T 型连接器上;
    3. 最后连接附带的同轴电缆

    接下来,您需要根据目标频率调整鞭状天线的长度
    在正常情况下,鞭状天线的长度应设为目标频率波长的 四分之一,以获得最佳接收效果。

    当然,如果您是在车辆上安装天线,出于安全考虑,不建议将天线拉得过长。在大多数情况下,即使鞭长略短于理想长度,系统性能也依然可以接受。

    分辨精度理论

    如果某个系统的分辨精度为 10 度,那么我们可以理解为:实际的信号方向落在一个 10 度宽的扇形范围内。
    下面我们简要说明一个五单元阵列系统在理想条件下可能达到的角度分辨率的理论基础。

    理论精度估算

    • 对于一个 5 元圆形阵列,当阵元间距为 0.5λ 时,理论上可以获得约 8 度 的分辨率;
    • 对于一个 5 元线性阵列,在同样的 0.5λ 间距下,理论分辨率可达到 约 3.4 度

    注意:以上是最理想条件下的分辨率,并不考虑多径等外部干扰。在实际测向中,由于来自多个地点的读数可以相互平均,所以小范围的误差通常可以被消除,几乎不会影响整体定位效果。

    使用 Rayleigh 公式计算分辨率

    我们采用物理学中的 Rayleigh 分辨率公式 来估算误差:

    圆形阵列计算示例(n=5,s=0.5):

    线性阵列计算示例(n=5,s=0.5):

    使用超分辨率算法(如 MUSIC)

    由于 KrakenSDR 使用了类似 MUSIC(多信号分类)超分辨率算法,可将 Rayleigh 分辨率大约提高一个数量级(×10):

    结论:在使用 5 元阵列、0.5λ 间距、并结合 MUSIC 等超分辨率算法的前提下,KrakenSDR 系统可实现约 8.3°(圆形)3.4°(线性) 的方向分辨率。

    相关文章

    KRAKENSDR产品介绍

    什么是 KrakenSDR?

    KrakenSDR测向背景理论

    KrakenSDR 天线阵列设置