स्थिति और वेग के लिए कलमन फ़िल्टर: गति अनुमानों का परिचय


24

उन सभी को धन्यवाद जिन्होंने कल मेरी टिप्पणी के जवाब / पोस्ट किए थे ( स्थिति, वेग, त्वरण के लिए एक कलमन फ़िल्टर लागू करना )। मैं देख रहा था कि क्या सिफारिश की गई थी, और विशेष रूप से दोनों पर (एक) एक आयामी स्थिति और वेग पर विकिपीडिया उदाहरण और एक अन्य वेबसाइट जो एक समान चीज पर विचार करती है

अद्यतन 26-अप्रैल -2013 : यहां मूल प्रश्न में कुछ त्रुटियां थीं, इस तथ्य से संबंधित कि मैंने एक आयामी स्थिति और वेग पर विकिपीडिया उदाहरण को ठीक से नहीं समझा था । क्या हो रहा है की मेरी बेहतर समझ के साथ, मैंने अब इस प्रश्न को फिर से लिखा है और इसे और अधिक मजबूती से केंद्रित किया है।

ऊपर दिए गए परिचयात्मक पैराग्राफ में मैं जिन दोनों उदाहरणों का उल्लेख करता हूं, वे मानते हैं कि यह केवल वह स्थिति है जिसे मापा जाता है। हालांकि, न तो उदाहरण के लिए गति के लिए किसी भी प्रकार की गणना है। उदाहरण के लिए, विकिपीडिया उदाहरण मैट्रिक्स को रूप में निर्दिष्ट करता है , जिसका अर्थ है कि केवल स्थिति इनपुट है। विकिपीडिया के उदाहरण पर ध्यान केंद्रित करते हुए, स्टेट वेक्टर ऑफ़ फ़िल्टर में स्थिति और गति , अर्थातएच एच = [ 1 0 ] एक्स कश्मीर एक्स कश्मीर ˙ एक्स कश्मीर(xkxk1)/dtHH=[1   0]xkxkx˙k

xk=(xkx˙k)

मान लीजिए समय पर स्थिति की माप है । तो अगर समय में स्थिति और गति थे और , और यदि समय में लागू होने वाला अंतराल एक निरंतर त्वरण है के लिए , के माप से सूत्र का उपयोग करने के लिए मान निकालना संभव हैएक्स कश्मीर कश्मीर - 1 एक्स कश्मीर - 1 ˙ एक्स कश्मीर - 1 एक कश्मीर - 1 कश्मीर एक्स एकkx^kk1xk1x˙k1ak1kx^a

x^k=xk1+x˙k1dt+12adt2

इसका तात्पर्य यह है कि समय , गति का एक माप द्वारा दिया जाता है˙ एक्स कश्मीरkx˙^k

x˙^k=x˙k1+adt=2x^kxk1dtx˙k1

उस समीकरण के दाहिने हाथ की ओर सभी मात्राएँ (यानी , और ) सामान्य रूप से ज्ञात साधनों और मानक विचलन के साथ यादृच्छिक चर वितरित की जाती हैं , तो माप वेक्टर के लिए \ bf R मैट्रिक्सएक्सकश्मीर-1 ˙ एक्स कश्मीर-1आरx^kxk1x˙k1R

x^k=(x^kx˙^k)

गणना की जा सकती है। क्या यह प्रक्रिया में गति अनुमान लगाने का एक वैध तरीका है?


2
मैंने आपकी सभी गणनाओं को नहीं देखा। हालाँकि, विकिपीडिया उदाहरण की बात करें, तो आप इसकी संरचना पर थोड़ा भ्रमित हैं। आप सही हैं कि केवल स्थिति को मापा जाता है। हालांकि, एक तथाकथित "स्थिर-वेग" मॉडल का उपयोग किया जाता है। इसका अर्थ है कि वेग को राज्य संक्रमण मैट्रिक्स में स्थिर माना जाता है।
जेसन आर

3
वेग में परिवर्तन प्रक्रिया शोर मैट्रिक्स का उपयोग करके मॉडलिंग की जाती है। इसलिए, आप स्वाभाविक रूप से मान रहे हैं कि वेग कुछ निर्दिष्ट सहसंयोजक के साथ बेतरतीब ढंग से बदलने वाला है। आश्चर्यजनक रूप से पर्याप्त है, यह अक्सर अच्छी तरह से काम करता है। इस तरह से अपने उच्चतम राज्य-चर व्युत्पन्न के ऊपर प्रक्रिया शोर एक व्युत्पन्न का उपयोग करना आम है। उदाहरण के लिए, यदि आपने अपने मॉडल में त्वरण शामिल किया है, तो आपके पास एक यादृच्छिक झटका घटक हो सकता है जो आपकी प्रक्रिया शोर में शामिल है।
जेसन आर

