GNURadio中运行ofdm_rx报错:gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item ××

2023-05-16

修改方法:减小发送端的乘数因子。

但是本着知其然还要知其所以然的学习态度,下面就解释下出现这种现象的原因:

2021.10.28 更新:

在实际的测试中发现,引起该问题的原因还有可能是接收信号解调失败,导致头信息(header_data)解析失败,进而无法知道帧长度等信息。这时就要考虑信道环境、解调算法等因素的影响了。

最近在尝试运行并修改 GNU Radio 中的 OFDM 例程,先尝试做一个文本传输的demo。

(位置 gnuradio/gr-digital/examples/ofdm)。

首先将官方例程 ofdm_tx 中的 OFDM_ReceiverUHD:USRP Sink 来替代。将 ofdm_rx 中的 OFDM_TransmitterUHD:USRP Source 来替代。并修改数据来源为一个 txt 文件。USRP一些参数设置如下:

发送端
接受端

 由于是在做水声通信的测试前准备,因此频率都为khz级别的,这时就无法使用天线进行传输,所以使用SMA线直连的方式进行测试。使用两台 X310+LFTX/LFRX 来做测试。刚开始,发射端数据发送一切正常,但是在接收端却出现了以下错误信息

gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 0
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 48
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 96
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 144
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 192
gr::log :INFO: header_payload_demux0 - Parser returned #f
gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item 240
gr::log :INFO: header_payload_demux0 - Parser returned #f
......

仔细看下报错信息,应该是在 OFDM 代码中 header 数据的解析出现了问题,即以下模块:

 这问题看起来像是源代码中的断言代码输出的 log,因此查看一下 Packet Header Parser 块的源码,发现其出错地如下:

。。。。。。
    if (!d_header_formatter->header_parser(in, tags)) {
        GR_LOG_INFO(d_logger,
                    boost::format("Detected an invalid packet at item %1%") %
                        nitems_read(0));
        message_port_pub(d_port, pmt::PMT_F);
    } else {
        pmt::pmt_t dict(pmt::make_dict());
        for (unsigned i = 0; i < tags.size(); i++) {
            dict = pmt::dict_add(dict, tags[i].key, tags[i].value);
        }
        message_port_pub(d_port, dict);
    }
。。。。。。

代码中 d_header_formatter->header_parser(in, tags) 的作用是解析输入端口 in 中的数据并作为 tag 写入到 tags 中,解析成功就返回 ture,否则返回 false。看到这里,显然表明了上面报错是由于 header 数据的解析出现了问题。因此下面开始反思包头解析怎么就出问题了?按理说不应该呀,我直接那SMA线把两台 X310 的发送接收端口连起来接受数据的,首先就可以排除噪音太大带来的影响。那也没道理了。。排除了信道的影响,就只剩下自身的原因了。一通 google 下来(这时候就别指望baidu了。。),终于在一个回答中发现了一丝希望:

这么说的意思就是:在发送端最终数据进入 UHD:USRP Sink 前有一个 Multiply Const 模块:

通过调整该乘数因子的大小就可以控制发送信号的幅值大小,而我这种情况可能就是乘数因子太大的缘故,导致输出信号被限幅了(LFRX/LFTX子板信号限幅[-1, 1]v),这样就导致了发送信号的严重失真,接收端自然就解析不出来了。于是我直接减小乘数因子为 0.008(8m),之后在进行测试,问题完美解决!顺利与 usrp 世界进行了 hello world,哈哈哈哈哈哈哈

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GNURadio中运行ofdm_rx报错:gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item ×× 的相关文章

  • Cisco Packet Tracer模拟器使用

    第一篇 熟悉界面 一 设备的选择与连接 在界面的左下角一块区域 xff0c 这里有许多种类的硬件设备 xff0c 从左至右 xff0c 从上到下依次为路由器 交换机 集线器 无线设备 设备之间的连线 xff08 Connections xf
  • 【mmdetection 】analyze_logs.py等工具测试

    绘制一些运行的分类损失 python tools analyze logs py plot curve work dirs faster rcnn r50 fpn 1x 20200306 175509 log json keys loss
  • 星星之火-36:LTE载波载波的间隔是15K, 载波波的带宽是多少? 15K还是30K?

    先给个结论 在LTE中 单个小区最大的频谱带宽为20M 每个子载波的间隔为15K 带宽为30K 一共可以分为1200个子载波 那这个数据是怎么来得呢 15K子载波间隔的由来 如果子载波的带宽30K 那么按照频分复用FDM的规则 频谱利用率最
  • ELK 日志分析系统

    ELK 日志分析系统 2015 10 08 13 18 58 标签 elk 原创作品 允许转载 转载时请务必以超链接形式标明文章 原始出处 作者信息和本声明 否则将追究法律责任 http 467754239 blog 51cto com 4
  • 基于OFDM的水下图像传输通信系统matlab仿真

    目录 1 算法运行效果图预览 2 算法运行软件版本 3 部分核心程序 4 算法理论概述 5 算法完整程序工程 1 算法运行效果图预览 2 算法运行软件版本 matlab2022a 3 部分核心程序 function rx img func
  • mmdetection W&B 用wandb权重和偏差以进行记录

    如题 共需要修改四个文件 1 mmcv runner hooks logger init py from pavi import PaviLoggerHook from tensorboard import TensorboardLogge
  • springboot 注解实现AOP记录日志

    AOP AOP为Aspect Oriented Programming的缩写 意为 面向切面编程 通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术 在日常开发当中经常用来记录日志 方法跟踪 事务 权限等 切面方法说明 Aspe
  • c#中日志NLog配置问题

    Failed obtaining configuration for Common Logging from configuration section common logging 在配置中没有配置对 另外很有可能是NLog 的配置文件没
  • 04-Qt软件加入Log文件输出与终端彩色打印(包含行号)

    一 目的与需求 在开发qt应用程序中 经常使用打印调试软件 qt自己的qDebug 就满足了需求 但是当需要把一部分log记录到文件的时候qt就没有提供了 这个时候可以使用qDebug 的qInstallMsgHandler来指定打印回掉函
  • 如何清除 Docker 容器的日志文件

    本教程将帮助您清除 Docker 容器上的日志文件 如果您的系统磁盘空间不足 并且您发现 docker 容器的日志文件占用了大量磁盘空间 您可以在本教程的帮助下找到日志文件位置并清除它们 清除 docker 容器的日志文件时 不需要停止它
  • python pyplot logscale 画图对数

    原文来自公众号 工程师看海 事情的起因是我要在公众号 工程师看海 更新一篇文章 介绍电感 磁珠的区别 需要画阻抗 频率曲线 横坐标频率要按照log对数尺度缩放 就写了python代码 废话不多说 先看结果 公众号后台回复 python lo
  • Android Log系统介绍 (基于Android N)

    原文使用有道云笔记创作 看这个 http note youdao com noteshare id 82f88b1c82652b80c27d54aad55af035 引言 gt Android 的log 从操作系统分层上来讲 可以分为 Ke
  • scapy 数据包操作和原始 pkt.time

    我有 python scapy 和平代码将我的数据存储到数据库中 IP src 和 dst 端口 我用它来进行一些统计 在某些数据包上 我正在执行一些操作 更改目标端口 然后将它们发送回接口 问题是我正在操作的这个数据包具有与原始数据包不同
  • GNU Radio:使用声音输出作为输入源

    In gnuradio 伴侣我使用音频源块作为下一个块的输入信号 一切工作几乎都很好 唯一的小问题是我从麦克风收到信号 这是正常行为 我宁愿直接播放音频信号 而不必通过我的扬声器 我房间的空气和麦克风 所有这些都会产生信号损失并增加噪声 我
  • 从 PAT 部分 (MPEG-TS) 读取信息

    我正在编写一个 MPEG TS 文件解析器 但我一直坚持从 PAT 部分获取 program numbers 和 PID 我正在使用数据包分析器来比较我的结果 例如 这是一个 PAT 数据包 47 40 00 16 00 00 B0 31
  • 数据丢失 TCP IP C# [重复]

    这个问题在这里已经有答案了 这是我的代码 private void OnReceive IAsyncResult result NetStateObject state NetStateObject result AsyncState So
  • 从 USRP N210 设备检索数据

    N210 连接到 RF 前端 该前端使用 GNU Radio Companion 进行配置 我可以通过 FFT 图看到信号 我需要接收到的信号 usrp2 输出 作为数字 usrp sense spectrum py 也将功率和噪声地板输出
  • 如何阅读 FSM 图

    我如何获取该图并将其转换为可用的程序 我不太确定如何阅读该图 引导我完成它 也许会展示一个代码示例以及它与图表的关系 里面有文字的圆圈是州 文本描述了状态是什么 虚线箭头指向起始状态 传出箭头确定此状态可以更改的位置 箭头旁边是被线分为上半
  • 开始浏览时发送的第一个数据包

    想象一下用户坐在一台连接以太网的电脑前 他打开了浏览器 他在地址栏中输入 www google com 并按回车键 现在告诉我以太网上出现的第一个数据包是什么 我在这里找到了这个问题 Socket编程和多线程面试题 https stacko
  • TCP网络数据包什么时候会在应用层产生分片?

    TCP报文什么时候会在应用层分片 当应用程序发送 TCP 数据包时 应用程序层的接收者是否会收到两个或多个数据包中的数据包 如果是这样 什么条件会导致数据包被分割 似乎数据包在达到以太网 在网络层 1500 字节的限制之前不会被分段 但是

