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存储库中上传的文件。 如果您计划建造一个,请确保:
- 正确的硬件来放置部件并回流它们
- 前面200小时+(^ {STR 1 } $非常/强)依赖于您现有的知识)
- 约500美元
当然,这些都是大拇指的规则,不应该被视为表面价值。
我有FMCW3,下一步该怎么办?
恭喜你!有两个主要选项:
- 您可以根据库编写自己的脚本。由于文档落后于我编写的代码,这一点预计很难实现。
- 你重复使用我的最新版本作为主脚本。这是推荐的选项。
在下面的内容中,我将描述如何使用带有190830_rt_fmcw3.py的库,该库是随3.1.zzz版本上传的。
流程说明
脚本正在执行四项主要任务:
- 从fpga读取数据
- 处理数据
- 将数据保存到文件中
- 实时显示数据
架构
一幅画胜过千言万语,下面是一幅示意图:
从fpga读取数据
这一步不如听起来简单,原因很简单:fpga是一个实时芯片,而其他一切(usb端口、笔记本电脑上的操作系统、python……)都不是。因此,fpga输出的数据是固定间隔的,如果链下的任何东西还没有准备好接收它,ftdi芯片上的4kb缓冲区将很快溢出并被覆盖。到目前为止,我还没有找到解决这个问题的灵丹妙药,只能设法缓解它。
有关详细信息,请参见此处: Stack Overflow
处理数据
从现场可编程门阵列来的数据被解析以在扫描中分离出来。然后处理有效的扫描,以便实时显示3种类型的图表。无效扫描(大多数情况下,由于USB总线上的字节丢失而导致扫描不完整)归零并按原样显示。
将数据保存到文件
线程用于将数据写入文件。主进程总共生成三个线程:
- 一个用于将设置写入文件。请注意,它在写入文件后立即关闭。
- 一个用于将原始字节数据写入文本文件。
- 一个用于将处理过的数据写入csv文件。
实时显示数据
主脚本提供了实时显示数据的选项。但不存在完美的实时性:总是有滞后的。根据处理前一次从USB端口读取的扫描次数以及这些扫描的时间,延迟可能会增加sed或reduced。 在默认设置下,延迟为几百毫秒。
考虑到刷新一个可能有上万像素的绘图所需的工作量,刷新率在大多数笔记本电脑上也受到严重限制。尽管在更新情节并保持每个情节在单独的子过程中最小化元素的刷新量,10赫兹似乎是在我的CPU上的最大刷新率(I7—8565U)。
下面是显示的绘图的几个示例:
技术考虑因素
批处理
下面是如何处理一批数据的快速描述。 感觉这很神秘?它是。 简而言之,重点是尽可能减少脚本的非实时性。它不是完美的,有些数据会丢失,但现在丢失的数据不到5%。 如果你想学更多,就找我。