惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Stack Overflow Blog
Stack Overflow Blog
量子位
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
Recent Announcements
Recent Announcements
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Security Blog
Microsoft Security Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
J
Java Code Geeks
V
V2EX
大猫的无限游戏
大猫的无限游戏
D
DataBreaches.Net
博客园 - Franky
爱范儿
爱范儿
T
Tailwind CSS Blog
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
博客园_首页
B
Blog RSS Feed
博客园 - 司徒正美
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - beautifulzzzz

[SDR] OFDM 收发,3 min 搞定通信学生的毕业设计 [SDR] OFDM RX 详解 [SDR] 两种方法可视化"打"飞机:ADS-B 信号接收与航班追踪 [SDR] 基于两个 hackrf 实现连续波测速雷达 [深度学习] 超长文,一篇讲完 NVIDIA Jetson Hello AI World 全部教程(推理 & 训练) [SDR] 蓝牙专项教程 —— 从 0 到 1 教小白基于 SDR 编写蓝牙协议栈 [SDR] GNU Radio 系列教程 —— GNU Radio RX PDU (接收据包操作)的基础知识(超全) [SDR] GNU Radio 系列教程 —— GNU Radio TX PDU (发送数据包操作)的基础知识(超全) [SDR] GNU Radio 系列教程(十五)—— GNU Radio GFSK 模块 [SDR] SDR 教程实战 —— 利用 GNU Radio + HackRF 手把手深入了解蓝牙协议栈(从电磁波 -> 01数据流 -> 蓝牙数据包) [SDR] GNU Radio 系列教程(十四) —— GNU Radio 低阶到高阶用法的分水岭 ZMQ 的使用详解 [Pyhton] SimPy 离散事件模拟框架详解 —— 以一个简单的汽车充电排队模拟为例 [SDR] GNU Radio 系列教程(二) —— 绘制第一个信号分析流程图 [SDR] GNU Radio 系列教程(一) —— 什么是 GNU Radio [Linux] 如何在 Linux 电脑上制作专业的视频教程 [LINUX] 像电影里的黑客一样用 terminal 作为日常开发 [python][flask] Flask 图片上传与下载例子(支持漂亮的拖拽上传) [python][flask] Flask 入门(以一个博客后台为例) [python][flask] Jinja 模板入门
[SDR] USRP 双通道与 MIMO 技术:手搓 1 发 2 收 AOA 阵列定...
beautifulzzzz · 2025-12-19 · via 博客园 - beautifulzzzz


效果展示

系列项目主页:https://beautifulzzzz.com/gnuradio/

一、项目概览与实验目标

1.1 🛠️ 项目背景:软件定义无线电 (SDR) 测向基础

本次实验旨在利用 软件定义无线电 (SDR) 硬件平台,特别是 Ettus Research USRP B210,来探索多通道接收系统的核心特性,并将其应用于基础的信号测向技术

信号测向,如到达角 (Angle of Arrival, AOA) 定位,是无线电监测、雷达和通信定位系统中的关键技术。它的实现高度依赖于多天线阵列接收通道间的相位关系的精确测量与控制。

1.2 实验目的

本系列实验分为两个主要目标:

  1. B210 双收通道相位特性分析与校准:

    • 验证 B210 硬件在双路同时接收(MIMO-RX)时,由于共用时钟带来的相位差的稳定性和可预测性
    • 掌握在 GNU Radio Companion (GRC) 中,使用复数共轭相乘等标准 DSP 方法,对双路接收信号的固有相位差进行实时测量与校准的技术。
  2. 基于双通道的到达角 (AOA) 定位原理演示:

    • 理解 AOA 技术中信号入射角天线间距接收相位差之间的几何和数学关系。
    • 通过实际操作,演示如何通过改变信号源的相对位置,观察并利用测量到的实时相位差,来验证 AOA 测向的基本原理。

1.3 💻 硬件与软件环境

  • SDR 接收设备: Ettus Research USRP B210 (具备双路接收能力)。
  • SDR 发射设备 (信号源): Great Scott Gadgets HackRF One (作为稳定的窄带信号发射源)。
  • 软件环境: Docker 容器化的 Ubuntu 环境,预装 GNU Radio 3.10 及 UHD 驱动。

二、启动 Docker 并准备环境

按照之前的流程,正常启动专为 B210 开发准备的 docker 环境:

systemctl start  docker
xhost -                 # 清理旧的 xhost 设置
xhost +local:docker     # 授予特定的 xhost 访问权限
docker run -it --rm \
    --net=host \
    -e DISPLAY=$DISPLAY \
    -v /tmp/.X11-unix:/tmp/.X11-unix \
    -v /dev/bus/usb/:/dev/bus/usb/ \
    -v /home/btfz/Desktop/B210:/home/gnuradio/B210 \
    --privileged \
    --group-add=audio \
    ubuntu:gnuradio-310 bash
zsh
export UHD_IMAGES_DIR=/home/gnuradio/B210/B210_images/  
uhd_find_devices

由于本案例会用到 hackrf,因此下面是准备 hackrf 环境的操作:

sudo apt install usbutils
➜  ~ lsusb
Bus 001 Device 008: ID 1d50:6089 OpenMoko, Inc. Great Scott Gadgets HackRF One SDR
Bus 003 Device 003: ID 2500:0020 Ettus Research LLC USRP B210

sudo chmod 666 /dev/bus/usb/001/008
hackrf_info 

三、实验一:B210 双收相位差实时校准

3.1 物理基础

B210 的硬件特性导致其双路同时接收时相位差是稳定可预测的:两个射频通路的关键在于它们共用一个主时钟 (Reference Clock),这个时钟确保了两个通道的采样操作是同步的。即使使用共同时钟,由于射频电缆长度、滤波器和放大器组件的温度差异,两个通道的起始相位可能存在一个固定的、非零的偏差。

我们实验一就是使用一个 hackrf 的一个通道作为发,一个 B210 的两个通道作为收,来观察相位差的可预测性。并且在此基础上利用巧妙的数学原理实现相位差实时纠正


3.2 数学基础

我们在 GNU Radio 中计算两个复数信号 \(S_1\)\(S_2\) 的相位差 \(\Delta\phi = \phi_1 - \phi_2\),最优雅且标准的 DSP 方法是:

1)复数共轭相乘 (Complex Conjugate Multiplication)。

将其中一个信号(例如 \(S_2\))取共轭,然后与另一个信号 \(S_1\) 相乘。

  • 数学原理:
    假设 \(S_1 = A_1 e^{j\phi_1}\)\(S_2 = A_2 e^{j\phi_2}\)

    \[\text{Result} = S_1 \times S_2^* \]

    \[\text{Result} = (A_1 e^{j\phi_1}) \times (A_2 e^{-j\phi_2}) \]

    \[\text{Result} = (A_1 A_2) e^{j(\phi_1 - \phi_2)} \]

  • 结果: 得到的复数结果的相位就是 \(\Delta\phi = \phi_1 - \phi_2\),其幅度是两个原信号幅度的乘积。

2)提取相位角 (Argument/Phase Extraction)。

从上一步得到的复数结果中,提取出其相位角。

  • 所需模块:

    • Complex to Arg (模块分类:Math Operators)
  • 数学原理:
    该模块计算复数的反正切函数 (arctangent, \(\text{atan2}(Q, I)\)),将相位结果 \(\Delta\phi\)弧度 (Radians) 为单位输出。通常范围是 \([-\pi, \pi]\)


3.3 实验效果

我们的流程图实现了 B210 第一路接收向第二路接收的相位纠正,因此在 time sink 图中可以清晰看到 signal3(第二路接收) 和 signal5(相位纠正后的信号) 实现相位同步。

并且我们应一个独立的 time sink 展示实时的相位差(已经转换为度数)。我们会发现:当我们调节发送基带数据的频率、发射功率时该相位差没有明显变化:

备注:这里仍然有一些小波动,可能是温度漂移 (Thermal Drift)本振噪声 (LO Noise) 等因素引起,属于合理范围。