विकिपीडिया मॉडल (स्थिति और गति के बीच शून्य प्रारंभिक सहसंयोजन मानकर) के साथ @ जैसनआर, गति का अनुमान हमेशा यह प्रारंभिक मूल्य होता है (जैसा कि आप कहते हैं, "निरंतर-वेग" मॉडल)। हालांकि, गति का विचरण प्रक्रिया के शोर के माध्यम से एकात्मक रूप से बढ़ता है, और कोई माप नहीं हैं जो इसे कम कर सकते हैं। एक मॉडल पर इसका क्या फायदा है जो केवल मॉडल की स्थिति और एक निरंतर गति मानती है?
स्टोकेस्टली

2
वेग के अनुमान का विचलन नीरस रूप से नहीं बढ़ना चाहिए। प्रक्रिया का शोर केवल राज्य संक्रमण समीकरण के लिए एक स्टोकेस्टिक घटक का परिचय देता है, जिससे आप कुछ अनिश्चितता व्यक्त कर सकते हैं कि सिस्टम चरण समय-समय पर चरण दर चरण कैसे विकसित होगा। यदि आप प्रक्रिया शोर शामिल नहीं करते हैं, तो आपका फ़िल्टर वास्तव में एक स्थिर वेग का उत्पादन करेगा। शायद वह नहीं है जो आप चाहते हैं।
जेसन आर

खैर @JasonR, यदि आप विकिपीडिया मॉडल को देखते हैं, तो आप देखेंगे कि वेग का एकरूपता बढ़ाने वाला संस्करण यह आपको देता है!
स्टॉकेस्टली

जवाबों:


24

क्या यह प्रक्रिया में गति अनुमान लगाने का एक वैध तरीका है?

यदि आप अपना राज्य उचित रूप से चुनते हैं, तो गति का अनुमान "मुफ्त में" आता है। नीचे दिए गए सिग्नल मॉडल की व्युत्पत्ति देखें (साधारण 1-डी मामले के लिए जो हम देख रहे हैं)।

सिग्नल मॉडल, 2 लें

इसलिए, इससे पहले कि हम इसे आगे बढ़ा सकें, हमें वास्तव में एक सिग्नल मॉडल पर सहमत होने की आवश्यकता है। आपके संपादन से, यह स्थिति के आपके मॉडल की तरह दिखता है, है:xk

xk+1=xk+x˙kΔt+12a(Δt)2x˙k+1=x˙k+aΔt

