Stap 6: Kalman Filter
Ik zal ook proberen en het filter hier uitleggen.
Recursief oplossen:
p = p + q;
k = p / (p + r); (winst)
x = x + k * (rssi_data-x);
p = (1-k) * p;
That's it!
Oorspronkelijke voorwaarden:
x = x_o (beste gissing)
p = p_o (geschatte fout)
r = r_o (sensor lawaai)
q = q_o (proces lawaai) waarde tussen 0 en 1
Parameters vetgedrukt stagneren door middel van de simulatie
Dus hoe kies we onze parameters? Met de parameter keuze is moeilijk en vergt vaak veel masseren. Als u een idee van hoe we q en r kiezen moeten, laten we eens kijken sommige extreem gedrag:
- Als q veel groter dan r en k is = 1 en x is alleen de gemeten waarde.
- als r echt kleine (heel erg dicht bij 0), dan k = 1 en x is alleen de gemeten waarde
Dit betekent dat q/r of r/q niet te groot of te klein moet en r te klein moet worden. Nogmaals, zul je masseren de parameter om de gegevens die u wilt. Heb ik geselecteerd Kalman 3 want het is een goede balans tussen vertragingstijd en filteren van ruis, waar als Kalman 4 filtert het geluid mooi, maar teveel achterblijft op de gegevens.
Eigenlijk, kan de wiskunde/programmering nog eenvoudiger als je ervan uitgaan dat het proces lawaai (q) en het lawaai van de sensor (r) niet na verloop van tijd wijzigen worden gemaakt. Als u ervan overtuigd bent hebt u de juiste parameters, zal de Kalman winst (k) uiteindelijk stabiliseren één enkele waarde. U kunt vooraf te berekenen wat die waarde is en het filter te vereenvoudigen:
x = x + k * (rssi_data-x);
Voor degenen die ook geïnteresseerd zijn in Kalman-filters die worden gebruikt voor RSSI data lees: http://www.cs.tut.fi/sgn/arg/heln/Publications/CSCC2001_Helen.pdf