c++ - Calculating quaternions from gyro + accelerometer data -


मेरे पास हर समय की अवधि में gyroscope + accelerometer डेटा है T

सी ++ का उपयोग करते हुए, मैं हर समय ऑब्जेक्ट के रोटेशन की गणना करना चाहता हूं - यह अपने अक्षों पर घुमा सकते हैं। मैंने पढ़ा है कि चतुर्भुज के मामले में सिस्टम के रोटेशन का प्रतिनिधित्व करने के लिए सुविधाजनक है (यूलर एंगल्स में नहीं)।

मैं कोणीय वेग से कैसे बदल सकता हूँ (गैरोस्कोप से) चौगुनी प्रतिनिधित्व करने के लिए? मुझे लगता है कि ऐसा करने के लिए मुझे संख्यात्मक तरीकों का उपयोग करके अंतर समीकरण को हल करना होगा।

मुझे यकीन नहीं है कि आप किस भाषा की तलाश में हैं, लेकिन सी ++ बूस्ट लाइब्रेरी एक काम कर रही है ()।

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

एक निरंतर कोणीय त्वरण और अल्फा;, प्रारंभिक कोणीय वेग और ओमेगा; (टी <उप> 0 ) और प्रारंभिक कोणीय स्थिति और थीटा; (टी <सब> 0 ) सीमा [0, 2 और पीआई; कुछ समय पर टी> टी <उप> 0 , और थीटा (टी) द्वारा दिया गया है:

 और थीटा; (टी) = [और थीटा; (टी <सब> 0 ) और ओमेगा; (टी <सब> 0 ) * (टीटी <सब> 0 ) + और अल्फा; * (tt  0 )  2  / 2] mod 2 और pi; 

यहां आधुनिक 2 और पीआई; ऑपरेशन केवल अवशिष्ट है जब एन 2 और पीआई घटाया जाता है; जहां एन को यह सुनिश्चित करने के लिए पूर्णांक है कि अवशिष्ट सीमा [0, 2 और पीआई;) में है। एक निरंतर कोणीय वेग (यानी और अल्फा; = 0) के लिए आखिरी शब्द निकल जाता है।

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

फिर भी, यदि आप ऐसा करने के लिए एक ओपन सोर्स टूल की तलाश कर रहे हैं, तो मुझे उम्मीद है कि गेम भौतिकी मॉडलिंग पुस्तकालयों में से कोई भी पर्याप्त। कुछ खुले स्रोत हैं और।


Comments