我正在使用一个系统,我从1KHz的传感器(陀螺仪)获取数据。
我要做的是确定系统何时振动,以便我可以调低输出上的PID增益。
我目前拥有的是传入值的高通滤波器。然后我将alpha值设置为1/64,我相信应该过滤大约10KHz的频率。然后,我接受这个值,然后如果它是高于阈值的个体则进行积分。当我的积分值超过另一个阈值时,我假设系统正在振动。我还每半秒重置一次积分值,以确保它只是朝着阈值增长
我试图用这个系统做的是确保它真的是振动而没有看到震动。我试图用一个上限来计算积分值的上限,但这并没有真正起作用。
我正在寻找的是更好的方法来检测系统是否在振动,而不是受到震动的影响,我的主要问题是我不会错过检测到振动的震动因为那样会导致PID的值不必要地降低。
答案 0 :(得分:1)
FFT。它将振动中的“颠簸”分开,因为颠簸将在所有频率上记录,并且振动将在特定频率附近尖峰。
答案 1 :(得分:0)
我同意上述内容。快速傅里叶变换有许多免费的在线可用算法。如果您不熟悉FFT,则可以定义a之间的关系 在时域中的功能及其在频域中的表示,启用 分析原始函数的频率内容。这将使您能够确定信号或时间序列中是否存在任何噪声或振荡行为。
您可以用来确定您的时间序列是否具有潜在周期性的另一种方法是结构函数(结构函数分析)。结构函数分析提供了一种量化信号中时间变化的方法,而没有使用传统FFT技术遇到的混叠或窗口问题。它可能能够提供导致变化的过程性质的信息。该方法主要涉及潜在噪声过程的分类和相关时间尺度的识别。这是一个相当简单的算法,您可以自己编写。
更进一步,更加“时髦”将是使用小波变换。傅立叶分析是一种非常强大的工具,用于检测和量化时间序列中的周期性振荡;这是真正恒定周期,相位和幅度的信号。然而,真实系统几乎从未表现出这种一致的行为;周期性振荡经常间歇性地产生为瞬态现象。虽然傅里叶分析可以在某种程度上检测和量化这种瞬态行为,但它远非理想用于此类目的。已经开发了小波分析来克服这些困难。有关一些源代码和有关小波的更多信息,请参阅http://atoc.colorado.edu/research/wavelets/software.html。