#filter #signal-processing #computer-vision #aerospace

音调管

音调管是一种自动调谐一个欧元滤波器的方法

3个版本

0.1.2 2024年4月13日
0.1.1 2024年4月13日
0.1.0 2024年4月13日

#228 in 数学

MIT许可证

2MB
26K SLoC

Maintenance MIT licensed Released API docs

** 目前请不要使用此CRATE**

经过大量测试,似乎它未能满足用户设定的所需延迟要求,并且过度平滑了数据。我只能假设父仓库的60赫兹表不适合所有60赫兹信号,或者研究数据是伪造的。请不要像我所做的那样浪费这么多时间。如果我能解决这个问题,我会更新它。

音调管

这是音调管的Rust移植。发明音调管的原研究人员提供了一个JavaScript样本仓库,本移植是从该仓库移植的。

原始仓库在此

从他们的README中

音调管是一种基于特定上下文信息的自定义低通滤波器校准技术,它根据最佳参数进行搜索。因此,音调管需要三个输入:用于导出相关特性的信号、用于校准的低通滤波器以及特定应用的标准来优化,即精度和延迟。从输入设备信号中,音调管提取噪声和最大用户速度估计值,我们使用这些值来生成合成噪声和边缘模式。然后,音调管在滤波器的参数空间上执行网格搜索,评估其在指定合成数据上的性能。最后,音调管输出最佳参数集,该参数集符合特定应用的标准。因此,音调管内部包含三个步骤,即估计噪声、估计最大用户速度和优化参数集。

注意事项

该代码主要从父仓库1:1移植,做了一些修改

  1. 此代码设计用于处理三个轴而不是两个,即x、y和z轴。这样做是因为我个人使用这个程序来调整一个欧元滤波器,该滤波器用于平滑三个轴上的加速度计数据。
  2. 原始实现涉及一个包含状态转换的大校准函数/对象,并在开始时将许多值初始化为null。我最初以这种方式移植它,并意识到这会产生脆弱的代码,如果每个阶段没有正确实例化,我们可能会陷入非常奇怪的地方。我改用构建者模式重构它,使得每个校准阶段都很清晰,并尽可能减少可选值。
  3. 您会注意到一个用于计算精度的硬编码表格。我在原始仓库中询问了这个问题,被告知:“这是一个表示60Hz数据滤波器参数空间的网格。它涵盖了抖动、截止频率和beta的固定值范围。我相信这应该能够使参数适用于任何60Hz信号。”我目前正在尝试弄清楚如何为其他频率生成这样的网格。目前,这意味着这个移植,就像它所移植的父级一样,仅支持60Hz信号。如果您知道如何使其更通用,请提交一个PR。

研究论文

音高管论文

依赖项