विषयसूची:

जड़त्वीय मापन इकाई का उपयोग करने का एक तरीका ?: 6 कदम
जड़त्वीय मापन इकाई का उपयोग करने का एक तरीका ?: 6 कदम

वीडियो: जड़त्वीय मापन इकाई का उपयोग करने का एक तरीका ?: 6 कदम

वीडियो: जड़त्वीय मापन इकाई का उपयोग करने का एक तरीका ?: 6 कदम
वीडियो: प्लॉट को खरीदने से पहले कैसे मापे | how to calculate plot area and rate |how to measure plot 2024, नवंबर
Anonim
एक जड़त्वीय मापन इकाई का उपयोग करने का एक तरीका?
एक जड़त्वीय मापन इकाई का उपयोग करने का एक तरीका?

प्रसंग:

मैं मनोरंजन के लिए एक रोबोट का निर्माण कर रहा हूं जिसे मैं एक घर के अंदर स्वायत्त रूप से ले जाना चाहता हूं।

यह एक लंबा काम है और मैं कदम से कदम मिलाकर चल रहा हूं।

मैंने उस विषय पर पहले से ही 2 निर्देश प्रकाशित किए हैं:

  • एक पहिया एन्कोडर बनाने के बारे में
  • वाईफाई कनेक्शन के बारे में एक

मेरे घर में बने व्हील एनकोडर की मदद से मेरा रोबोट 2 डीसी मोटरों द्वारा संचालित होता है।

मैं वर्तमान में चलती नियंत्रण में सुधार कर रहा हूं और कुछ समय जीरोस्कोप, एक्सेलेरोमीटर और आईएमयू के साथ बिताया है। मुझे इस अनुभव को साझा करने में खुशी होगी।

आप स्थानीयकरण के बारे में अधिक जानना चाहते हैं? रोबोट को स्थानीय बनाने के लिए कृत्रिम बुद्धि और अल्ट्रासाउंड को कैसे संयोजित किया जाए, इस पर एक लेख यहां दिया गया है

चरण 1: जड़त्वीय मापन इकाई का उपयोग क्यों करें?

जड़त्वीय मापन इकाई का उपयोग क्यों करें?
जड़त्वीय मापन इकाई का उपयोग क्यों करें?

तो मैंने IMU का उपयोग क्यों किया?

पहला कारण यह था कि अगर व्हील एन्कोडर सीधे चाल को नियंत्रित करने के लिए पर्याप्त सटीक है, तो ट्यूनिंग के बाद भी मैं + - 5 डिग्री से कम रोटेशन के लिए परिशुद्धता प्राप्त करने में सक्षम नहीं था और यह पर्याप्त नहीं है।

इसलिए मैंने 2 अलग-अलग सेंसर की कोशिश की। सबसे पहले मैं एक मैग्नेटोमीटर (LSM303D) का उपयोग करता हूं। सिद्धांत सरल था: रोटेशन से पहले उत्तर दिशा प्राप्त करें, लक्ष्य की गणना करें और लक्ष्य तक पहुंचने तक चाल को समायोजित करें। यह एन्कोडर की तुलना में थोड़ा बेहतर था लेकिन बहुत अधिक फैलाव के साथ। उसके बाद मैंने जाइरोस्कोप (L3GD20) का उपयोग करने की कोशिश की। सिद्धांत सिर्फ रोटेशन की गणना करने के लिए सेंसर द्वारा प्रदान की गई रोटेशन गति को एकीकृत करना था। और यह ठीक काम किया। मैं + - 1 डिग्री पर रोटेशन को नियंत्रित करने में सक्षम था।

फिर भी मैं कुछ IMU आज़माने के लिए उत्सुक था। मैं एक BNO055 घटक चुनता हूं। मैंने इस आईएमयू को समझने और परीक्षण करने के लिए कुछ समय बिताया। अंत में मैंने निम्नलिखित कारणों से इस सेंसर का चयन करने का निर्णय लिया

  • मैं रोटेशन के साथ-साथ L3GD20. को भी नियंत्रित कर सकता हूं
  • सीधे चलते समय मैं मामूली घुमाव का पता लगा सकता हूं
  • मुझे रोबोट स्थानीयकरण के लिए उत्तर अभिविन्यास प्राप्त करने की आवश्यकता है और बीएनओ055 का कंपास अंशांकन बहुत आसान है

चरण 2: 2डी स्थानीयकरण के लिए बीएनओ055 का उपयोग कैसे करें?

2डी स्थानीयकरण के लिए BNO055 का उपयोग कैसे करें?
2डी स्थानीयकरण के लिए BNO055 का उपयोग कैसे करें?

BNO055 IMU एक बॉश 9 अक्ष बुद्धिमान सेंसर है जो पूर्ण अभिविन्यास प्रदान कर सकता है।

डेटाशीट एक पूर्ण दस्तावेज प्रदान करता है। यह एक उच्च तकनीक वाला घटक है क्या यह एक जटिल उत्पाद है और मैंने यह जानने के लिए कुछ घंटे बिताए कि यह कैसे काम करता है और इसका उपयोग करने के विभिन्न तरीकों का प्रयास करता है।

मुझे लगता है कि इस अनुभव को साझा करना उपयोगी हो सकता है।

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

अंत में और बहुत सारे परीक्षणों के बाद मैंने फैसला किया

  • केवल अंशांकन को बचाने के लिए Adafruit पुस्तकालय का उपयोग करें
  • BNO055 (NDOF, IMU, Compss) के सभी संभावित तरीकों में से 3 का उपयोग करें
  • BNO055 mesurments के आधार पर स्थानीयकरण की गणना करने के लिए एक Arduino नैनो समर्पित करें

