- Kalman Filter शोर-भरे वातावरण में सिस्टम की स्थिति का अनुमान लगाने और भविष्यवाणी करने वाला एक optimal state estimation algorithm है
- विमान-ट्रैकिंग radar के उदाहरण से बताया गया है कि दूरी और वेग के measurements का उपयोग करके prediction और update चरणों को बार-बार दोहराते हुए सटीकता कैसे बढ़ती है
- हर चरण में state vector, covariance matrix, Kalman Gain की गणना करके measurement और prediction values को weighted रूप से जोड़ा जाता है
- measurement uncertainty और model uncertainty, दोनों को साथ में ध्यान में रखकर, समय के साथ estimation error (uncertainty) घटता है यह संख्यात्मक रूप में दिखाया गया है
- सहज संख्यात्मक उदाहरणों और step-by-step गणना के माध्यम से फ़िल्टर को सीधे design और implement कर सकने लायक समझ दी जाती है
Kalman Filter परिचय
-
Kalman Filter** measurement noise या बाहरी कारकों जैसी अनिश्चितताओं वाले वातावरण में सिस्टम की स्थिति का अनुमान और भविष्यवाणी करने वाला** एक state estimation algorithm है
- object tracking, navigation, robotics, control जैसे कई क्षेत्रों में एक मुख्य tool के रूप में इस्तेमाल होता है
- उदाहरण के लिए, mouse trajectory के noise को घटाकर smooth movement पाना, financial data में trend detection, weather forecasting आदि में इसका उपयोग होता है
- यह इंगित किया गया है कि बहुत-सी educational materials गणितीय derivation पर अधिक केंद्रित होती हैं और व्यावहारिक उदाहरण कम देती हैं; यह सामग्री संख्यात्मक उदाहरण-केंद्रित सहज व्याख्या प्रदान करती है
- गलत design होने पर filter tracking में असफल हो सकता है, ऐसे मामलों को भी शामिल किया गया है और उन्हें सुधारने के तरीके बताए गए हैं
- लक्ष्य यह है कि पाठक स्वयं Kalman Filter को design और implement कर सकें, ऐसी समझ विकसित करें
सीखने का मार्ग
- single-page overview: मुख्य concepts और प्रमुख equations का संक्षिप्त परिचय, जिसके लिए statistics और linear algebra की बुनियादी जानकारी ही पर्याप्त है
- free web tutorial: step-by-step संख्यात्मक उदाहरणों वाला online tutorial, जिसके लिए पूर्व ज्ञान आवश्यक नहीं है
- Kalman Filter from the Ground Up (पुस्तक): 14 पूर्ण संख्यात्मक उदाहरण, non-linear filters (Extended/Unscented) और sensor fusion, साथ में Python·MATLAB code
prediction की आवश्यकता
- विमान-ट्रैकिंग radar उदाहरण के जरिए state estimation और prediction की आवश्यकता समझाई गई है
- सिस्टम की state विमान की position (distance (r)) है, और radar pulse reflection time को मापकर दूरी की गणना करता है
- velocity (v) को Doppler effect से मापा जा सकता है
- निश्चित समय अंतराल (\Delta t) के बाद position prediction dynamic model के जरिए किया जाता है
- उदाहरण: (r_{t_1} = r_{t_0} + v \cdot \Delta t)
- (\Delta t = 5s), (r_{t_0}=10,000m), (v=200m/s) → (r_{t_1}=11,000m)
- वास्तविक वातावरण में measurement noise और model uncertainty (Process Noise) मौजूद होते हैं
- कई radar एक साथ मापें तब भी परिणाम थोड़ा-थोड़ा अलग हो सकता है
- हवा जैसे बाहरी कारकों के कारण velocity constant होने की धारणा टूट सकती है
- Kalman Filter वर्तमान state estimation और future state prediction दोनों एक साथ करता है, और हर estimate की uncertainty (variance) भी देता है
- यह state estimation uncertainty को न्यूनतम करने वाला optimal algorithm है
Kalman Filter उदाहरण
-
1-dimensional radar विमान की दूरी (r) और velocity (v) को मापता है
- state vector (\boldsymbol{x} = [r, v]^T)
- vectors और matrices का उपयोग करके सिस्टम को व्यक्त किया जाता है
-
Iteration 0 — initialization और prediction
-
initialization
- पहली measurement value से filter को initialize किया जाता है (\boldsymbol{z}_0 = [10{,}000, 200]^T)
- measurement uncertainty (standard deviation): दूरी 4m, velocity 0.5m/s (\boldsymbol{R}_0 = \begin{bmatrix}16 & 0 \ 0 & 0.25\end{bmatrix})
- initial state estimate (\hat{\boldsymbol{x}}_{0,0} = \boldsymbol{z}_0)
- initial covariance (\boldsymbol{P}_{0,0} = \boldsymbol{R}_0)
-
prediction चरण
- time interval (\Delta t = 5s)
- state transition matrix (\boldsymbol{F} = \begin{bmatrix}1 & 5 \ 0 & 1\end{bmatrix})
- predicted state (\hat{\boldsymbol{x}}{1,0} = \boldsymbol{F}\hat{\boldsymbol{x}}{0,0} = [11{,}000, 200]^T)
- covariance prediction (process noise को छोड़कर): (\boldsymbol{P}{1,0} = \boldsymbol{F}\boldsymbol{P}{0,0}\boldsymbol{F}^T = \begin{bmatrix}22.25 & 1.25 \ 1.25 & 0.25\end{bmatrix})
- process noise जोड़ा गया ((\sigma_a = 0.2m/s^2)): (\boldsymbol{Q} = \begin{bmatrix}6.25 & 2.5 \ 2.5 & 1\end{bmatrix})
- final predicted covariance: (\boldsymbol{P}_{1,0} = \begin{bmatrix}28.5 & 3.75 \ 3.75 & 1.25\end{bmatrix})
-
Iteration 0 सारांश
- पहली measurement से state और covariance initialize किए जाते हैं
- state transition model का उपयोग करके अगली state और uncertainty की prediction की जाती है
- prediction equations
- state prediction: (\hat{\boldsymbol{x}}{n+1,n} = \boldsymbol{F}\hat{\boldsymbol{x}}{n,n} + \boldsymbol{G}\boldsymbol{u}_n)
- covariance prediction: (\boldsymbol{P}{n+1,n} = \boldsymbol{F}\boldsymbol{P}{n,n}\boldsymbol{F}^T + \boldsymbol{Q})
-
Iteration 1 — update और prediction
-
filter update
- दूसरी measurement: (\boldsymbol{z}_1 = [11{,}020, 202]^T)
- measurement uncertainty में वृद्धि (standard deviation: दूरी 6m, velocity 1.5m/s) (\boldsymbol{R}_1 = \begin{bmatrix}36 & 0 \ 0 & 2.25\end{bmatrix})
- predicted covariance (\boldsymbol{P}_{1,0}) से तुलना करने पर prediction uncertainty कम है
- Kalman Filter measurement और prediction को weighted average के रूप में जोड़ता है
- weight (K_1): Kalman Gain
- state update equation: (\hat{\boldsymbol{x}}{1,1} = \hat{\boldsymbol{x}}{1,0} + \boldsymbol{K}_1(\boldsymbol{z}1 - \boldsymbol{H}\hat{\boldsymbol{x}}{1,0}))
- observation matrix (\boldsymbol{H} = \boldsymbol{I})
- Kalman Gain की गणना: (\boldsymbol{K}1 = \boldsymbol{P}{1,0}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{1,0}\boldsymbol{H}^T + \boldsymbol{R}_1)^{-1}) परिणाम: (\boldsymbol{K}_1 = \begin{bmatrix}0.4048 & 0.6377 \ 0.0399 & 0.3144\end{bmatrix})
- innovation: (\boldsymbol{z}1 - \hat{\boldsymbol{x}}{1,0} = [20, 2]^T)
- correction value: (\boldsymbol{K}_1[20, 2]^T = [9.37, 1.43]^T)
- updated state: (\hat{\boldsymbol{x}}_{1,1} = [11{,}009.37, 201.43]^T)
-
covariance update
- simplified form का उपयोग: (\boldsymbol{P}_{1,1} = (\boldsymbol{I} - \boldsymbol{K}1)\boldsymbol{P}{1,0})
- परिणाम: (\boldsymbol{P}_{1,1} = \begin{bmatrix}14.57 & 1.43 \ 1.43 & 0.71\end{bmatrix})
- update के बाद uncertainty, prediction और measurement uncertainty दोनों से कम है → measurement और prediction को मिलाने पर uncertainty हमेशा घटती है
-
prediction चरण
- अगले समय (t_2) की prediction
- state prediction: (\hat{\boldsymbol{x}}{2,1} = \boldsymbol{F}\hat{\boldsymbol{x}}{1,1} = [12{,}016.5, 201.43]^T)
- covariance prediction: (\boldsymbol{P}{2,1} = \boldsymbol{F}\boldsymbol{P}{1,1}\boldsymbol{F}^T + \boldsymbol{Q} = \begin{bmatrix}52.86 & 7.47 \ 7.47 & 1.71\end{bmatrix})
- समय बीतने पर यदि measurement न मिले तो uncertainty फिर बढ़ती है
- अगले समय (t_2) की prediction
-
Iteration 1 सारांश
- update चरण: prediction और measurement को Kalman Gain से जोड़ा जाता है
- prediction चरण: updated state को अगले समय बिंदु तक आगे बढ़ाया जाता है
- मुख्य equations
- state update: (\hat{\boldsymbol{x}}{n,n} = \hat{\boldsymbol{x}}{n,n-1} + \boldsymbol{K}_n(\boldsymbol{z}n - \boldsymbol{H}\hat{\boldsymbol{x}}{n,n-1}))
- covariance update (Joseph form): (\boldsymbol{P}_{n,n} = (\boldsymbol{I} - \boldsymbol{K}n\boldsymbol{H})\boldsymbol{P}{n,n-1}(\boldsymbol{I} - \boldsymbol{K}_n\boldsymbol{H})^T + \boldsymbol{K}_n\boldsymbol{R}_n\boldsymbol{K}_n^T)
- Kalman Gain: (\boldsymbol{K}n = \boldsymbol{P}{n,n-1}\boldsymbol{H}^T(\boldsymbol{H}\boldsymbol{P}_{n,n-1}\boldsymbol{H}^T + \boldsymbol{R}_n)^{-1})
उदाहरण सारांश
- Kalman Filter के तीन चरण: initialization → prediction → update
- इसके बाद prediction-update loop को बार-बार चलाया जाता है
- हर नई measurement जुड़ने पर uncertainty घटती है और सिस्टम की state estimation धीरे-धीरे अधिक सटीक होती जाती है
- अतिरिक्त learning materials
- मुफ्त online tutorial: step-by-step संख्यात्मक उदाहरण उपलब्ध
- पुस्तक Kalman Filter from the Ground Up: linear·non-linear filters, implementation guidelines, Python/MATLAB code शामिल
1 टिप्पणियां
Hacker News की राय
मैं लेखक हूँ। मैंने हाल ही में अपने Kalman Filter ट्यूटोरियल का होमपेज अपडेट किया है। मैंने एक सरल radar tracking example जोड़ा है, ताकि stats और linear algebra की बुनियादी समझ रखने वाले लोग भी इसे समझ सकें
मैंने formula derivation को न्यूनतम रखते हुए measurement noise, prediction model, और filter combination की प्रक्रिया को सहज रूप से दिखाने की कोशिश की है। मैं गणित के स्तर और समझाने की स्पष्टता पर feedback सुनना चाहता हूँ
मेरे हिसाब से intuitive guide कुछ ऐसी है
आखिरकार मूल बात least squares ही है, और कुछ खास मान्यताओं के तहत यह साबित किया जा सकता है कि यही optimal है
“How a Kalman Filter Works in Pictures” लेख सच में बहुत अच्छा था
उदाहरण के लिए, low-pass filter भी एक तरह का estimator है, लेकिन Kalman filter इसमें process model और covariance calculation जोड़कर इसे dynamically adjusted रूप देता है।
यह position और velocity जैसे correlated variables के बीच संबंध को दर्शाता है, ताकि एक measurement दूसरे variables के estimate को भी प्रभावित कर सके।
लेकिन चूँकि यह linear algebra पर आधारित है, इसलिए Gaussian noise मानना पड़ता है, और nonlinear समस्याओं के लिए EKF या UKF जैसे variants की ज़रूरत होती है
Kalman filter को समझने के लिए आपको ये चार बातें जाननी चाहिए
filter, measurements के आधार पर system की internal state और covariance का optimal estimate निकालने का एक mathematical solution है।
मुझे लगता है Alex Becker की किताब इस विषय की शानदार शुरुआती किताब है। इसमें उदाहरण भरपूर हैं और यह intuition अच्छी तरह बनाती है
Kalman filter सीखते समय, जब अलग-अलग noise characteristics वाले दो या अधिक inputs हों तब इसे कहीं ज़्यादा सहज रूप से समझा जा सकता है। लेकिन ज़्यादातर tutorials सिर्फ single input को कवर करते हैं
Kalman filter का वास्तविक दुनिया में भी काफ़ी उपयोग होता है। उदाहरण के लिए, Sendspin इसका इस्तेमाल speaker synchronization के लिए करता है
आप live demo और implementation docs देख सकते हैं
मुझे जिज्ञासा है कि क्या Kalman filter की अवधारणा को लोगों की गवाही पर भी लागू किया जा सकता है
thekalmanfilter.com पर भी एक सरल explanation देखी जा सकती है
यह लेख महँगी किताब के विज्ञापन जैसा लगा। जबकि पहले से बहुत-सी free सामग्री मौजूद है, जैसे Kalman and Bayesian Filters in Python। जानना चाहता हूँ कि इस किताब की अलग खासियत क्या है