यदि हमारी स्थिति पहले की तरह है: तब राज्य अद्यतन समीकरण बस है: जहां अब हमारा सामान्य रूप से वितरित त्वरण है। एक्सकश्मीर+1=(

xk=(xkx˙k)
xk+1=(1  Δt0  1)xk+((Δt)22Δt)ak
ak

जो पिछले संस्करण से अलग मैट्रिक्स देता है , लेकिन और मैट्रिसेस समान होना चाहिए।GFH


अगर मैं इसे लागू करता हूं scilab(क्षमा करें, matlab तक कोई पहुंच नहीं है), ऐसा दिखता है:

// Signal Model
DeltaT = 0.1;
F = [1 DeltaT; 0 1];
G = [DeltaT^2/2; DeltaT];
H = [1 0];

x0 = [0;0];
sigma_a = 0.1;

Q = sigma_a^2;
R = 0.1;

N = 1000;

a = rand(1,N,"normal")*sigma_a;

x_truth(:,1) = x0;
for t=1:N,
    x_truth(:,t+1) = F*x_truth(:,t) + G*a(t);
    y(t) = H*x_truth(:,t) + rand(1,1,"normal")*sqrt(R);
end

फिर, मैं इस (शोर माप) के लिए कलमन फ़िल्टर समीकरण लागू कर सकता हूं ।y

// Kalman Filter
p0 = 100*eye(2,2);

xx(:,1) = x0;
pp = p0;
pp_norm(1) = norm(pp);
for t=1:N,
    [x1,p1,x,p] = kalm(y(t),xx(:,t),pp,F,G,H,Q,R);
    xx(:,t+1) = x1;
    pp = p1;
    pp_norm(t+1) = norm(pp);
end

इसलिए हम अपने शोर माप , और हम उन्हें करने के लिए Kalman फिल्टर आवेदन किया है और एक ही संकेत मॉडल का इस्तेमाल किया उत्पन्न करने के लिए किया है के रूप में हम Kalman फिल्टर लागू करने के लिए करते हैं (, कभी कभी एक बहुत बड़ी धारणा!)।yy

फिर निम्नलिखित भूखंड परिणाम दिखाते हैं।

प्लॉट 1 : और बनाम समय।yxk

यहाँ छवि विवरण दर्ज करें

प्लॉट 2 : पहले कुछ नमूनों का ज़ूम किया हुआ दृश्य:

यहाँ छवि विवरण दर्ज करें

प्लॉट 3 : कुछ ऐसा जो आपको वास्तविक जीवन में कभी न मिले, सही स्थिति बनाम स्थिति का अनुमान।

यहाँ छवि विवरण दर्ज करें

प्लॉट 4 : कुछ ऐसा जो आपको वास्तविक जीवन में भी कभी नहीं मिलता, सही वेग बनाम वेग का राज्य अनुमान।

यहाँ छवि विवरण दर्ज करें

प्लॉट 5 : राज्य सहसंयोजक मैट्रिक्स का मानदंड (कुछ आपको वास्तविक जीवन में हमेशा निगरानी रखना चाहिए!)। ध्यान दें कि यह बहुत जल्दी अपने प्रारंभिक बहुत बड़े मूल्य से कुछ बहुत छोटा हो जाता है, इसलिए मैंने केवल पहले कुछ नमूने दिखाए हैं।

यहाँ छवि विवरण दर्ज करें

प्लॉट 6 : सही स्थिति और वेग और उनके अनुमानों के बीच त्रुटि के प्लॉट

यहाँ छवि विवरण दर्ज करें

यदि आप उस स्थिति का अध्ययन करते हैं जहां स्थिति माप सटीक हैं, तो आप पाते हैं कि कलमन यूडपेट समीकरण बीओटीएच स्थिति और गति के लिए सटीक परिणाम उत्पन्न करते हैं। गणितीय रूप से यह देखने के लिए सीधा है कि क्यों। विकिपीडिया लेख के समान नोटेशन का उपयोग करते हुए , सटीक माप का मतलब है कि । आप मान यदि यह प्रारंभिक स्थिति और गति कि इतने में जाना जाता है , तो और Kalman लाभ मैट्रिक्स द्वारा दिया गया हैP k =0zk+1=xk+1Pk=0Pk+1=QKk+1

Kk+1=(12/dt)

इसका मतलब है कि कलमन अपडेट प्रक्रिया का उत्पादन करता है

x^k+1=Fk+1xk+Kk+1(zk+1Hk+1Fk+1xk)=(xk+x˙kdtx˙k)+(12/dt)(xk+1(xk+x˙kdt))=(xk+12(xk+1xk)/dtx˙k)

जैसा कि आप देख सकते हैं, गति का मान ठीक उसी सूत्र द्वारा दिया गया है जिसे आप गति अनुमान के लिए उपयोग करने का प्रस्ताव कर रहे थे। इसलिए यद्यपि आप गति के लिए किसी भी प्रकार की गणना नहीं देख सकते हैं , वास्तव में यह सब के बाद भी वहां छिपा हुआ है।(xkxk1)/dt


अब तक की आपकी मदद के लिए धन्यवाद। मेरे मूल प्रश्न में कुछ गलतफहमियाँ थीं, इसलिए मैंने इसे रीफ़ोकस करने की कोशिश की और z_k के बारे में आपके प्रश्न का उत्तर देने का प्रयास किया।
स्टोकेस्टली 14

1
आपके सभी प्रयासों के लिए धन्यवाद vm :-)। आपके काम ने मुझे कुछ गणित करने के लिए प्रेरित किया है, जो मैंने आपके जवाब से जुड़ा है, आशा है कि आप बुरा नहीं मानेंगे। वैसे भी, मैं अब 100% आश्वस्त हूं कि मानक विधि अच्छी है, क्योंकि मैं सभी के बाद गति के लिए सूत्र देख सकता हूं। धन्यवाद फिर से
Stochastically

मदद करने में सक्षम होने के लिए खुशी है! उत्तर में जोड़ने के साथ कोई समस्या नहीं है।
पीटर के.एच.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.