विषयसूची:

एक्सेलेरोमीटर और गायरो ट्यूटोरियल: ३ चरण
एक्सेलेरोमीटर और गायरो ट्यूटोरियल: ३ चरण

वीडियो: एक्सेलेरोमीटर और गायरो ट्यूटोरियल: ३ चरण

वीडियो: एक्सेलेरोमीटर और गायरो ट्यूटोरियल: ३ चरण
वीडियो: All About Accelerometers for Vibration and Shock Testing 2024, जुलाई
Anonim
एक्सेलेरोमीटर और गायरो ट्यूटोरियल
एक्सेलेरोमीटर और गायरो ट्यूटोरियल

परिचय

यह मार्गदर्शिका उन सभी के लिए अभिप्रेत है जो अपनी इलेक्ट्रॉनिक्स परियोजनाओं में एक्सेलेरोमीटर और गायरोस्कोप के साथ-साथ संयोजन IMU उपकरणों (जड़त्वीय मापन इकाई) का उपयोग करने में रुचि रखते हैं।

हम कवर करेंगे:

  • एक्सेलेरोमीटर क्या मापता है?
  • जाइरोस्कोप (उर्फ गायरो) क्या मापता है?
  • इन सेंसर से प्राप्त होने वाली एनालॉग-टू-डिजिटल (एडीसी) रीडिंग को भौतिक इकाइयों में कैसे परिवर्तित करें (वे एक्सेलेरोमीटर के लिए जी, जीरोस्कोप के लिए डिग्री/एस होंगे)
  • ग्राउंड प्लेन के सापेक्ष अपने डिवाइस के झुकाव के बारे में सटीक जानकारी प्राप्त करने के लिए एक्सेलेरोमीटर और जाइरोस्कोप रीडिंग को कैसे संयोजित करें

पूरे लेख में मैं गणित को न्यूनतम रखने की कोशिश करूंगा। यदि आप जानते हैं कि साइन/कोसाइन/स्पर्शरेखा क्या हैं, तो आपको अपने प्रोजेक्ट में इन विचारों को समझने और उपयोग करने में सक्षम होना चाहिए, चाहे आप किसी भी प्लेटफ़ॉर्म का उपयोग कर रहे हों: Arduino, Propeller, Basic Stamp, Atmel चिप्स, माइक्रोचिप PIC, आदि।

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

मैं एक उदाहरण के रूप में एक नई IMU इकाई, Acc_Gyro Accelerometer + Gyro IMU का उपयोग करूँगा। हम नीचे दिए गए उदाहरणों में इस उपकरण के मापदंडों का उपयोग करेंगे। यह इकाई शुरू करने के लिए एक अच्छा उपकरण है क्योंकि इसमें 2 उपकरण होते हैं:

- LIS331AL (डेटा शीट) - एक त्रिअक्षीय 2G एक्सेलेरोमीटर - LPR550AL (डेटा शीट) - एक डुअल-एक्सिस पिच और रोल, 500 डिग्री/सेकंड जाइरोस्कोप

साथ में वे 5-डिग्री स्वतंत्रता जड़त्वीय मापन इकाई का प्रतिनिधित्व करते हैं। अब यह एक फैंसी नाम है! फिर भी, फैंसी नाम के पीछे एक बहुत ही उपयोगी संयोजन उपकरण है जिसे हम इस गाइड में विस्तार से बताएंगे और समझाएंगे।

चरण 1: एक्सेलेरोमीटर

एक्सेलेरोमीटर
एक्सेलेरोमीटर

इस इकाई को समझने के लिए हम एक्सेलेरोमीटर से शुरुआत करेंगे। एक्सेलेरोमीटर के बारे में सोचते समय अक्सर एक क्यूब के आकार में एक बॉक्स को उसके अंदर एक गेंद के साथ चित्रित करना उपयोगी होता है। आप कुकी या डोनट जैसी किसी और चीज़ की कल्पना कर सकते हैं, लेकिन मैं एक गेंद की कल्पना करूंगा:

एक्सेलेरोमीटर मॉडल
एक्सेलेरोमीटर मॉडल

यदि हम इस बॉक्स को ऐसे स्थान पर ले जाते हैं जहां कोई गुरुत्वाकर्षण क्षेत्र नहीं है या उस मामले के लिए कोई अन्य क्षेत्र नहीं है जो गेंद की स्थिति को प्रभावित कर सकता है - गेंद बस बॉक्स के बीच में तैर जाएगी। आप कल्पना कर सकते हैं कि बॉक्स किसी भी ब्रह्मांडीय पिंडों से बहुत दूर बाहरी-अंतरिक्ष में है, या यदि ऐसी जगह को खोजना मुश्किल है, तो कम से कम एक अंतरिक्ष यान की कल्पना करें जो ग्रह के चारों ओर परिक्रमा कर रहा हो जहां सब कुछ भारहीन अवस्था में हो। ऊपर की तस्वीर से आप देख सकते हैं कि हम प्रत्येक अक्ष को दीवारों की एक जोड़ी प्रदान करते हैं (हमने दीवार Y+ को हटा दिया ताकि हम बॉक्स के अंदर देख सकें)। कल्पना कीजिए कि प्रत्येक दीवार दबाव संवेदनशील है। यदि हम अचानक बॉक्स को बाईं ओर ले जाते हैं (हम इसे त्वरण 1g = 9.8m/s^2 के साथ तेज करते हैं), तो गेंद दीवार X- से टकराएगी। फिर हम उस दबाव बल को मापते हैं जो गेंद दीवार पर लागू होती है और एक्स अक्ष पर -1g का मान आउटपुट करती है।

एक्सेलेरोमीटर मॉडल
एक्सेलेरोमीटर मॉडल

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

यदि हम अपना मॉडल लेते हैं और इसे पृथ्वी पर रखते हैं तो गेंद Z- दीवार पर गिरेगी और नीचे की दीवार पर 1g का बल लगाएगी, जैसा कि नीचे दिए गए चित्र में दिखाया गया है:

एक्सेलेरोमीटर मॉडल
एक्सेलेरोमीटर मॉडल

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

हालांकि यह मॉडल ठीक नहीं है कि एमईएमएस सेंसर का निर्माण कैसे किया जाता है, यह अक्सर एक्सेलेरोमीटर से संबंधित समस्याओं को हल करने में उपयोगी होता है। वास्तव में समान सेंसर होते हैं जिनके अंदर धातु की गेंदें होती हैं, उन्हें झुकाव स्विच कहा जाता है, हालांकि वे अधिक आदिम होते हैं और आमतौर पर वे केवल यह बता सकते हैं कि डिवाइस किसी सीमा के भीतर झुका हुआ है या नहीं, झुकाव की सीमा नहीं है।

अब तक हमने एक ही अक्ष पर एक्सेलेरोमीटर आउटपुट का विश्लेषण किया है और यह आपको सिंगल एक्सिस एक्सेलेरोमीटर के साथ मिलेगा। त्रिअक्षीय एक्सेलेरोमीटर का वास्तविक मूल्य इस तथ्य से आता है कि वे तीनों अक्षों पर जड़त्वीय बलों का पता लगा सकते हैं। आइए अपने बॉक्स मॉडल पर वापस जाएं, और बॉक्स को 45 डिग्री दाईं ओर घुमाएं। गेंद अब 2 दीवारों को छूएगी: Z- और X- जैसा कि नीचे दिए गए चित्र में दिखाया गया है:

एक्सेलेरोमीटर मॉडल
एक्सेलेरोमीटर मॉडल

0.71 के मान मनमाना नहीं हैं, वे वास्तव में SQRT(1/2) के लिए एक सन्निकटन हैं। यह और अधिक स्पष्ट हो जाएगा जब हम एक्सेलेरोमीटर के लिए अपना अगला मॉडल पेश करेंगे।

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

एक्सेलेरोमीटर मॉडल
एक्सेलेरोमीटर मॉडल

कृपया उपरोक्त मॉडल पर एक नज़र डालें, मैंने कुल्हाड़ियों के रंगों को संरक्षित किया है ताकि आप पिछले मॉडल से नए मॉडल में मानसिक संक्रमण कर सकें। जरा कल्पना करें कि नए मॉडल में प्रत्येक अक्ष पिछले मॉडल में बॉक्स के संबंधित चेहरों के लंबवत है। वेक्टर आर बल वेक्टर है जिसे एक्सेलेरोमीटर माप रहा है (यह या तो गुरुत्वाकर्षण बल या उपरोक्त उदाहरणों से जड़त्वीय बल या दोनों का संयोजन हो सकता है)। Rx, Ry, Rz, X, Y, Z अक्षों पर R वेक्टर के प्रक्षेपण हैं। कृपया निम्नलिखित संबंध पर ध्यान दें:

R^2 = Rx^2 + Ry^2 + Rz^2 (समीकरण 1)

जो मूल रूप से 3D में पाइथागोरस प्रमेय के समतुल्य है।

याद रखें कि थोड़ा पहले मैंने आपको बताया था कि SQRT(1/2) ~ 0.71 के मान यादृच्छिक नहीं हैं। यदि आप उन्हें उपरोक्त सूत्र में जोड़ते हैं, तो यह याद करने के बाद कि हमारा गुरुत्वाकर्षण बल 1 ग्राम था, हम सत्यापित कर सकते हैं कि:

1^2 = (-एसक्यूआरटी(1/2))^2 + 0 ^2 + (-एसक्यूआरटी(1/2))^2

समीकरण 1 में R=1, Rx = -SQRT(1/2), Ry = 0, Rz = -SQRT(1/2) को प्रतिस्थापित करने पर

सिद्धांत की लंबी प्रस्तावना के बाद हम वास्तविक जीवन एक्सेलेरोमीटर के करीब पहुंच रहे हैं। मान Rx, Ry, Rz वास्तव में उन मानों से रैखिक रूप से संबंधित हैं जो आपका वास्तविक जीवन एक्सेलेरोमीटर आउटपुट करेगा और जिसका उपयोग आप विभिन्न गणनाओं को करने के लिए कर सकते हैं।

इससे पहले कि हम वहाँ पहुँचें, आइए इस बारे में थोड़ी बात करें कि एक्सेलेरोमीटर हमें यह जानकारी कैसे देगा। अधिकांश एक्सेलेरोमीटर दो श्रेणियों में आते हैं: डिजिटल और एनालॉग। डिजिटल एक्सेलेरोमीटर आपको I2C, SPI या USART जैसे सीरियल प्रोटोकॉल का उपयोग करके जानकारी देगा, जबकि एनालॉग एक्सेलेरोमीटर एक पूर्वनिर्धारित सीमा के भीतर एक वोल्टेज स्तर का उत्पादन करेगा जिसे आपको ADC (डिजिटल कनवर्टर के अनुरूप) मॉड्यूल का उपयोग करके एक डिजिटल मान में बदलना होगा। मैं इस बारे में अधिक विस्तार से नहीं बताऊंगा कि एडीसी कैसे काम करता है, आंशिक रूप से क्योंकि यह इतना व्यापक विषय है और आंशिक रूप से क्योंकि यह एक मंच से दूसरे मंच पर भिन्न है। कुछ माइक्रोकंट्रोलर में एक अंतर्निहित एडीसी मॉड्यूल होगा, उनमें से कुछ को एडीसी रूपांतरण करने के लिए बाहरी घटकों की आवश्यकता होगी। कोई फर्क नहीं पड़ता कि आप किस प्रकार के एडीसी मॉड्यूल का उपयोग करते हैं, आप एक निश्चित सीमा में एक मूल्य के साथ समाप्त होंगे। उदाहरण के लिए 10-बिट एडीसी मॉड्यूल 0..1023 की सीमा में एक मान आउटपुट करेगा, ध्यान दें कि 1023 = 2^10 -1। एक 12-बिट एडीसी मॉड्यूल 0..4095 की सीमा में एक मान का उत्पादन करेगा, ध्यान दें कि 4095 = 2^12-1।

आइए एक सरल उदाहरण पर विचार करके आगे बढ़ते हैं, मान लीजिए कि हमारे 10 बिट एडीसी मॉड्यूल ने हमें तीन एक्सेलेरोमीटर चैनलों (अक्ष) के लिए निम्नलिखित मान दिए हैं:

AdcRx = 586 AdcRy = 630 AdcRz = 561

प्रत्येक एडीसी मॉड्यूल में एक संदर्भ वोल्टेज होगा, आइए हमारे उदाहरण में मान लें कि यह 3.3V है। 10 बिट एडीसी मान को वोल्टेज में बदलने के लिए हम निम्नलिखित सूत्र का उपयोग करते हैं:

VoltsRx = AdcRx * Vref / 1023

यहां एक त्वरित नोट: कि 8 बिट एडीसी के लिए अंतिम विभक्त 255 = 2 ^ 8 -1 होगा, और 12 बिट एडीसी के लिए अंतिम विभक्त 4095 = 2^12 -1 होगा।

इस सूत्र को सभी 3 चैनलों पर लागू करने पर हमें प्राप्त होता है:

VoltsRx = 586 * 3.3V / 1023 =~ 1.89V (हम सभी परिणामों को 2 दशमलव बिंदुओं तक गोल करते हैं) VoltsRy = 630 * 3.3V / 1023 =~ 2.03V VoltsRz = 561 * 3.3V / 1023 =~ 1.81V

प्रत्येक एक्सेलेरोमीटर में शून्य-जी वोल्टेज स्तर होता है, आप इसे चश्मे में पा सकते हैं, यह वोल्टेज है जो 0 जी से मेल खाता है। एक हस्ताक्षरित वोल्टेज मान प्राप्त करने के लिए हमें इस स्तर से बदलाव की गणना करने की आवश्यकता है। मान लें कि हमारा 0g वोल्टेज स्तर VzeroG = 1.65V है। हम शून्य-जी वोल्टेज से वोल्टेज बदलाव की गणना निम्नानुसार करते हैं::

DeltaVoltsRx = 1.89V - 1.65V = 0.24V DeltaVoltsRy = 2.03V - 1.65V = 0.38V DeltaVoltsRz = 1.81V - 1.65V = 0.16V

अब हमारे पास वोल्ट में हमारे एक्सेलेरोमीटर रीडिंग हैं, यह अभी भी जी (9.8 मीटर/सेकेंड ^ 2) में नहीं है, अंतिम रूपांतरण करने के लिए हम एक्सेलेरोमीटर संवेदनशीलता लागू करते हैं, आमतौर पर एमवी/जी में व्यक्त किया जाता है। मान लें कि हमारी संवेदनशीलता = 478.5mV/g = 0.4785V/g है। एक्सेलेरोमीटर विनिर्देशों में संवेदनशीलता मान पाए जा सकते हैं। g में व्यक्त अंतिम बल मान प्राप्त करने के लिए हम निम्नलिखित सूत्र का उपयोग करते हैं:

आरएक्स = डेल्टा वोल्ट्सआरएक्स / संवेदनशीलता

आरएक्स = 0.24 वी / 0.4785 वी / जी = ~ 0.5 जी राय = 0.38 वी / 0.4785 वी / जी = ~ 0.79 जी आरजेड = 0.16 वी / 0.4785 वी / जी = ~ 0.33 जी

हम निश्चित रूप से सभी चरणों को एक सूत्र में जोड़ सकते हैं, लेकिन मैं यह स्पष्ट करने के लिए सभी चरणों से गुजरा कि आप एडीसी रीडिंग से जी में व्यक्त एक बल वेक्टर घटक तक कैसे जाते हैं।

Rx = (AdcRx * Vref / 1023 - VzeroG) / संवेदनशीलता (Eq.2) Ry = (AdcRy * Vref / 1023 - VzeroG) / संवेदनशीलता Rz = (AdcRz * Vref / 1023 - VzeroG) / संवेदनशीलता

अब हमारे पास सभी 3 घटक हैं जो हमारे जड़त्वीय बल वेक्टर को परिभाषित करते हैं, यदि डिवाइस गुरुत्वाकर्षण के अलावा अन्य बलों के अधीन नहीं है, तो हम मान सकते हैं कि यह हमारे गुरुत्वाकर्षण बल वेक्टर की दिशा है। यदि आप जमीन के सापेक्ष डिवाइस के झुकाव की गणना करना चाहते हैं तो आप इस वेक्टर और Z अक्ष के बीच के कोण की गणना कर सकते हैं। यदि आप झुकाव की प्रति-अक्ष दिशा में भी रुचि रखते हैं तो आप इस परिणाम को 2 घटकों में विभाजित कर सकते हैं: एक्स और वाई अक्ष पर झुकाव जिसे गुरुत्वाकर्षण वेक्टर और एक्स/वाई अक्ष के बीच कोण के रूप में गणना की जा सकती है। इन कोणों की गणना करना आपके विचार से कहीं अधिक सरल है, अब जबकि हमने Rx, Ry और Rz के मानों की गणना कर ली है। आइए अपने पिछले एक्सेलेरोमीटर मॉडल पर वापस जाएं और कुछ अतिरिक्त नोटेशन करें:

छवि
छवि

हम जिन कोणों में रुचि रखते हैं, वे X, Y, Z अक्षों और बल सदिश R के बीच के कोण हैं। हम इन कोणों को Axr, Ayr, Azr के रूप में परिभाषित करेंगे। आप R और Rx द्वारा निर्मित समकोण त्रिभुज से देख सकते हैं कि:

cos(Axr) = Rx / R, और इसी तरह: cos(Ayr) = Ry / R cos(Azr) = Rz / R

हम समीकरण 1 से घटा सकते हैं कि R = SQRT(Rx^2 + Ry^2 + Rz^2)।

हम आर्ककोस () फ़ंक्शन (उलटा कॉस () फ़ंक्शन) का उपयोग करके अब अपने कोण पा सकते हैं:

Axr = arccos(Rx/R) Ayr = arccos(Ry/R) Azr = arccos(Rz/R)

हमने एक्सेलेरोमीटर मॉडल की व्याख्या करने के लिए एक लंबा सफर तय किया है, बस इन फ़ार्मुलों तक आने के लिए। आपके अनुप्रयोगों के आधार पर आप हमारे द्वारा प्राप्त किए गए किसी भी मध्यवर्ती फ़ार्मुलों का उपयोग करना चाह सकते हैं। हम जल्द ही जाइरोस्कोप मॉडल भी पेश करेंगे, और हम देखेंगे कि कैसे अधिक सटीक झुकाव अनुमान प्रदान करने के लिए एक्सेलेरोमीटर और जायरोस्कोप डेटा को जोड़ा जा सकता है।

लेकिन इससे पहले कि हम कुछ और उपयोगी नोटेशन करें:

cosX = cos(Axr) = Rx / R आरामदायक = cos(Ayr) = Ry / R cosZ = cos(Azr) = Rz / R

इस ट्रिपल को अक्सर डायरेक्शन कोसाइन कहा जाता है, और यह मूल रूप से यूनिट वेक्टर (लंबाई 1 के साथ वेक्टर) का प्रतिनिधित्व करता है जिसकी दिशा हमारे आर वेक्टर के समान होती है। आप इसे आसानी से सत्यापित कर सकते हैं:

SQRT(cosX^2 + cosY^2 + cosZ^2) = 1

यह एक अच्छा गुण है क्योंकि यह हमें R वेक्टर के मापांक (लंबाई) की निगरानी से मुक्त करता है। कई बार यदि हम अपने जड़त्वीय सदिश की दिशा में रुचि रखते हैं, तो अन्य गणनाओं को सरल बनाने के लिए इसके मापांक को सामान्य करना समझ में आता है।

चरण 2: गायरोस्कोप

जाइरोस्कोप
जाइरोस्कोप

हम जाइरोस्कोप के लिए किसी भी समकक्ष बॉक्स मॉडल को पेश नहीं करने जा रहे हैं जैसे हमने एक्सेलेरोमीटर के लिए किया था, इसके बजाय हम सीधे दूसरे एक्सेलेरोमीटर मॉडल पर जा रहे हैं और हम दिखाएंगे कि इस मॉडल के अनुसार जाइरोस्कोप क्या मापता है।

छवि
छवि

प्रत्येक जाइरोस्कोप चैनल कुल्हाड़ियों में से एक के चारों ओर रोटेशन को मापता है। उदाहरण के लिए एक 2-अक्ष गायरोस्कोप एक्स और वाई अक्षों के चारों ओर घूर्णन को मापेगा (या कुछ "के बारे में" कह सकते हैं)। इस रोटेशन को संख्याओं में व्यक्त करने के लिए आइए कुछ नोटेशन करें। आइए पहले परिभाषित करें:

Rxz - XZ समतल पर जड़त्वीय बल सदिश R का प्रक्षेपण है Ryz - YZ तल पर जड़त्वीय बल सदिश R का प्रक्षेपण है

Rxz और Rz द्वारा बनाए गए समकोण त्रिभुज से, पाइथागोरस प्रमेय का उपयोग करके हम प्राप्त करते हैं:

Rxz^2 = Rx^2 + Rz^2, और इसी तरह: Ryz^2 = Ry^2 + Rz^2

यह भी ध्यान दें कि:

R^2 = Rxz^2 + Ry^2, इसे Eq.1 और ऊपर के समीकरणों से प्राप्त किया जा सकता है, या इसे R और Ryz R^2 = Ryz^2 + Rx^2 द्वारा निर्मित समकोण त्रिभुज से प्राप्त किया जा सकता है

हम इस लेख में इन सूत्रों का उपयोग नहीं करने जा रहे हैं, लेकिन हमारे मॉडल में सभी मूल्यों के बीच संबंध को नोट करना उपयोगी है।

इसके बजाय हम Z अक्ष और Rxz, Ryz वैक्टर के बीच के कोण को निम्नानुसार परिभाषित करने जा रहे हैं:

Axz - Rxz (XZ समतल पर R का प्रक्षेपण) और Z अक्ष Ayz के बीच का कोण है - Ryz (YZ समतल पर R का प्रक्षेपण) और Z अक्ष के बीच का कोण है

अब हम जाइरोस्कोप के उपायों के करीब पहुंच रहे हैं। Gyroscope ऊपर परिभाषित कोणों के परिवर्तन की दर को मापता है। दूसरे शब्दों में यह एक ऐसे मान का उत्पादन करेगा जो इन कोणों के परिवर्तन की दर से रैखिक रूप से संबंधित है। इसे समझाने के लिए मान लेते हैं कि हमने समय t0 पर अक्ष Y (जो कि Axz कोण होगा) के चारों ओर रोटेशन कोण को मापा है, और हम इसे Axz0 के रूप में परिभाषित करते हैं, इसके बाद हमने इस कोण को बाद के समय t1 पर मापा और यह Axz1 था। परिवर्तन की दर की गणना निम्नानुसार की जाएगी:

रेटएक्सज़ = (एक्सज़१ - एक्सज़०) / (टी१ - टी०)।

यदि हम Axz को अंशों में और समय को सेकंडों में व्यक्त करते हैं, तो यह मान deg/s में व्यक्त किया जाएगा। यह वही है जो एक जाइरोस्कोप मापता है।

व्यवहार में एक जाइरोस्कोप (जब तक कि यह एक विशेष डिजिटल जाइरोस्कोप न हो) आपको शायद ही कभी डिग्री/सेकेंड में व्यक्त मूल्य देगा। एक्सेलेरोमीटर के समान ही आपको एक ADC मान मिलेगा जिसे आपको Eq के समान सूत्र का उपयोग करके deg/s में बदलना होगा। 2 जिसे हमने एक्सेलेरोमीटर के लिए परिभाषित किया है। आइए जाइरोस्कोप के लिए एडीसी को डीजी/एस रूपांतरण फॉर्मूला पेश करते हैं (हम मानते हैं कि हम 10 बिट एडीसी मॉड्यूल का उपयोग कर रहे हैं, 8 बिट एडीसी के लिए 1023 को 255 से बदलें, 12 बिट एडीसी के लिए 1023 को 4095 से बदलें)।

RateAxz = (AdcGyroXZ * Vref / 1023 - VzeroRate) / संवेदनशीलता Eq.3 RateAyz = (AdcGyroYZ * Vref / 1023 - VzeroRate) / संवेदनशीलता

AdcGyroXZ, AdcGyroYZ - हमारे adc मॉड्यूल से प्राप्त किए गए हैं और वे उन चैनलों का प्रतिनिधित्व करते हैं जो YZ विमानों में क्रमशः XZ में R वेक्टर के प्रक्षेपण के रोटेशन को मापते हैं, जो कि क्रमशः Y और X अक्षों के आसपास किए गए रोटेशन के बराबर है।

Vref - ADC संदर्भ वोल्टेज है जिसका उपयोग हम VzeroRate के नीचे के उदाहरण में 3.3V करेंगे - शून्य-दर वोल्टेज है, दूसरे शब्दों में वह वोल्टेज जो जाइरोस्कोप आउटपुट करता है जब यह किसी रोटेशन के अधीन नहीं होता है, Acc_Gyro बोर्ड के लिए यह है उदाहरण के लिए 1.23V (आप चश्मे में यह मान पा सकते हैं) संवेदनशीलता - आपके जाइरोस्कोप की संवेदनशीलता है जिसे एमवी / (डिग्री / एस) में व्यक्त किया जाता है जिसे अक्सर एमवी / डीजी / एस के रूप में लिखा जाता है, यह मूल रूप से आपको बताता है कि कितने एमवी होंगे यदि आप रोटेशन की गति को एक डिग्री/सेकेंड बढ़ाते हैं, तो जाइरोस्कोप आउटपुट में वृद्धि होती है। Acc_Gyro बोर्ड की संवेदनशीलता उदाहरण के लिए 2mV/deg/s या 0.002V/deg/s है

आइए एक उदाहरण लेते हैं, मान लीजिए कि हमारे एडीसी मॉड्यूल ने निम्नलिखित मान लौटाए हैं:

AdcGyroXZ = 571 AdcGyroXZ = 323

उपरोक्त सूत्र का उपयोग करके, और Acc_Gyro बोर्ड के विशिष्ट मापदंडों का उपयोग करके हम प्राप्त करेंगे:

RateAxz = (571 * 3.3V / 1023 - 1.23V) / (0.002V/deg/s) =~ 306 deg/s RateAyz = (323 * 3.3V / 1023 - 1.23V) / (0.002V/deg/s) =~ -94 डिग्री/एस

दूसरे शब्दों में, डिवाइस Y अक्ष के चारों ओर घूमता है (या हम कह सकते हैं कि यह XZ विमान में घूमता है) 306 deg/s की गति से और X अक्ष के चारों ओर (या हम कह सकते हैं कि यह YZ विमान में घूमता है) की गति के साथ - ९४ डिग्री/एस. कृपया ध्यान दें कि नकारात्मक संकेत का अर्थ है कि उपकरण पारंपरिक सकारात्मक दिशा से विपरीत दिशा में घूमता है। परंपरा के अनुसार घूर्णन की एक दिशा धनात्मक होती है। एक अच्छी जाइरोस्कोप विनिर्देश शीट आपको दिखाएगी कि कौन सी दिशा सकारात्मक है, अन्यथा आपको डिवाइस के साथ प्रयोग करके और आउटपुट पिन पर वोल्टेज बढ़ने के परिणामस्वरूप रोटेशन की किस दिशा का पता लगाना होगा। यह एक आस्टसीलस्कप का उपयोग करके सबसे अच्छा किया जाता है क्योंकि जैसे ही आप रोटेशन को रोकते हैं, वोल्टेज शून्य-दर के स्तर पर वापस आ जाएगा। यदि आप एक मल्टीमीटर का उपयोग कर रहे हैं, तो आपको कम से कम कुछ सेकंड के लिए एक स्थिर रोटेशन दर बनाए रखनी होगी और इस रोटेशन के दौरान वोल्टेज को नोट करना होगा, फिर इसकी तुलना शून्य-दर वोल्टेज से करें। यदि यह शून्य-दर वोल्टेज से अधिक है तो इसका मतलब है कि रोटेशन की दिशा सकारात्मक है।

चरण 3: एक्सेलेरोमीटर और गायरो को मिलाना

Accelerometer और Gyro. का मेल
Accelerometer और Gyro. का मेल

यह सब एक साथ रखना - एक्सेलेरोमीटर और जाइरोस्कोप डेटा का मेल।

यदि आप इस लेख को पढ़ रहे हैं तो आपने शायद एक IMU डिवाइस हासिल कर लिया है या एक IMU डिवाइस हासिल करने की योजना बना रहे हैं, या शायद आप अलग एक्सेलेरोमीटर और जायरोस्कोप डिवाइस से एक बनाने की योजना बना रहे हैं।

एक संयोजन IMU डिवाइस का उपयोग करने में पहला कदम जो एक एक्सेलेरोमीटर और एक जाइरोस्कोप को जोड़ता है, उनके समन्वय प्रणालियों को संरेखित करना है। ऐसा करने का सबसे आसान तरीका है कि आप अपने संदर्भ समन्वय प्रणाली के रूप में एक्सेलेरोमीटर की समन्वय प्रणाली को चुनें। अधिकांश एक्सेलेरोमीटर डेटा शीट भौतिक चिप या डिवाइस की छवि के सापेक्ष एक्स, वाई, जेड अक्ष की दिशा प्रदर्शित करेगी। उदाहरण के लिए यहाँ X, Y, Z कुल्हाड़ियों के निर्देश दिए गए हैं जैसा कि Acc_Gyro बोर्ड के विनिर्देशों में दिखाया गया है:

acc_gyro कुल्हाड़ियों
acc_gyro कुल्हाड़ियों

अगले चरण हैं:

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

यह न मानें कि यदि जाइरोस्कोप में एक्स या वाई के रूप में चिह्नित आउटपुट है, तो यह एक्सेलेरोमीटर समन्वय प्रणाली में किसी भी अक्ष के अनुरूप होगा, भले ही यह आउटपुट आईएमयू इकाई का हिस्सा हो। इसका परीक्षण करने का सबसे अच्छा तरीका है। मान लें कि आपने एक्सेलेरोमीटर के सापेक्ष जाइरोस्कोप की स्थिति तय कर ली है। यह माना जाता है कि जाइरो और एक्सेलेरोमीटर बॉर्डर एक दूसरे के समानांतर हैं, यानी आप जाइरो को एक्सेलेरोमीटर चिप के सापेक्ष 90deg के कोण गुणक पर रख रहे हैं। यदि आपने IMU बोर्ड हासिल कर लिया है तो संभावना है कि वे पहले से ही इस तरह से संरेखित हैं। हम इस लेख में उन मॉडलों पर चर्चा नहीं करने जा रहे हैं जहां जाइरोस्कोप को एक्सेलेरोमीटर के सापेक्ष एक अनियमित कोण पर रखा गया है (मान लीजिए 45 या 30 डिग्री), हालांकि यह कुछ अनुप्रयोगों में उपयोगी हो सकता है।

यह निर्धारित करने के लिए एक नमूना अनुक्रम है कि जाइरोस्कोप का कौन सा आउटपुट ऊपर चर्चा किए गए रेटएक्सज़ मूल्य से मेल खाता है।

- डिवाइस को क्षैतिज स्थिति में रखने से शुरू करें। एक्सेलेरोमीटर के एक्स और वाई दोनों आउटपुट शून्य-जी वोल्टेज का उत्पादन करेंगे (उदाहरण के लिए Acc_Gyro बोर्ड के लिए यह 1.65V है)

