Contents — find the section you need
Change parameters and verify
Open the panel, then press Run to load Python. You can stop execution and reset parameters. Results are computed on this device. No Python installation is required.
Local execution steps below are optional for reproducing the source results; they are not required for the browser experiment.
The experiment controls are in English.
कलमन ट्यूनिंग गति मॉडल और उसके प्रेक्षणों में अनिश्चितता को व्यक्त करती है। यह प्रयोग स्थिति और वेग का अनुमान लगाता है, फिर अनुपलब्ध डेटा के दौरान पूर्वानुमान, आउटलायर पर प्रतिक्रिया और अति आत्मविश्वास के कारण अस्वीकृति की तुलना करता है। सभी इनपुट कृत्रिम हैं; संख्याएँ हार्डवेयर सटीकता के दावे नहीं हैं।
मॉडल और इकाइयाँ
अवस्था में स्थिति [मीटर] और वेग [मीटर/सेकंड] शामिल हैं। केवल स्थिति का प्रेक्षण प्रत्येक 0.1 सेकंड में किया जाता है:
प्रेक्षण मानक विचलन 0.7 मीटर है, जिससे R=0.49 मीटर² प्राप्त होता है। प्रक्रिया सहप्रसरण q ggᵀ है, जहाँ g=(dt²/2, dt) है, जो प्रति चरण एक स्वतंत्र त्वरण विक्षोभ का प्रतिनिधित्व करता है। यहाँ q=0.4 की इकाई (मीटर/सेकंड²)² है; यह एक सतत श्वेत-शोर वर्णक्रमीय घनत्व नहीं है। इसके अर्थ की जाँच किए बिना इस मान को किसी अन्य विखंडन में स्थानांतरित न करें। भविष्यवाणी और अद्यतन व्युत्पत्तियों के लिए कलमन फ़िल्टर परिचय देखें।
सिद्धांत के लिए, सिमो सार्क्का (2013) द्वारा लिखित बायेसियन फ़िल्टरिंग और स्मूथिंग, अनुभाग 4.3 देखें। प्रक्षेपवक्र, गेट और तुलना की स्थितियाँ यहाँ हमारे स्वयं के प्रयोग डिज़ाइन पर आधारित हैं।
चार विन्यास, समान इनपुट
प्रयोग स्क्रिप्ट को एक खाली आउटपुट निर्देशिका में सहेजें और निम्न चलाएँ:
python3 engineering_labs.py
निष्पादन की जाँच Python 3.12.3, NumPy 1.26.4 और Matplotlib 3.6.3 के साथ की गई। यह फ़ाइल अन्य संबंधित इंजीनियरिंग प्रयोगों को भी उत्पन्न करती है। इसमें सीड 42 और 300 नमूने उपयोग किए गए हैं। वास्तविक वेग 12 सेकंड पर 1 से 1.4 मीटर/सेकंड तक बदलता है। 7.0 से 9.9 सेकंड तक के तीस अवलोकन अनुपलब्ध हैं, और 16 सेकंड पर अवलोकन में 12 मीटर जोड़ा गया है। प्रारंभिक स्थिति/वेग 0 मीटर और 1 मीटर/सेकंड हैं; प्रारंभिक सहप्रसरण में विकर्ण प्रविष्टियाँ 1 मीटर² और 1 (मीटर/सेकंड)² हैं। प्रत्येक विन्यास को बिल्कुल समान अवलोकन प्राप्त होते हैं।
अवशिष्ट का सामान्यीकरण
मान लीजिए कि e सुधार से पहले अवलोकन अवशिष्ट है और S इसका अनुमानित प्रसरण है। गेट एक अवलोकन को तब अस्वीकार करता है जब:
यह सीमा इस अदिश सामान्यीकृत अवशिष्ट पर लागू होती है, न कि बहुआयामी अवलोकनों पर मनमाने ढंग से। अनुपलब्ध या अस्वीकृत माप बिना सुधार के पूर्वानुमान को ट्रिगर करते हैं। कार्यान्वयन जोसेफ सहप्रसरण अद्यतन का उपयोग करता है और धनात्मक अर्ध-निश्चितता की जाँच करता है। अनुपलब्ध डेटा के दौरान अनिश्चितता बढ़ती है, इसलिए यह मीटर में एक निश्चित अस्वीकृति दूरी से भिन्न है।
परिणाम अति आत्मविश्वास को दर्शाते हैं
| विन्यास | स्थिति RMSE [मीटर] | अस्वीकृत |
|---|---|---|
| q=0.4, R=0.49, बिना गेट | 0.262 | 0 |
| q=0.4, R=0.49, गेटेड | 0.178 | 2 |
| q=0.002, R=0.49, गेटेड | 0.393 | 4 |
| q=0.4, R=0.0049, गेटेड | 11.251 | 237 |
तुलना के लिए ऊर्ध्वाधर सीमा को -3 से 4 मीटर तक सीमित किया गया है। 12 मीटर का आउटलायर और छोटे R के साथ बड़ी त्रुटियाँ इससे आगे तक फैली हुई हैं। अनक्रॉप्ड मानों के लिए गेटेड CSV, स्मॉल-R CSV और पूर्ण सारांश का निरीक्षण करें। CSV में छूटे हुए अवलोकन nan हैं और उन्हें अस्वीकृति के रूप में नहीं गिना जाता है।
गेट दो अवलोकनों को अस्वीकार करता है, हालांकि केवल एक कृत्रिम आउटलायर डाला गया था। एक थ्रेशोल्ड केवल जानबूझकर दूषित नमूनों की पहचान नहीं करता है। अवलोकन विचरण को 100 के कारक से कम आंकने पर 237 अस्वीकृतियाँ होती हैं: सामान्य बिखराव फ़िल्टर के विश्वास के साथ असंगत हो जाता है। खोए हुए सुधार तब वेग परिवर्तन को ट्रैक करने से रोकते हैं, जिससे अवशेष और भी बड़े हो जाते हैं। केवल गेट जोड़ने से मजबूती नहीं आती है।
अपने स्वयं के लॉग पर आगे बढ़ें
सबसे पहले टाइमस्टैम्प, यूनिट और फ्रेम की जाँच करें। स्थिर अंतरालों पर अवलोकन विचरण का अनुमान लगाएं, फिर गति के दौरान गति-मॉडल त्रुटियों और अवशेषों की जांच करें। गेटिंग को सबसे अंत में लागू करें, और RMSE के साथ-साथ गुम डेटा दर, अस्वीकृति दर और अनिश्चितता की रिपोर्ट करें। वास्तविक हार्डवेयर को तुलनीय त्रुटियों की गणना के लिए एक स्वतंत्र संदर्भ की आवश्यकता होती है।
छोटा Q वक्र को चिकना बना सकता है, जबकि लैग बढ़ जाता है। Q को बढ़ाना भी हमेशा बेहतर नहीं होता। ये रैंकिंग केवल इस प्रक्षेपवक्र, आरंभीकरण, शोर और मूल्यांकन विंडो पर लागू होती हैं।
अनुवर्ती जाँच
sigma_m कॉलम अनुमानित स्थिति मानक विचलन है। अनुमान को दो बार सिग्मा के साथ जोड़कर/घटाकर प्लॉट करें और गुम डेटा अंतराल की तुलना वेग परिवर्तन से करें। इससे वास्तविक त्रुटि को अनुमानक के स्व-मूल्यांकन से अलग किया जा सकता है। सहप्रसरण बदलने से पहले समय और TF का निदान करने के लिए sensor-fusion debugging के साथ आगे बढ़ें।
स्थानीय स्तर पर यही गणना चलाएँ
संपूर्ण चलाने योग्य स्रोत ज़िप फ़ाइल निकालें, या प्रयोग प्रवेशबिंदु, जनित कर्नेल और मूल PID स्रोत को एक फ़ोल्डर में सहेजें। PID, Python मानक लाइब्रेरी का उपयोग करता है; Kalman और ICP के लिए NumPy आवश्यक है। मूल चित्र-निर्माण कमांड उपलब्ध रहेंगे।
python3 -m pip install numpy==1.26.4
python3 experiment.py kalman --parameters '{"q":0.4,"r":0.49,"gate":false}' > result.json
आउटलायर प्रतिक्रिया की तुलना करने के लिए गेट को टॉगल करें, फिर q को 0.002 या r को 0.0049 पर सेट करें और RMSE और अस्वीकृति गणना की तुलना करें। सहेजी गई CSV फ़ाइल से अवलोकन सभी रन में स्थिर रहते हैं।
Code, data and reproduction
The ZIP contains the same computation code as the browser, synthetic data and comparison cases. These are not physical measurements.
Download reproduction package · Instructions (EN/JA) · Files and experiment conditions (JSON)
Extract the ZIP into a new directory, then run:
python3 reproduce.py --experiment kalman
This Lab compares 4 cases. PID uses Python’s standard library; Kalman/ICP require NumPy. See the instructions for dependencies and tested versions.
टिप्पणियाँ
पहले लॉग इन करें।
अभी कोई डेटा नहीं है।