Wat je schrijft over het voorkomen van fasefouten heb ik meermaals gelezen, maar het is mij tot je laatste bericht onduidelijk gebleven wat je daar precies mee bedoelde:
- het aanwezig zijn van jitter in de klok, of
- het niet synchroon inlezen de verschillende berichten (door verschil in lengte van de NMEA zinnen/een multiplexer die de vaste volgorde waarmee de verschillende zinnen worden uitgespuugt om zeep helpt, of
- de onnauwkeurigheid (in het tijdsdomein) waarmee je het eerst volgende nieuwe sample corrigeert door de geschatte fase van het te corrigeren signaal
Gezien je laatste post doel je op de eerste 2 punten?
Anyway misschien is er ook wel wat verwarring ontstaan omdat we (beide denk ik) niet dagelijks in dit vakgebied werkzaam zijn en onze eigen beeldvorming bij de gebruikte termen hebben. Geeft niets denk ik...
Ben de afgelopen tijd aan het lezen, nadenken en pielen geweest over die filtering. Wanneer wil je dat wel/niet doen en welke mogelijkheden zijn er. Filteren heeft tot doel de hoeveelheid ongewenste informatie in het signaal te onderdrukken omdat dit zowel de weergave als de performance berekeningen onrustiger maken. Je wilt ook weer niet te zwaar filteren, omdat dit ook informatie onderdrukt die wél nuttig kan zijn. Slim, opmaat filteren dus...
Ik heb onderstaande ideeën bekeken en op testdata uitgewerkt. Handmatig in Excel voorlopig nog...
- Correctie op basis van een verstoringsmodel;
- Correctie in het tijdsdomein op basis van een on-line statistische signaal analyse;
- Adaptief filteren in het frequentiedomein op basis van eenzelfde analyse;
- Niet-adaptief filteren met een vast ingesteld filter
1. Correctie op basis van een verstoringsmodel
Hierbij wordt het verstoringsmodel gebruikt worden om de invloed van een
gemeten verstoring te gebruikern om de verstoorde meting te corrigeren. Het verstoringsmodel moet geldig zijn onder alle omstandigheden en dient geïdentificeerd te kunnen worden. Deze methode kan alleen real-time gebruik worden indien het verstoringsmodel "kleiner" is (snellere dynamica bevat) als het systeem (boot+mast).
Het eerdere experiment van de "mast motion correctie" is een voorbeeld hiervan: een simpel fysisch model (zonder dynamica in dit geval) blijkt in staat (in ieder geval tijdens dít experiment) de verstoringsinvloed te beschrijven.
Als dit "perfect" zou lukken zijn geen andere vormen van filtering nodig. Dat is in de praktijk nooit zo...
2. Correctie in het tijdsdomein
Deze methode gaat er vanuit dat de (in dit geval
niet gemeten) verstoringen een bepaald patroon hebben waarmee ze doorwerken in de te corrigeren meting. In het geval van mijn slinger-experiment en 3Noreen's golven is dat het geval. Hierbij wordt continue (of zover er processorkracht is) een FFT analyse uitgevoerd in een window van de laatste n samples. Hieruit volgt de meest recente schatting van de frequentie van de typische verstoring. Omdat de FFT geen idee heeft of een repeterende signaal component een verstoring is of niet, zal de FFT handmatig een aantal randvoorwaarden moeten worden meegegeven. Als je bijvoorbeeld weet dat een typische golfpatroon een periode tussen 4 en 8 seconden heeft, zou je de FFT kunnen beperken.
In de volgende stap wordt het correctie-signaal aangemaakt. Dit signaal dient gesynchroniseerd te worden met het te corrigeren signaal om een nieuw binnenkomend sample met de juiste waarde te kunnen corrigeren. Fase tussen beide signalen dient gelijk te zijn.
Dat laatste is lastig te bereiken: de FFT kent maar een discreet aantal frequenties en kost veel rekenkracht (teveel om met 10Hz mee te laten lopen in een fatsoenlijk window). In de (mijn) praktijk verschuift de frequentie van het te corrigeren signaal relatief snel zodat de FFT altijd achter loopt en de faseverschillen meer kapot dan goed maken. Ook gezien het feit dat de FFT slechts bepaalde frequenties kan identificeren zal de fase steeds verder uit elkaar gaan lopen.
Echter met een breed window, hoge en stabiele sampling frequentie en stationair signaal (tsja...) zou het goed kunnen werken.
3. Adaptief filteren in het frequentiedomein
Ook deze methode neemt een periodiek verstorings signaal aan, maar werkt in het frequentiedomein. Groot verschil met de voorgaande methode is dat zo'n discreet notch filter relatief zwak filtert aan beide kanten van de centerfrequentie. Daar waar de hiervoor beschreven methode probeert exact één signaal te verwijderen uit de meting, is deze methode minder selectief en verwijderd ook frequentiecomponenten rondom het priodieke signaal. Dat is zowel een voordeel (licht verlopende frequenties worden beter meegenomen), maar ook een nadeel (er wordt altijd teveel informatie weggehaald). Van de synchronisatie fouten en rekenkracht-limitering is echter geen sprake. De FFT kan bijvoorbeeld elke minuut herhaald worden, waarna de filter parameters aangepast worden.
4. Niet-adaptief filteren met een vast ingesteld filter
Dit is wat onze apparatuur standaard doet, meestal met een laagdoorlaat filter. Je filtert (dempen meestal), ongeacht hoe de (al of niet gemeten) verstoringen eruit zien. Dit is geschikt om ruis met hoge frequenties te dempen, maar zal nooit als filter voor specifieke frequenties uitgevoerd kunnen worden.
Op basis van de recente experimenten (voorlopig in Excel), neig ik naar een echte test in PolarPlot met methode (3).
Zal binnenkort wat vergelijkende plaatjes laten zien van deze 4 methoden.
Heb goede resultaten met een biquad Notch filter. Dit is een tweede orde discreet filter, wat behoorlijk robuust blijkt. Werk echter liever met een vierde orde filter, maar met 10 Hz en een centerfrequentie van 0.05 Hz is dit lastig stabiel te krijgen.
Heeft iemand ervaring daarmee?
Nog andere suggesties? Zal veel praktijkdata moeten gaan verzamelen om echt goed te testen...