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 ×× 的相关文章

随机推荐

  • 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 引起该问题的原因还有可能是接