चरण 3: Vue का हार्डवेयर पॉइंट

Vue. का हार्डवेयर पॉइंट
Vue. का हार्डवेयर पॉइंट
Vue. का हार्डवेयर पॉइंट
Vue. का हार्डवेयर पॉइंट
Vue. का हार्डवेयर पॉइंट
Vue. का हार्डवेयर पॉइंट

BNO055 एक I2C घटक है। तो इसे संचार करने के लिए बिजली आपूर्ति, एसडीए और एससीएल की जरूरत है।

बस आपके द्वारा खरीदे गए उत्पाद के अनुसार Vdd वोल्टेज का ध्यान रखें। बॉश चिप रेंज में काम करती है: 2.4V से 3.6V और आप 3.3v और 5v कंपोनेंट पा सकते हैं।

नैनो और बीएनओ055 को जोड़ने में कोई कठिनाई नहीं है।

  • BNO055 नैनो. द्वारा संचालित है
  • एसडीए और एससीएल 2 x 2k पुल-अप प्रतिरोधों से जुड़े हैं।
  • निदान के लिए नैनो से जुड़ी 3 एलईडी (प्रतिरोधों के साथ)
  • बूट के बाद मोड को परिभाषित करने के लिए उपयोग किए जाने वाले 2 कनेक्टर
  • बीएनओ की ओर 1 कनेक्टर (जीएनडी, वीडीडी, एसडीए, एससीएल, इंट)
  • रोबोट/मेगा की ओर 1 कनेक्टर (+9V, Gnd, sda, Scl, Pin11, Pin12)

थोड़ा सा सोल्डरिंग और बस!

चरण 4: यह कैसे काम करता है?

यह कैसे काम करता है ?
यह कैसे काम करता है ?

दृश्य के संचार बिंदु से:

  • नैनो I2C बस मास्टर है
  • रोबोट/मेगा और BNO055 I2C गुलाम हैं
  • नैनो स्थायी रूप से BNO055 रजिस्टरों को पढ़ती है
  • नैनो से शब्द का अनुरोध करने के लिए रोबोट/मेगा एक संख्यात्मक संकेत उगता है

गणना के बिंदु से: नैनो BNO055 के साथ संयुक्त है

  • कम्पास शीर्षक (स्थानीयकरण के लिए प्रयुक्त)
  • एक सापेक्ष शीर्षक (घूर्णन को नियंत्रित करने के लिए प्रयुक्त)
  • पूर्ण शीर्षक और स्थिति (चाल को नियंत्रित करने के लिए प्रयुक्त)

दृश्य के कार्यात्मक बिंदु से: नैनो:

  • BNO055 अंशांकन का प्रबंधन करता है
  • BNO055 मापदंडों और आदेशों का प्रबंधन करता है

सबसिस्टम नैनो और बीएनओ055:

  • प्रत्येक रोबोट पहियों के लिए पूर्ण शीर्षक और स्थानीयकरण की गणना करें (स्केल फैक्टर के साथ)
  • रोबोट के घूर्णन के दौरान सापेक्ष शीर्षक की गणना करें

चरण 5: वास्तुकला और सॉफ्टवेयर

वास्तुकला और सॉफ्टवेयर
वास्तुकला और सॉफ्टवेयर

मुख्य सॉफ्टवेयर एक Arduino नैनो पर चल रहा है।

  • आर्किटेक्चर I2C संचार पर आधारित है।
  • मैंने एक नैनो को समर्पित करना चुना क्योंकि रोबोट को चलाने वाला एटमेगा पहले से ही लोड था और यह आर्किटेक्चर कहीं और पुन: उपयोग करना आसान बनाता है।
  • नैनो बीएनओ055 रजिस्टरों को पढ़ती है, अपने रजिस्टरों में हेडिंग और स्थानीयकरण की गणना और स्टोर करती है।
  • Arduino Atmega जो रोबोट कोड चलाता है, नैनो को व्हील एन्कोडर जानकारी भेजता है और नैनो रजिस्टरों के अंदर शीर्षक और स्थानीयकरण पढ़ता है।

वहाँ सबसाइटम (नैनो) कोड यहाँ GitHub पर उपलब्ध है

एडफ्रूट कैलिब्रेशन टूल अगर यहाँ GitHub पर है (अंशांकन ईपरूम पर संग्रहीत किया जाएगा)

चरण 6: मैंने क्या सीखा?

I2C. के बारे में

सबसे पहले मैंने एक ही बस में 2 मास्टर्स (Arduino) और 1 स्लेव (सेंसर) रखने की कोशिश की, लेकिन अंत में केवल नैनो को मास्टर के रूप में सेट करना और "टोकन का अनुरोध" करने के लिए 2 Arduinos के बीच GPIO कनेक्शन का उपयोग करना संभव और आसान है।.

2डी अभिविन्यास के लिए बीएनओ055 के संबंध में

मैं 3 अलग-अलग चलने वाले मोड पर ध्यान केंद्रित कर सकता हूं: एनडीओएफ (जाइरोस्कोप, एक्सेलेरोमीटर और कंपास को मिलाएं) जब रोबोट निष्क्रिय हो, IMU (गाइरोस्कोप, एक्सेलेरोमीटर को मिलाएं) जब रोबोट चल रहा हो और स्थानीयकरण चरण के दौरान कम्पास। इन मोड्स के बीच स्विच करना आसान और तेज़ है।

कोड आकार को कम करने और टक्कर का पता लगाने के लिए बीएनओ055 इंटरप्ट का उपयोग करने की संभावना को बनाए रखने के लिए, मैं एडफ्रूट लाइब्रेरी का उपयोग नहीं करना पसंद करता हूं और इसे स्वयं करता हूं।

सिफारिश की: