2014-06-09 11 views
18

मेरे पास एक बहुत ही बुनियादी सवाल है। Android Accelerometer के मामले में कम पास फ़िल्टर और उच्च पास फ़िल्टर क्या है?एंड्रॉइड कम पास फ़िल्टर और उच्च पास फ़िल्टर

जब मैं एक्सेलेरोमीटर सेंसर से आउटपुट देखता हूं, तो मुझे लगता है कि अगर मैं किसी भी फ़िल्टर का उपयोग नहीं करता हूं, (केस: मैंने अपना सेल फोन टेबल पर निष्क्रिय रखा है) मुझे जेड एक्सिस + वी मान मिलता है। अब यदि मैं बुनियादी भौतिकी का उपयोग करने के बारे में सोचता हूं, तो यह मुझे गुरुत्वाकर्षण के कारण छोटे जी ie त्वरण के लिए सटीक मूल्य (9.8approx) देता है।

रैखिक त्वरण प्राप्त करने के लिए, यदि मैं फोन पर कोई बल जोड़ता हूं तो यह एक्सेलेरोमीटर मान बदल देगा, लेकिन यह लागू होगा g + a। तो a प्राप्त करने के लिए मैं एक्सेलेरोमीटर से प्राप्त मूल्य से सीधे क्यों नहीं घटा सकता?

उपयोग क्या है?
मूल परिभाषा मैं कम पास के लिए समझता हूं: कम मूल्य की अनुमति देने के लिए, उच्च पास: उच्च मूल्य की अनुमति देने के लिए। कृपया इसे समझने में मेरी सहायता करें। मैं इसके साथ उलझन में हूँ।

उत्तर

16

कम पास फिल्टर: कम आवृत्ति संकेतों से गुजरता है और सीमा आवृत्ति

उच्च दर्रा से उच्च आवृत्तियों के साथ संकेतों के आयाम को कम कर देता फ़िल्टर: उच्च आवृत्ति संकेतों से गुजरता है और साथ संकेतों के आयाम को कम कर देता आवृत्तियों सीमा आवृत्ति

आप documentation को देखें, तो यह कहते हैं की तुलना में कम: "आदेश डिवाइस के वास्तविक त्वरण मापने के लिए, गुरुत्वाकर्षण के बल के योगदान सफाया होना चाहिए। यह उच्च-पास फ़िल्टर लागू करके हासिल किया जा सकता है। http://www.raweng.com/blog/2013/05/28/applying-low-pass-filter-to-android-sensors-readings/

http://developer.android.com/reference/android/hardware/SensorEvent.html#values पर डॉक्स पढ़ना, आप देख सकते हैं कि: इसके विपरीत, एक कम पास फिल्टर

आप लो-पास छानने पर इस ट्यूटोरियल की जाँच कर सकता है गुरुत्वाकर्षण के बल को अलग करने के लिए इस्तेमाल किया जा सकता है। " आप ऐसा करके सभी एक्स, वाई, जेड अक्ष पर एक मूल्यों पहुँच सकते हैं:

values[0] - a on x axis 
values[1] - a on y axis 
values[2] - a on z axis 
+1

यही वह है जो मैं पूछ रहा हूं। हम एक्सेलरियोमीटर मूल्य से सीधे 9.8 क्यों नहीं निकाल सकते हैं ... यह फोन सेंसर के वास्तविक त्वरण के अलावा कुछ भी नहीं है ... है ना? यदि आप एंड्रॉइड प्रलेखन में देखते हैं, तो उन्होंने गणना करने के लिए .8 को अल्फा के रूप में उपयोग किया। अल्फा का उपयोग क्यों करें? – Jeet

23

आप प्रलेखन को देखें, तो आपको लगता है कि SensorEvent एक सरणी जो सभी बलों की वेक्टर का प्रतिनिधित्व करता है रिटर्न देखेंगे ०१२३५१६४१०६।

values[0] //acceleration on x axis 
values[1] //acceleration on y axis 
values[2] //acceleration on z axis 

आप किस दिशा गुरुत्वाकर्षण तो विघटित कि अपने घटक भागों में में काम कर रहा है खोजने की जरूरत है:http://developer.android.com/reference/android/hardware/SensorEvent.html#values यह कैसे त्वरण के घटकों प्रत्येक अक्ष में टूट रहा है। गुरुत्वाकर्षण बल की परिमाण हमेशा 9.8 होगी लेकिन दिशा, और इसलिए यह घटकों के हिस्सों में कैसे टूट जाती है, बदल जाएगी। मान लिया जाये कि कि हम गुरुत्वाकर्षण के मूल्य मिलता है और gravity[3] की तरह एक सरणी में है कि वेक्टर संग्रहीत कर सकती है:

gravity[0] //gravity x axis 
gravity[1] //gravity y axis 
gravity[2] //gravity z axis 

कुल त्वरण, T, फोन पर T = g + a है।प्राप्त करने के लिए बस a हम a = T - g की आवश्यकता होगी:

linear_acceleration[0] = event.values[0] - gravity[0]; 
linear_acceleration[1] = event.values[1] - gravity[1]; 
linear_acceleration[2] = event.values[2] - gravity[2]; 

सूचना कैसे इस क्योंकि यह एक वेक्टर आपरेशन है तत्व से सब कुछ तत्व गणना करता है।

मुश्किल हिस्सा gravity ढूंढ रहा है क्योंकि फोन में केवल एक एक्सेलेरोमीटर है जो एक ही समय में गुरुत्वाकर्षण और अन्य शक्तियों को मापता है। हमारे पास 2 अलग-अलग शक्तियां हैं जिन्हें हम एक सेंसर से खोजना चाहते हैं। अगर हम केवल एक अलग बिंदु पर बलों को देख सकते हैं तो हम जानकारी निकालने में सक्षम नहीं होंगे। हालांकि हमें कई बार नमूने मिलते हैं और यह देखते हुए कि सेनाएं समय के साथ कैसे बदलती हैं, हम जानकारी निकाल सकते हैं।

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

0

एक्सेलेरोमीटर के आउटपुट में शोर शामिल है यदि आप इन मूल्यों से सीधे घटाते हैं जिनमें शोर शामिल है। शोर को खत्म करने के लिए इसे हाईपास और लोपास फिल्टर लागू करना आवश्यक है।

0

मैं आमतौर पर इस सूत्र का उपयोग करता हूं रैखिक सेंसर (जीरोस्कोप) डेटा के बाहर आने वाले एक्सेलोमीटर सेंसर डेटा से डेटा फ़िल्टर करने के लिए। यदि आप सुनिश्चित नहीं हैं कि अंतर्निहित Gyroscopic सेंसर है तो इसका उपयोग करें।

private float[] values; 
private float[] valuesN; 
private float[] prev; 
private float[] prevHF; 
private boolean doHPF = false; 

// ind - index of three dimensions (x, y, z) 
private void makeHPFf() { 
    for (int ind = 0; ind < 3; ind++) { 
     valuesN[ind] = values[ind] * 0.002f * 9.8f; 
     if (doHPF) 
      values[ind] = valuesN[ind] - prev[ind] + (prevHF[ind] * 0.8f); 
     prev[ind] = valuesN[ind]; 
     prevHF[ind] = values[ind]; 
    } 

    if (!doHPF) 
     doHPF = true; 
} 
संबंधित मुद्दे