- इसके बाद डिवाइस को Y अक्ष के चारों ओर घुमाना शुरू करें, यह कहने का दूसरा तरीका यह है कि आप डिवाइस को XZ प्लेन में घुमाते हैं, ताकि X और Z एक्सेलेरोमीटर आउटपुट बदल जाए और Y आउटपुट स्थिर रहे। - डिवाइस को एक स्थिर गति से घुमाते समय नोट करें कि कौन सा जाइरोस्कोप आउटपुट बदलता है, अन्य जाइरोस्कोप आउटपुट स्थिर रहना चाहिए - जाइरोस्कोप आउटपुट जो Y अक्ष के चारों ओर घूमने के दौरान बदल गया (XZ प्लेन में रोटेशन) AdcGyroXZ के लिए इनपुट मान प्रदान करेगा, जिससे हम रेटएक्सज़ की गणना करते हैं - अंतिम चरण यह सुनिश्चित करना है कि रोटेशन की दिशा हमारे मॉडल से मेल खाती है, कुछ मामलों में आपको एक्सेलेरोमीटर के सापेक्ष जाइरोस्कोप की भौतिक स्थिति के कारण रेटएक्सज़ मान को उल्टा करना पड़ सकता है - उपरोक्त परीक्षण को फिर से करें, डिवाइस को चारों ओर घुमाते हुए Y अक्ष, इस बार एक्सेलेरोमीटर (हमारे मॉडल में AdcRx) के X आउटपुट की निगरानी करें। यदि AdcRx बढ़ता है (क्षैतिज स्थिति से घूर्णन का पहला 90 डिग्री), तो AdcGyroXZ भी बढ़ना चाहिए। अन्यथा आपको RateAxz को उल्टा करने की आवश्यकता है, आप इसे Eq.3 में एक संकेत कारक पेश करके प्राप्त कर सकते हैं, जो निम्नानुसार है:

RateAxz = InvertAxz * (AdcGyroXZ * Vref / 1023 - VzeroRate) / संवेदनशीलता, जहाँ InvertAxz 1 या -1 है

एक्स अक्ष के चारों ओर डिवाइस को घुमाकर, रेटएज़ के लिए एक ही परीक्षण गन्ना किया जा सकता है, और आप यह पहचान सकते हैं कि कौन सा जीरोस्कोप आउटपुट रेटएज़ से मेल खाता है, और यदि इसे उलटा करने की आवश्यकता है। एक बार जब आपके पास InvertAyz का मान हो, तो आपको RateAyz की गणना करने के लिए निम्न सूत्र का उपयोग करना चाहिए:

RateAyz = InvertAyz * (AdcGyroYZ * Vref / 1023 - VzeroRate) / संवेदनशीलता

यदि आप Acc_Gyro बोर्ड पर ये परीक्षण करेंगे तो आपको निम्नलिखित परिणाम प्राप्त होंगे:

- RateAxz के लिए आउटपुट पिन GX4 और InvertAxz = -1 है। - RateAyz के लिए आउटपुट पिन GY4 है और InvertAyz = -1

इस बिंदु से हम विचार करेंगे कि आपने अपना IMU इस तरह से सेटअप किया है कि आप Axr, Ayr, Azr (जैसा कि परिभाषित भाग 1 एक्सेलेरोमीटर) और रेटएक्सज़, रेटएज़ (जैसा कि भाग 2 में परिभाषित किया गया है) के लिए सही मानों की गणना कर सकते हैं।) आगे हम इन मूल्यों के बीच संबंधों का विश्लेषण करेंगे जो जमीनी तल के सापेक्ष उपकरण के झुकाव का अधिक सटीक अनुमान प्राप्त करने में उपयोगी साबित होते हैं।

आप इस बिंदु से खुद से पूछ रहे होंगे, अगर एक्सेलेरोमीटर मॉडल ने हमें पहले से ही Axr, Ayr, Azr के झुकाव कोण दिए हैं, तो हम जाइरोस्कोप डेटा से परेशान क्यों होना चाहेंगे? उत्तर सरल है: एक्सेलेरोमीटर डेटा पर हमेशा 100% भरोसा नहीं किया जा सकता है। कई कारण हैं, याद रखें कि एक्सेलेरोमीटर जड़त्वीय बल को मापता है, ऐसा बल गुरुत्वाकर्षण (और आदर्श रूप से केवल गुरुत्वाकर्षण द्वारा) के कारण हो सकता है, लेकिन यह डिवाइस के त्वरण (आंदोलन) के कारण भी हो सकता है। नतीजतन, भले ही एक्सेलेरोमीटर अपेक्षाकृत स्थिर स्थिति में हो, फिर भी यह कंपन और सामान्य रूप से यांत्रिक शोर के प्रति बहुत संवेदनशील है। यही मुख्य कारण है कि अधिकांश IMU सिस्टम किसी भी एक्सेलेरोमीटर त्रुटियों को सुचारू करने के लिए जाइरोस्कोप का उपयोग करते हैं। लेकिन यह कैसे किया जाता है? और क्या जाइरोस्कोप शोर से मुक्त है?

जाइरोस्कोप शोर से मुक्त नहीं है, हालांकि यह रोटेशन को मापता है क्योंकि यह रैखिक यांत्रिक आंदोलनों के प्रति कम संवेदनशील है, जिस प्रकार का शोर एक्सेलेरोमीटर से ग्रस्त है, हालांकि जाइरोस्कोप में अन्य प्रकार की समस्याएं हैं जैसे कि बहाव (शून्य-दर मान पर वापस नहीं आना) जब रोटेशन बंद हो जाता है)। फिर भी एक्सेलेरोमीटर और जाइरोस्कोप से आने वाले औसत डेटा से हम वर्तमान डिवाइस झुकाव का अपेक्षाकृत बेहतर अनुमान प्राप्त कर सकते हैं, जितना कि हम अकेले एक्सेलेरोमीटर डेटा का उपयोग करके प्राप्त करेंगे।

अगले चरणों में मैं एक एल्गोरिथम पेश करूंगा जो कि कलमन फिल्टर में उपयोग किए गए कुछ विचारों से प्रेरित था, हालांकि यह एम्बेडेड उपकरणों पर लागू करने के लिए कहीं अधिक सरल और आसान है। इससे पहले आइए पहले देखें कि हम अपने एल्गोरिदम की गणना क्या करना चाहते हैं। खैर, यह गुरुत्वाकर्षण बल वेक्टर R = [Rx, Ry, Rz] की दिशा है जिससे हम Axr, Ayr, Azr या cosX, cosY, cosZ जैसे अन्य मान प्राप्त कर सकते हैं जो हमें हमारे डिवाइस के झुकाव के बारे में एक विचार देंगे। जमीनी तल के सापेक्ष, हम भाग 1 में इन मूल्यों के बीच संबंध पर चर्चा करते हैं। कोई कह सकता है - क्या हमारे पास पहले से ही भाग 1 में समीकरण 2 से ये मान Rx, Ry, Rz नहीं हैं? ठीक है हाँ, लेकिन याद रखें कि ये मान केवल एक्सेलेरोमीटर डेटा से प्राप्त होते हैं, इसलिए यदि आप उन्हें सीधे अपने आवेदन में उपयोग करना चाहते हैं तो आपके आवेदन से अधिक शोर हो सकता है। आगे के भ्रम से बचने के लिए आइए एक्सेलेरोमीटर माप को निम्नानुसार परिभाषित करें:

आरएसीसी - एक्सेलेरोमीटर द्वारा मापा गया जड़त्वीय बल वेक्टर है, जिसमें निम्नलिखित घटक होते हैं (एक्स, वाई, जेड अक्ष पर अनुमान):

RxAcc = (AdcRx * Vref / 1023 - VzeroG) / संवेदनशीलता RyAcc = (AdcRy * Vref / 1023 - VzeroG) / संवेदनशीलता RzAcc = (AdcRz * Vref / 1023 - VzeroG) / संवेदनशीलता

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

आरएसीसी = [आरएक्सएसीसी, आरवाईएसीसी, आरजेएसीसी]

चूंकि आरएसीसी के इन घटकों को एक्सेलेरोमीटर डेटा से प्राप्त किया जा सकता है, इसलिए हम इसे हमारे एल्गोरिदम के लिए एक इनपुट मान सकते हैं।

कृपया ध्यान दें कि क्योंकि Racc गुरुत्वाकर्षण बल को मापता है, आप सही होंगे यदि आप मानते हैं कि इस वेक्टर की लंबाई निम्नानुसार परिभाषित की गई है या 1g के करीब है।

|रैक| = SQRT (RxAcc^2 +RyAcc^2 + RzAcc^2), हालांकि यह सुनिश्चित करने के लिए कि इस वेक्टर को निम्नानुसार अपडेट करना समझ में आता है:

रैक (सामान्यीकृत) = [RxAcc/|Rac|, RyAcc/|Rac|, RzAcc/|Rac|]।

यह सुनिश्चित करेगा कि आपके सामान्यीकृत आरएसी वेक्टर की लंबाई हमेशा 1 है।

आगे हम एक नया वेक्टर पेश करेंगे और हम इसे कॉल करेंगे

बाकी = [RxEst, RyEst, RzEst]

यह हमारे एल्गोरिथ्म का आउटपुट होगा, ये जाइरोस्कोप डेटा के आधार पर और पिछले अनुमानित डेटा के आधार पर सही मान हैं।

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

आइए देखें कि हम इसे कैसे काम कर सकते हैं।

हम अपने एक्सेलेरोमीटर पर भरोसा करके और असाइन करके अपना क्रम शुरू करेंगे:

आराम (0) = रैक (0)

वैसे याद रखें कि रेस्ट और आरएसीसी वैक्टर हैं, इसलिए उपरोक्त समीकरण समीकरणों के 3 सेट लिखने और पुनरावृत्ति से बचने का एक सरल तरीका है:

RxEst(0) = RxAcc(0) RyEst(0) = RyAcc(0) RzEst(0) = RzAcc(0)

आगे हम T सेकंड के बराबर समय अंतराल पर नियमित माप करेंगे, और हम नए माप प्राप्त करेंगे जिन्हें हम Racc(1), Racc(2), Racc(3) इत्यादि के रूप में परिभाषित करेंगे। हम हर समय अंतराल पर नए अनुमान भी जारी करेंगे आराम(१), आराम(२), आराम(३) और इसी तरह।

मान लीजिए कि हम चरण n पर हैं। हमारे पास मूल्यों के दो ज्ञात सेट हैं जिनका हम उपयोग करना चाहते हैं:

बाकी (एन -1) - हमारा पिछला अनुमान, बाकी (0) = आरएसीसी (0) आरएसीसी (एन) के साथ - हमारा वर्तमान एक्सेलेरोमीटर माप

इससे पहले कि हम रेस्ट (एन) की गणना कर सकें, आइए एक नया मापा मूल्य पेश करें, जिसे हम अपने जाइरोस्कोप और पिछले अनुमान से प्राप्त कर सकते हैं।

हम इसे Rgyro कहेंगे, और यह एक वेक्टर भी है जिसमें 3 घटक होते हैं:

रग्योरो = [आरएक्सजीरो, रायग्योरो, रेजग्योरो]

हम एक बार में इस सदिश एक घटक की गणना करेंगे। हम RxGyro से शुरुआत करेंगे।

जाइरो मॉडल
जाइरो मॉडल

आइए अपने जाइरोस्कोप मॉडल में निम्नलिखित संबंध को देखकर शुरू करें, Rz और Rxz द्वारा बनाए गए समकोण त्रिभुज से हम इसे प्राप्त कर सकते हैं:

tan(Axz) = Rx/Rz => Axz = atan2(Rx, Rz)

Atan2 एक ऐसा फ़ंक्शन हो सकता है जिसका आपने पहले कभी उपयोग नहीं किया है, यह atan के समान है, सिवाय इसके कि यह (-PI, PI) की श्रेणी में मान लौटाता है (-PI/2, PI/2) जैसा कि atan द्वारा लौटाया जाता है, और यह लेता है एक के बजाय 2 तर्क। यह हमें 360 डिग्री (-PI से PI) की पूरी रेंज में Rx, Rz के दो मानों को कोणों में बदलने की अनुमति देता है। आप यहाँ atan2 के बारे में अधिक पढ़ सकते हैं।

तो RxEst(n-1), और RzEst(n-1) को जानकर हम पा सकते हैं:

Axz(n-1) = atan2(RxEst(n-1), RzEst(n-1))।

याद रखें कि जाइरोस्कोप Axz कोण के परिवर्तन की दर को मापता है। अतः हम नए कोण Axz(n) का अनुमान इस प्रकार लगा सकते हैं:

Axz(n) = Axz(n-1) + RateAxz(n) * T

याद रखें कि RateAxz हमारे जाइरोस्कोप एडीसी रीडिंग से प्राप्त किया जा सकता है। एक अधिक सटीक सूत्र निम्नानुसार गणना की गई औसत रोटेशन दर का उपयोग कर सकता है:

RateAxzAvg = (RateAxz(n) + RateAxz(n-1)) / 2 Axz(n) = Axz(n-1) + RateAxzAvg * T

उसी तरह हम पा सकते हैं:

Ayz(n) = Ayz(n-1) + RateAyz(n) * T

ठीक है तो अब हमारे पास Axz(n) और Ayz(n) हैं। RxGyro/RyGyro काटने के लिए हम यहाँ से कहाँ जाएँ? ईक से। 1 हम वेक्टर Rgyro की लंबाई इस प्रकार लिख सकते हैं:

|रग्योरो| = SQRT(RxGyro^2 + RyGyro^2 + RzGyro^2)

इसके अलावा, क्योंकि हमने अपने आरएसीसी वेक्टर को सामान्यीकृत किया है, हम मान सकते हैं कि इसकी लंबाई 1 है और यह रोटेशन के बाद नहीं बदला है, इसलिए यह लिखना अपेक्षाकृत सुरक्षित है:

