FMCW雷达图书馆

fmcw的Python项目详细描述


fmcw

基于Henrik Forstén/@Ttl的初始和正在进行的工作。 在Read The Docs

一般性

版本惯例

版本具有以下格式的版本号: x.yyy.zzz

  • X是硬件版本。
  • yyy是发布版本
  • zzz是次更新版本

历史

fmcw软件包是一个库,旨在与henrik forstén/@Ttl的fmcw雷达进行高层交互。如果你不熟悉它,可以先看看亨里克在《雷达》第三版上的博客文章: FMCW 3

有关这种雷达的更多信息,您还可以查看henrik以前写的博客文章。这些旧的雷达与这个库不兼容,但可以帮助揭示雷达理论和项目历史:

此外,Henrik的FMCW项目也在一些文章中介绍过。例如:

哪里可以买到FMCW3?

简而言之:你必须自己做。

更长的答案:到目前为止,似乎只制作了一些董事会,所有这些董事会都是基于henrik在github存储库中上传的文件。 如果您计划建造一个,请确保:

  1. 正确的硬件来放置部件并回流它们
  2. 前面200小时+(^ {STR 1 } $非常/强)依赖于您现有的知识)
  3. 约500美元

当然,这些都是大拇指的规则,不应该被视为表面价值。

我有FMCW3,下一步该怎么办?

恭喜你!有两个主要选项:

  1. 您可以根据库编写自己的脚本。由于文档落后于我编写的代码,这一点预计很难实现。
  2. 你重复使用我的最新版本作为主脚本。这是推荐的选项。

在下面的内容中,我将描述如何使用带有190830_rt_fmcw3.py的库,该库是随3.1.zzz版本上传的。

流程说明

脚本正在执行四项主要任务:

  1. 从fpga读取数据
  2. 处理数据
  3. 将数据保存到文件中
  4. 实时显示数据

架构

一幅画胜过千言万语,下面是一幅示意图: Architecture

从fpga读取数据

这一步不如听起来简单,原因很简单:fpga是一个实时芯片,而其他一切(usb端口、笔记本电脑上的操作系统、python……)都不是。因此,fpga输出的数据是固定间隔的,如果链下的任何东西还没有准备好接收它,ftdi芯片上的4kb缓冲区将很快溢出并被覆盖。到目前为止,我还没有找到解决这个问题的灵丹妙药,只能设法缓解它。

有关详细信息,请参见此处: Stack Overflow

处理数据

从现场可编程门阵列来的数据被解析以在扫描中分离出来。然后处理有效的扫描,以便实时显示3种类型的图表。无效扫描(大多数情况下,由于USB总线上的字节丢失而导致扫描不完整)归零并按原样显示。

将数据保存到文件

线程用于将数据写入文件。主进程总共生成三个线程:

  1. 一个用于将设置写入文件。请注意,它在写入文件后立即关闭。
  2. 一个用于将原始字节数据写入文本文件。
  3. 一个用于将处理过的数据写入csv文件。

实时显示数据

主脚本提供了实时显示数据的选项。但不存在完美的实时性:总是有滞后的。根据处理前一次从USB端口读取的扫描次数以及这些扫描的时间,延迟可能会增加sed或reduced。 在默认设置下,延迟为几百毫秒。

考虑到刷新一个可能有上万像素的绘图所需的工作量,刷新率在大多数笔记本电脑上也受到严重限制。尽管在更新情节并保持每个情节在单独的子过程中最小化元素的刷新量,10赫兹似乎是在我的CPU上的最大刷新率(I7—8565U)。

下面是显示的绘图的几个示例: IF signalAngle plotRange time plot

技术考虑因素

批处理

下面是如何处理一批数据的快速描述。 Batch processing 感觉这很神秘?它是。 简而言之,重点是尽可能减少脚本的非实时性。它不是完美的,有些数据会丢失,但现在丢失的数据不到5%。 如果你想学更多,就找我。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用反射访问class字段类型的class变量?   swing Java:强制JFileChooser到一个目录及其子文件夹   java当我试图在maven项目中使用@ResController时,它显示错误“RestController无法解析为类型”。帮我解决这个问题   java为什么我的数字不在数组中记录和打印?   java如何将字符串参数传递给函数?   如何在java中高效地将标准输出继承到子进程?   java Eclipse,在Project Explorer视图中拥有文件属性的TreeViewer   java H2:无法从jar中的sql文件初始化DB架构   java Dispose窗口而不关闭整个程序   java专用模块和/或提供程序的简单使用   java Hibernate为下一个序列提取第二个上一个id值   调整屏幕大小时java JavaFX调整画布大小   java StringIndexOutOfBound异常   反射如何动态创建新的。java程序中的java文件?   java如何实现“带映射的Setter注入”   java如何使Spring控制器在传输所有请求主体(并将主体作为流处理)之前被调用?   java返回并持久化LinkedHashMap,而不是JPA实体中的Map   java默认情况下,时间戳是否显示在HBase表中?