随机推荐

  • rosbag2csv

    1 record bag rosbag record O topic name group 2 rosbag to csv rostopic echo b bag name bag p topic name gt csv name csv
  • ubuntu18.04使用anaconda3配置yolov5

    ubuntu18 04使用anaconda3配置yolov5 1 anaconda官网下载相关的sh文件 在sh文件所在的文件夹里打开终端 使用bash命令 运行sh文件安装anaconda 在安装的过程中首先有一个确定anaconda的安
  • 无人机仿真搭建:ROS,Gazebo,SITL,MAVROS,PX4

    写在前面 最近一直在搭建无人机仿真的环境 xff0c 系统都卸载安装了很多次才安装好 xff0c 所以写下这篇博客来记录一下 xff0c 万一以后还要再搭也可以有个参考 xff0c 也可以给大家做个参考 这个是结合我自己系统来安装的 xff
  • C++ 类的构造函数之冒号初始化语法

    在实现类的时候往往需要写一个构造函数用于初始化对象 xff0c 出去一般的函数语法之外 xff0c 还有一种冒号语法 比如 xff0c 下面两种构造函数的写法近似相同 xff1a 常规方法 class A private int index
  • educoder--MapReduce基础实战各关卡通关答案

    第1关 xff1a 成绩统计 任务描述 相关知识 什么是MapReduce 如何使用MapReduce进行运算 代码解释 编程要求 测试说明 任务描述 本关任务 xff1a 使用Map Reduce计算班级中年龄最大的学生 相关知识 为了完
  • Could NOT find ddynamic_reconfigure

    下载ddynamic reconfigure的package 链接https github com pal robotics ddynamic reconfigure tree kinetic devel 解压到catkin ws src空
  • 一位工作了10年的C++程序员总结出这些忠告

    1 可以考虑先学习C 大多数时候 xff0c 我们学习语言的目的 xff0c 不是为了成为一个语言专家 xff0c 而是希望成为一个解决问题的专家 做一个有用的程序员 xff0c 做一个赚钱的程序员 我们的价值 xff0c 将体现在客户价值
  • 新手程序员必学的代码编程技巧

    程序员往往渴望加入的是一支 30 的时间在写代码 xff0c 而70 的时间在喝着咖啡讨论着如何将产品做好 的团队 软件工作应该成为一项技术和艺术融合的高智力活动 xff0c 而项目经理应该是一个高度理解质量 范围和进度客观规律的明白人 x
  • 数学之美—细数 傅里叶变换 原理

    目录 一 傅里叶级数 xff08 Fourier Series FS xff09 的实数域表示 二 傅里叶级数 xff08 Fourier Series FS xff09 的复数域表示 三 傅里叶变换 xff08 FT xff09 的引出
  • C++小知识01 —— 0、‘0’、“0”、“\0”、‘\0’、NULL和nullptr

    可能对于才学完C 的初学者来说 这些概念都很简单 但是把它们放在一起 就真的真的给整不会了 其中最容易混淆的有单引号与双引号的用法 还有NULL与nullptr的用法 下面我会依次用代码文字结合的形式给大家讲解 0 这个就很简单 它就是数字
  • 如何解决Git代码冲突?

    本文主要用的是vscode工具 1 为什么会出现代码冲突问题呢 xff1f 可以理解为就是同一时间几个人更改同一个文件 xff0c git 不知道该听谁的 xff0c 所以就报冲突 xff0c 让开发者自己去选择 xff0c 选取到底用哪个
  • 算法优化工程师

    嵌入式算法移植优化 嵌入式算法移植优化 CUDA编程 嵌入式算法移植优化 CPU GPU TPU NPU都是什么 嵌入式算法移植优化 模型压缩与剪枝 嵌入式算法移植优化 pthread 嵌入式算法移植优化 SIMD编程 xff08 单指令流
  • Elasticsearch7.8.0启动报jdk版本错误

    因为7 8 0版本自带jdk12 xff0c 就可能会出现自己linux环境下的jdk版本较低 启动时老报错 xff0c 这时候就需要干掉当前jdk xff0c 然后启动elasticsearch xff0c 让他去匹配自带的jdk 使用命
  • 2-2进程管理-处理机调度

    文章目录 一 调度的层次二 进程调度的时机 切换与过程 调度方式三 调度器 闲逛进程四 调度算法的评价指标五 调度算法 xff08 一 xff09 先来先服务SCFS xff08 二 xff09 短作业优先算法SJF xff08 三 xff
  • 百度ai开放平台使用方法(附带例子详细步骤)

    百度ai开放平台 1 百度ai开放平台内有众多功能 xff0c 如文字识别 xff0c 语音技术等等内容 xff0c 本文章以身份证识别为例子 xff0c 教大家怎么使用它啦 链接走起 xff1a https cloud baidu com
  • 树莓派4b装完系统后,外接的显示屏刚开始蓝屏,过一会就不亮了是什么原因

    有可能是显示屏的连接或设置问题 xff0c 以下是一些可能导致这种情况的原因及相应的解决方法 xff1a 1 连接问题 xff1a 请确保显示屏与树莓派4B连接的正确 xff0c 建议检查接头是否牢固 另外 xff0c 如果你是通过 HDM
  • Maven报错:The packaging for this project did not assign a file to the build arti fact

    https blog csdn net gao zhennan article details 89713407
  • YOLO-MASK对图像数据集进行清洗

    一 前情介绍 之前在捣鼓yolo系列模型 xff0c 尝试着对coco的羊数据集进行训练 xff0c 可是发现不管怎么调参 xff0c Map一直在60几 xff0c 死活上不了70 后来在一位资深老算法师的指点下 xff0c 才明白 xf
  • 进程,文件,内存简述

    1 进程 一个程序一旦在操作系统里动起来 xff0c 他就成为了一个进程 进程表 xff1a 存放有进程的运行情况以及信息 进程核 xff1a 一个时刻 xff0c 一个进程占用的所有资源 核快照 xff1a 进程在某一时刻的状态 当产生了
  • GNURadio中运行ofdm_rx报错:gr::log :INFO: packet_headerparser_b0 - Detected an invalid packet at item ××

    修改方法 xff1a 减小发送端的乘数因子 但是本着知其然还要知其所以然的学习态度 xff0c 下面就解释下出现这种现象的原因 xff1a 2021 10 28 更新 xff1a 在实际的测试中发现 xff0c 引起该问题的原因还有可能是接