在工作中,我们运行一个物理模拟器(视频游戏),它在 360 Hz 的内部循环中运行。来自该内部循环的数据每秒收集 60 次,然后发送到硬件(力反馈方向盘),以便播放给用户。
我对这个系统有两个问题。
首先,将 360 Hz 数据抽取到 60 Hz 的最佳方法是什么。现在我们对 6 个样本进行直接平均,但我怀疑这会导致数据出现一些混叠,而且我们对高频噪声非常敏感。我们对延迟也非常敏感,即使添加 4 个延迟样本(在 60 Hz 循环中)也会导致屏幕显示和用户会选择的力反馈设备之间出现明显的延迟。
其次,硬件(方向盘)通常具有非常差的容差,并且通常很难在信号显着劣化之前播放高于约 20 Hz 的数据。将 360 Hz 数据低通滤波至 20 Hz 或将 60 Hz 数据低通至 20 Hz 会更好吗?处理此问题的最有效方法是什么。
我目前有一个单极 IIR 滤波器,您可以选择在 60 Hz 信号上定义它,这确实可以平滑数据,并增加相当多的延迟。混合小于 0.20 的当前样本会导致车轮出现奇怪的断开感,因此这是我的下限。我会假设使用更复杂的滤波器会给我带来更快的衰减,并且既可以消除轮中的高频颤动和噪声,又不会增加超过 4 个样本(66 毫秒)的延迟
我已经完成了 Steven W. Smith 的书“数字信号处理的科学家和工程师指南”的一半,所以我对 DSP 的了解有限。我在 2D 图像处理方面确实有 20 多年的编程经验,所以我一直在使用 dsp,但不知道它们是什么。关键是我可怜的头脑很容易:)
我还应该指出,60 Hz 循环是“实时”运行的,它与 PC 时钟同步,并且与轮子的所有通信也是实时的,但是内部循环每秒处理 60 次,并且有无法以高于 60 Hz 的速率访问内部循环数据。