मैं एक संवर्धित वास्तविकता ऐप बना रहा हूं जो फोन को ब्याज के बिंदु का सामना कर रहा है (जो जीपीएस स्थिति फोन पर संग्रहीत है) पर टेक्स्टव्यू को आसानी से देखता है। टेक्स्टव्यू स्क्रीन में रुचि के स्थान पर चित्रित किया गया है।
यह ठीक काम करता है, समस्या यह है कि कंपास और एक्सेलेरोमीटर बहुत "संस्करण" हैं, और सेंसर की अशुद्धता के कारण टेक्स्टव्यू लगातार बाएं और दाएं ऊपर और नीचे जा रहा है।
इसे हल करने का कोई तरीका है?
4 जवाब
हमारी समस्या एक ही है। जब मैं साधारण संवर्धित वास्तविकता परियोजना बनाता हूं तो मुझे भी यही समस्या होती थी। इसका समाधान एक्सपोनेंशियल स्मूथिंग या मूविंग एवरेज फ़ंक्शन का उपयोग करना है। मैं एक्सपोनेंशियल स्मूथिंग की सलाह देता हूं क्योंकि इसे केवल एक पिछले मानों को स्टोर करने की आवश्यकता होती है। नमूना कार्यान्वयन नीचे उपलब्ध है:
private float[] exponentialSmoothing( float[] input, float[] output, float alpha ) {
if ( output == null )
return input;
for ( int i=0; i<input.length; i++ ) {
output[i] = output[i] + alpha * (input[i] - output[i]);
}
return output;
}
अल्फा स्मूथिंग फैक्टर है (0<= अल्फा <=1)। यदि आप अल्फा = 1 सेट करते हैं, तो आउटपुट इनपुट के समान होगा (बिल्कुल भी चिकनाई नहीं)। यदि आप अल्फा = 0 सेट करते हैं, तो आउटपुट कभी नहीं बदलेगा। शोर को दूर करने के लिए, आप बस एक्सेलेरोमीटर और मैग्नेटोमीटर मानों को चिकना कर सकते हैं।
मेरे मामले में, मैं एक्सेलेरोमीटर अल्फा वैल्यू = 0.2 और मैग्नेटोमीटर अल्फा वैल्यू = 0.5 का उपयोग करता हूं। वस्तु अधिक स्थिर होगी और गति काफी अच्छी होगी।
यदि आप एक कदम और आगे बढ़ना चाहते हैं, तो आपको अपने ओरिएंटेशन डेटा या सेंसर फ़्यूज़न के लिए लो-पास फ़िल्टर पर एक नज़र डालनी चाहिए।
अपने ऐप के साथ गुड लक।
JQCorreia
मैंने इसे एक साधारण ट्रिक से हल किया। यह आपके परिणामों में थोड़ा विलंब करेगा लेकिन वे निश्चित रूप से कंपास और एक्सेलेरोमीटर की अशुद्धि से बचेंगे।
पिछले N
मानों का इतिहास बनाएं (इसलिए मान को एक सरणी में सहेजें, वृद्धि सूचकांक, जब आप N
तक पहुंचें तो फिर से शून्य से शुरू करें)। फिर आप बस संग्रहीत मूल्यों के अंकगणितीय औसत का उपयोग करते हैं।
जाइरोस्कोप सेंसर रीडिंग का एकीकरण उन्मुखीकरण के अंतिम अनुमान की स्थिरता में एक बड़ा सुधार दे सकता है। यदि आपके डिवाइस में ए जाइरोस्कोप, या अगर आपके पास जाइरोस्कोप नहीं है तो वीडियो देखें।
जाइरोस्कोप का एकीकरण एक पूरक फ़िल्टर का उपयोग करके अपेक्षाकृत सरल तरीके से किया जा सकता है।
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।