vortexntnu / vortex-acoustics

Analyzes signals from the A1 hydrophones. Runs on Nucleo-F767ZI
MIT License
4 stars 3 forks source link

Design bandpass filter bank to isolate pinger pulse #69

Open nicbres opened 2 years ago

nicbres commented 2 years ago

Description: In Robosub a section of the competition will have its assigned pinger frequency (check section 9.5). To isolate this pinger frequency and remove unnecessary noise we should use digital bandpass filters. The idea is to design a filter bank that contains filter coefficients for all the possible center frequencies, to be able to easily switch to new center frequencies.

  1. Research filter capabilities of Teensy: e.g., are DSP libraries available, hardware support, etc?
  2. Design bandpass filters accordingly. E.g., by using Matlab Filter Designer or similar tools
nicbres commented 2 years ago

@ingar-eh I just had a thought going through my mind. So with 500kHz sampling rate the "full" nyquist spectrum would be 0-250kHz. A filter that has a center frequency fc and cutoff frequencies at fc +/- 1kHz might not actually be feasible with a reasonable amount of delays / taps / coefficients. This is because of a really narrow pass band and having to create quite steep flanks to reach the desired attenuation for the cutoff-frequencies.

Probably best to try around with filterDesigner in Matlab. And if not feasible we have to think about something else.

nicbres commented 2 years ago

Apparently there is already a filter implementation that was used on the STM https://github.com/vortexntnu/acoustics/blob/master/Source/analyze_data.cpp . I totally forgot about that. You can possibly use this to align with.

ingar-eh commented 2 years ago

It looks like an IIR-filter, is that something we want to completely avoid? @nicbres