|रग्योरो| = 1

आइए नीचे दी गई गणनाओं के लिए एक अस्थायी लघु संकेतन अपनाएं:

x =RxGyro, y=RyGyro, z=RzGyro

उपरोक्त संबंधों का उपयोग करके हम लिख सकते हैं:

x = x / 1 = x / SQRT(x^2+y^2+z^2)

आइए अंश के अंश और हर को SQRT(x^2 + z^2) से भाग दें

x = (x / SQRT(x^2 + z^2)) / SQRT((x^2 + y^2 + z^2) / (x^2 + z^2))

ध्यान दें कि x / SQRT(x^2 + z^2) = sin(Axz), इसलिए:

x = sin(Axz) / SQRT (1 + y^2 / (x^2 + z^2))

अब SQRT के अंदर भिन्न के अंश और हर को z^2. से गुणा करें

x = sin(Axz) / SQRT (1 + y^2 * z ^2 / (z^2 * (x^2 + z^2)))

ध्यान दें कि z / SQRT(x^2 + z^2) = cos(Axz) और y / z = tan(Ayz), तो अंत में:

x = sin(Axz) / SQRT (1 + cos(Axz)^2 * tan(Ayz)^2)

अपने नोटेशन पर वापस जाने पर हमें मिलता है:

RxGyro = sin(Axz(n)) / SQRT (1 + cos(Axz(n))^2 * tan(Ayz(n))^2)

उसी तरह हम पाते हैं कि

RyGyro = sin(Ayz(n)) / SQRT (1 + cos(Ayz(n))^2 * tan(Axz(n))^2)

अब, अंत में हम पा सकते हैं:

RzGyro = साइन (RzGyro)*SQRT(1 - RxGyro^2 - RyGyro^2)।

जहां साइन(RzGyro) = 1 जब RzGyro>=0, और साइन(RzGyro) = -1 जब RzGyro<0.

इसका अनुमान लगाने का एक आसान तरीका है:

साइन (RzGyro) = साइन (RzEst (n-1))

व्यवहार में सावधान रहें जब RzEst(n-1) 0 के करीब हो। आप इस मामले में gyro चरण को पूरी तरह से छोड़ सकते हैं और असाइन कर सकते हैं: Rgyro = Rest(n-1)। Rz का उपयोग Axz और Ayz कोणों की गणना के लिए एक संदर्भ के रूप में किया जाता है और जब यह 0 के करीब होता है, तो मान बह सकते हैं और खराब परिणाम ट्रिगर कर सकते हैं। आप बड़े फ़्लोटिंग पॉइंट नंबरों के डोमेन में होंगे जहाँ tan() / atan() फ़ंक्शन कार्यान्वयन में सटीकता की कमी हो सकती है।

तो आइए अब तक जो कुछ भी हमारे पास है, उसका पुनर्कथन करें, हम अपने एल्गोरिथम के चरण n पर हैं और हमने निम्नलिखित मानों की गणना की है:

आरएसीसी - हमारे एक्सेलेरोमीटर रगीरो से वर्तमान रीडिंग - रेस्ट (एन -1) और वर्तमान जीरोस्कोप रीडिंग से प्राप्त

अद्यतन अनुमान बाकी (एन) की गणना करने के लिए हम किन मूल्यों का उपयोग करते हैं? आपने शायद अनुमान लगाया होगा कि हम दोनों का उपयोग करेंगे। हम भारित औसत का उपयोग करेंगे, ताकि:

बाकी (एन) = (आरएसीसी * डब्ल्यू 1 + रजीरो * डब्ल्यू 2) / (डब्ल्यू 1 + डब्ल्यू 2)

हम भिन्न के अंश और हर दोनों को w1 से विभाजित करके इस सूत्र को सरल बना सकते हैं।

बाकी (एन) = (आरएसीसी * w1/w1 + Rgyro * w2/w1) / (w1/w1 + w2/w1)

और w2/w1 = wGyro को प्रतिस्थापित करने के बाद हम प्राप्त करते हैं:

बाकी (एन) = (रैक + रग्योरो * डब्ल्यूजीरो) / (1 + डब्ल्यूजीरो)

उपरोक्त फोरमुला में wGyro हमें बताता है कि हम अपने एक्सेलेरोमीटर की तुलना में अपने जाइरो पर कितना भरोसा करते हैं। यह मान प्रयोगात्मक रूप से चुना जा सकता है आमतौर पर 5..20 के बीच के मान अच्छे परिणाम ट्रिगर करेंगे।

कलमन फ़िल्टर से इस एल्गोरिथम का मुख्य अंतर यह है कि यह वज़न अपेक्षाकृत स्थिर होता है, जबकि कलमन फ़िल्टर में वज़न को एक्सेलेरोमीटर रीडिंग के मापा शोर के आधार पर स्थायी रूप से अपडेट किया जाता है। Kalman फ़िल्टर आपको "सर्वश्रेष्ठ" सैद्धांतिक परिणाम देने पर केंद्रित है, जबकि यह एल्गोरिथ्म आपको आपके व्यावहारिक अनुप्रयोग के लिए "काफी अच्छा" परिणाम दे सकता है। आप एक एल्गोरिथम लागू कर सकते हैं जो आपके द्वारा मापे जाने वाले कुछ शोर कारकों के आधार पर wGyro को समायोजित करता है, लेकिन निश्चित मान अधिकांश अनुप्रयोगों के लिए अच्छा काम करेंगे।

हम अपने अद्यतन अनुमानित मान प्राप्त करने से एक कदम दूर हैं:

RxEst(n) = (RxAcc + RxGyro * wGyro) / (1 + wGyro) RyEst(n) = (RyAcc + RyGyro * wGyro) / (1 + wGyro) RzEst(n) = (RzAcc + RzGyro * wGyro) / (1 + डब्ल्यूजीरो)

अब इस वेक्टर को फिर से सामान्य करते हैं:

R = SQRT(RxEst(n) ^2 + RyEst(n)^2 + RzEst(n)^2)

RxEst(n) = RxEst(n)/R RyEst(n) = RyEst(n)/R RzEst(n) = RzEst(n)/R

और हम अपना लूप फिर से दोहराने के लिए तैयार हैं।

यह मार्गदर्शिका मूल रूप से starlino.com पर दिखाई दी थी, मैंने कुछ हल्के संपादन किए हैं और अनुमति के साथ इसे फिर से पोस्ट किया है। धन्यवाद स्टारलिनो!

सिफारिश की: