bareboat-necessities / bbn-wave-period-esp32

Estimate ocean wave height (or vessel heave) and period from vertical acceleration using IMU on esp32
MIT License
24 stars 2 forks source link

Aranovskiy filter alternative #5

Open mgrouch opened 2 weeks ago

mgrouch commented 2 weeks ago

Consider another frequency tracking filter such as KalmANF

https://github.com/randyaliased/KalmANF

Based on

R. Ali, T. van Waterschoot, "A frequency tracker based on a Kalman filter update of a single parameter adaptive notch filter", accepted for Proceedings of the 26th International Conference on Digital Audio Effects (DAFx23), Copenhagen, Denmark, September 2023.

mgrouch commented 1 week ago

Somehow that implementation of KalmANF filter doesn't converge for me in presence of gaussian noise even though it's model assumes that the noise is present.

See:

https://github.com/randyaliased/KalmANF/issues/2

mgrouch commented 1 week ago

There are many other options

pitch tracking algorithms like YIN, autocorrelation

Algorithm need to be able to tolerate noise and presence of multiple harmonics. Provide faster convergence. Theoretically fastest convergence would still require sampling of at least two wave periods.

Some links:

https://github.com/alesgenova/pitch-detection

Todo: more links