सबसे पहले, यह पहली बार है जब मैं कलमन फ़िल्टर बनाने की कोशिश करता हूं।
मैंने पहले follwoing सवाल पोस्ट किया था StackOverflow पर गति मानों से शोर और विविधताओं को फ़िल्टर करें जो इस पोस्ट के लिए पृष्ठभूमि का वर्णन करता है। यह उन मूल्यों का एक विशिष्ट नमूना है जिसे मैं फ़िल्टर करने का प्रयास कर रहा हूं। जरूरी नहीं कि वे घटें जो कि यहां है। लेकिन बदलाव की दर आम तौर पर इस तरह होती है
X ------- Y
16 --- 233.75
24 --- 234.01
26 --- 234.33
32 --- 234.12
36 --- 233.85
39 --- 233.42
47 --- 233.69
52 --- 233.68
55 --- 233.76
60 --- 232.97
66 --- 233.31
72 --- 233.99
मैंने इस ट्यूटोरियल के अनुसार अपना कलमन फ़िल्टर लागू किया है: डम्मीज़ के लिए कलमन फ़िल्टर ।
मेरा कार्यान्वयन इस तरह दिखता है (स्यूडोकोड)।
//Standard deviation is 0.05. Used in calculation of Kalman gain
void updateAngle(double lastAngle){
if(firsTimeRunning==true)
priorEstimate = 0; //estimate is the old one here
priorErrorVariance = 1.2; //errorCovariance is the old one
else
priorEstimate = estimate; //estimate is the old one here
priorErrorVariance = errorCovariance; //errorCovariance is the old one
rawValue = lastAngle; //lastAngle is the newest Y-value recieved
kalmanGain = priorErrorVariance / (priorErrVariance + 0.05);
estimate = priorEstimate + (kalmanGain * (rawValue - priorEstimate));
errorCovariance = (1 - kalmanGain) * priorErrVariance;
angle = estimate; //angle is the variable I want to update
} //which will be lastAngle next time
मैं 0. के पूर्व अनुमान से शुरू करता हूं। यह ठीक काम करता है। लेकिन मुझे क्या ध्यान है कि कलमनगैन हर बार इस अपडेट के चलने पर कम हो जाएगा, जिसका अर्थ है कि मैं अपने नए मूल्यों पर भरोसा करता हूं जब तक मेरा फ़िल्टर चल रहा है (?)। मैं ऐसा नहीं चाहता।
मैं सिर्फ एक चलती औसत (सरल और घातीय भार) का उपयोग करके इस का उपयोग करने से गया था। अभी मैं भी उतने अच्छे परिणाम प्राप्त नहीं कर पाया जितना कि किया।
मेरा प्रश्न यह है कि क्या यह सही क्रियान्वयन है और यदि मेरे द्वारा पोस्ट किए गए नमूना मूल्यों के अनुसार मेरी पूर्व त्रुटि विचलन और मानक विचलन अच्छा है? मेरे मापदंडों को वास्तव में सिर्फ यादृच्छिक रूप से देखने के लिए चुना जाता है कि क्या मुझे कुछ अच्छे परिणाम मिल सकते हैं। मैंने कई अलग-अलग श्रेणियों की कोशिश की है लेकिन खराब परिणामों के साथ। यदि आपके पास मेरे द्वारा किए जाने वाले परिवर्तनों के बारे में कोई सुझाव है, तो यह वास्तव में सराहना होगी। अगर कुछ स्पष्ट चीजें गायब हैं तो मुझे खेद है। पहली बार यहां पोस्टिंग भी।