Nu är det ett tag sedan jag läste om detta under mina universitetsstudier men här kommer min tolkning och varsågoda att rätta mig om jag har fel
Generellt gällande Kalman filter så skulle jag vilja påstå att det
INTE är prediktionen man är ute efter, för tittar man i tidsuppdateringssteget för ett Kalman filter så ser man:
x[k+1|k] = f(x[k|k], u[k|k])
Så länge man har x[k|k] och u[k|k] dvs nuvarande tillstånd resp. styrsignal så använder filtret bara den tillståndsmodellen man angett för att prediktera nästa tidssteg. Det hade man kunnat göra enkelt utan ett Kalman filter.
Magin i Kalman filtret sker ju i mätuppdateringen där man bestämmer vad just x[k|k] är utifrån att man har en prediktion från föregående tidssteg kombinerat med en mätning från nuvarande tidssteg k.
Sen följer det med en kovariansmatris i Kalman filtret som talar om hur osäker estimeringen är.
Begränsningen av Kalman filter är ju att den endast hanterar gaussiskt brus, men ifall bruset är gaussiskt så är det det optimala filtret.
Vidare till partikelfilter då, styrkan i denna är att det är anpassat för olinjära system och alla typer av fördelningar för bruset, typexempel här är väl en multimodalfördelning av bruset. T ex, y=4 av y = x^2, dvs samma sannolikhet att x = -2 som att x=2.
Idén med partikelfiltret är väl att man då genererar massa partiklar utifrån någon uppskattad fördelning, låter dessa partiklar följa systemets dynamik och vid mätuppdateringar kollar man i princip hur stor sannolikhet det är att en viss partikel genererat ett visst mätvärde. Med tiden kommer partiklar att dö ut då de blir mer och mer osannolika och då tillämpar man väl tekniker för att generera nya partiklar utifrån den skattade fördelningen.
DanielM skrev: ↑7 september 2022, 09:54:38
guckrum skrev: ↑7 september 2022, 08:02:37
KDE är ett sätt att estimera en sannolikhetsfördelning med hjälp av sampel. Den kan man använda i många applikationer.
So. Jag uppfattar det så är det så ett partikelfilter fungerar. Ett partikelfilter kräver x antal mätvärden, till skillnad från ett Kalmanfilter som kräver bara ett mätvärde.
Skulle inte beskriva det så, man måste initialisera ett Kalman filter, dvs ge en första gissning av tillstånden till första mätningen (prediktionen x[0|-1]) samt osäkerheten i denna gissning via kovariansmatrisen P[0|-1]. Många gånger sätter man bara x[0|-1] till att vara första mätvärdet för att kicka igång det och P brukar man väl bara ange till någon diagonalmatris. Ska man vara petig så behövs inget första mätvärde för att initialisera filtret, är det däremot en dålig gissning så tar insvängningen längre tid.
Partikelfiltret behöver väl initialiseras på ett sånt sätt att man kan generera ett visst antal partiklar och dess vikter. Så något godtyckligt initial tillstånd och en sannolikhetsfördelning av bruset borde räcka för att kunna generera partiklarna och kunna kicka igång filtret? Är det en dålig initialgissning så lär många partiklar dö ut snabbt och man lär behöva generera nya partiklar ganska snabbt så även här blir insvängningen längre/svårare.
Anser inte att det varit onödigt att läsa om detta, partikelfiltret har jag inte använt efter studierna så skulle jag få för mig att implementera det någon gång så skulle jag behöva sätta mig ner och se över de olika stegen mer i detalj. Däremot har jag viss insikt i vad algoritmen bygger på som givetvis är till hjälp om man ska ta tag i det senare. Stöter jag på något problem där man grämer sig över att bruset är multimodalt eller att det är för olinjärt för ett EKF då kommer ändå partikelfilter tanken att tändas lite inne i hjärnkontoret.
Kalman filter eller snarare EKF har jag använt efter mina studier.
Men med detta sagt, man ska inte göra det mer komplicerat än vad det behöver vara. Att ta fram en tillståndsbeskrivning av ett system är ju ett problem i sig bara det.
Duger det att lågpassfiltrera sina sensorvärden för ens applikation så väljer man ju helt klart det alternativet