एंटोन लोपाटिन के ब्लॉग से छवि को लिया गया, और थोड़ा संपादित किया गया। खैर, बहुत प्रेरणादायक है।शुभ दोपहर, प्रिय समुदाय!
अंतिम
विषय में, मैंने एआरएम माइक्रोप्रोसेसर कॉर्टेक्स एम 3 और MATLAB / Simulink का उपयोग करके एम्बेडेड सिस्टम के मॉडल-उन्मुख डिज़ाइन में एक परिचयात्मक भ्रमण करने का प्रयास किया। हम गोता जारी रखते हैं, कार्य को जटिल करते हैं। यह एक अफ़सोस की बात है कि शीर्षक चित्रण में अवधारणा अभी भी दूर है, लेकिन मैं इसके सबसे महत्वपूर्ण नोड्स में से एक की विकास प्रक्रिया को दिखाने की कोशिश करूंगा, अर्थात् बुर्ज होमिंग सिस्टम।
नीचे कुछ छवियां दी गई हैं, लेकिन उनके बिना यह उबाऊ और स्पष्ट नहीं है।हार्डवेयर
पहले विषय के विपरीत, अब हमारे हाथ में है:
- FiO Std ने डिबगिन के थाई दोस्तों से डिबग बोर्ड बनाया । इसके बिना, Simulink के लिए RapidSTM32 लाइब्रेरी के साथ काम करना थोड़ा मुश्किल है। इसका उपयोग रैपिडस्टएम 32 के लिए एक हार्डवेयर कुंजी के रूप में और एक नियंत्रण मॉड्यूल के रूप में दोनों किया जाता है। बोर्ड पर एक पत्थर STM32F103RET6 है।
- 2 सरल सर्वो मोटर्स SG-5010
- वेब कैमरा Logitech HD वेब कैमरा C270 । लेकिन समीक्षा और फोटो में उतना ग्लैमरस नहीं।
- प्रतिरोधों की एक जोड़ी, वायरिंग, कनेक्टर, ब्रेडबोर्ड, एक पुराने प्रिंटर से बिजली की आपूर्ति, व्हाटमैन पेपर के लिए रबर बैंड, तांबे के तार, मिनी यूएसबी केबल, लैपटॉप, और, सबसे महत्वपूर्ण बात, फ्यूज सीट से एक घर का बना टांका लगाने वाला लोहा धारक (चाचा साशा, एक बिस्तर के रूप में इस्तेमाल किया जाता है) ।
सुंदर अवधारणा से एक और अंतर यह होगा कि हमारे शिल्प के लिए "घुटने पर इकट्ठा" की अवधारणा यथासंभव वास्तविकता के करीब है। तेजी से विकास का एक महत्वपूर्ण उदाहरण। तेज, सस्ता, कुशल।
समस्या और उपवाक्यों का विवरण
मुख्य कार्य लक्ष्य को पकड़ने और ट्रैक करने के कार्यों को लागू करना है। अपने लक्ष्यों को प्राप्त करने के लिए, हमें निम्न करना होगा:
- पीसी के साथ एक कनेक्शन स्थापित करें।
हमारे डिवाइस को HID के रूप में पहचाना जाएगा, और USB के माध्यम से मेरे लैपटॉप को सुनेगा। - मशीनी होमिंग हेड।
चमकती डायोड बंद करो, सर्वोस पर जाओ। मेक्ट्रोनिक्स के साथ काम करने की बुद्धि की समझ के क्लासिक्स। - लोहे के किनारे पर एक नियंत्रण प्रणाली बनाएं।
भावहीन। घटक + HIL लोहे की तरफ अधिक जटिल नियंत्रण एल्गोरिदम की आवश्यकता है। कम से कम एक पीआईडी नियंत्रक का उपयोग। ताऊ हमारा सब कुछ है! - वीडियो को पहचानने और मेजबान पक्ष पर नियंत्रण संकेतों को जारी करने के लिए एक एल्गोरिथ्म को लागू करें।
किसी ऑब्जेक्ट को ट्रैक करने के लिए, आपको इस ऑब्जेक्ट को पहचानना होगा। अभी के लिए, मेरा लैपटॉप ऐसा करेगा, लेकिन भविष्य में इस कार्य को एआरएम के मजबूत कंधों पर स्थानांतरित करना संभव होगा। यहाँ, यह TI OMAP3530 प्रोसेसर पर बीगल बोर्ड को करीब से देखने लायक हो सकता है। वरना हो जाएगा
होस्ट साइड मॉडल
ध्वस्त मॉडल, जिसे वीडियो प्रोसेसिंग और नियंत्रण संकेत जारी करने के कार्य सौंपे गए हैं, इस तरह दिखता है:
चैनलों में विभाजित वीडियो सिग्नल का पता लगाने और प्रसंस्करण उपतंत्रों को प्रेषित किया जाता है। उनके बाद, आउटपुट सिग्नल यूएसबी के माध्यम से नियंत्रण बोर्ड को प्रेषित किए जाते हैं।
मान लीजिए कि एक लेजर द्वारा एक निश्चित तरंग दैर्ध्य के साथ एक वस्तु को उजागर किया जाता है। वीडियो मान्यता उप-प्रणाली का मुख्य कार्य किसी दिए गए रंग टोन का चयन होगा, संभावित हस्तक्षेप को फ़िल्टर करना और ऑब्जेक्ट के स्थान के बारे में संक्षिप्त संकेत जारी करना। हमारे "बैल" के लिए हम लाल दुपट्टा नहीं, बल्कि हरे रंग का उपयोग करेंगे, जो फिर से इतना महत्वपूर्ण नहीं है। आप यहाँ आंदोलन छेड़ सकते हैं ...
डिटेक्शन सबसिस्टम इस तरह दिखते हैं:
फ़िल्टर सबसिस्टम इस तरह दिखते हैं
मैं विकास प्रक्रिया के दौरान वीडियो मान्यता से परिचित हो गया, और इसलिए मैंने सबसे सरल एल्गोरिथम चुना। स्प्लिट वीडियो सिग्नल उन शर्तों की शाखाओं से गुजरता है जो दी गई शर्तों के आधार पर सही या गलत (RGB प्रतिशत के बजाय) वापस आती हैं। जैसा कि संख्यात्मक मूल्यों से देखा जा सकता है, मैंने हरे रंग पर ध्यान केंद्रित किया।
सिस्टम आउटपुट पर, वीडियो के बजाय, हमें शून्य और बंद द्वीपों के इकाइयों के क्षेत्र से एक मैट्रिक्स मिलता है। प्राप्त सूचनाओं की प्रोसेसिंग सबसिस्टम प्राप्त द्वीपों के क्षेत्रों और केंद्रों को निर्धारित करता है, उन्हें सीमाओं और समान हलकों के साथ रेखांकित करता है, और मैट्रिक्स के केंद्र से ऑब्जेक्ट के केंद्र की दूरी भी निर्धारित करता है। लोहे की तरफ, एक त्रुटि को सबसे बड़े द्वीप और द्वीपों की संख्या के लिए पंक्तियों और स्तंभों के साथ प्रेषित किया जाता है। यदि यह समान संख्या == 0 है, तो बुर्ज स्टैंडबाय मोड में जाता है और इलाके का एक क्षैतिज क्षैतिज स्कैन करता है। त्रुटियों को छवि के पूर्ण केंद्र से नहीं, बल्कि आयताकार "शून्य क्षेत्र" की सीमाओं से गिना जाता है। इस क्षेत्र के अंदर, ऑब्जेक्ट को "कैप्चर" माना जाता है और कैमरा अपनी स्थिति को ठीक करता है। सभी अतिरिक्त निर्माणों को मूल वीडियो में समायोजित किया गया है, जो हमारे
कमरे की ग्रे और उदास
दीवार को हमारे जोरदार आयतों और हलकों के
साथ पूरक करता है।
अतिरिक्त ग्राफिक्स खींचने और त्रुटि परिभाषाओं के लिए सबसिस्टम इस तरह दिखते हैं:
सिमुलिंक कृपया और अग्रिम रूप से हमें याद दिलाता है कि कार्यक्रम के नए संस्करण के जारी होने से पहले "रेगल्स" के निशान वाले ब्रांड को ब्लॉक किया जाना चाहिए। अन्यथा, मॉडल इसके अनुरूप नहीं होगा।यह ध्यान दिया जाना चाहिए कि सिमुलिंक को चलाने के लिए बाध्यकारी वैकल्पिक है। समान सिमुलिंक कोडर का उपयोग करके, आप विंडोज और लिनक्स दोनों के लिए एक स्टैंड-अलोन एप्लिकेशन बनाने के लिए C ++ कोड उत्पन्न कर सकते हैं। मैं इस पर अभी तक मजबूत नहीं हूं, इसलिए मैंने खुद को एक्सेलेरेटर मोड में काम करने वाली सिमुलिंक मॉडल तक सीमित कर दिया है, यानी, निष्पादन की गति बढ़ाने के लिए आंशिक संकलन मोड में:
आयरन साइड मॉडल
सिमुलिंक मॉडल जिसमें से माइक्रोकंट्रोलर में डालने का कोड उत्पन्न होता है, जैसा कि नीचे चित्र में दिखाया गया है:
एकल क्लॉकिंग में प्रदर्शन किया जाता है, जो अपडेट के बाद मॉडल के सभी ब्लॉकों के लिए एक ही रंग को उजागर करने से स्पष्ट होता है। जैसा कि पहले उल्लेख किया गया है, प्राथमिक ब्लॉकों जैसे कि जोड़ या गुणा के अलावा, मॉडल में दो पीआईडी नियंत्रक होते हैं। बल्कि, यहां तक कि पीआई, क्योंकि विभेदक घटक का गुणांक शून्य है।
पैरामीटर मैन्युअल रूप से अनुभवजन्य रूप से चुने गए थे। लेकिन अधिक गंभीर प्रणालियों के लिए, MATLAB में आवश्यक नियंत्रण मापदंडों को सेट करने की क्षमता के साथ प्रयोगात्मक डेटा पर आधारित "ट्यूनिंग" रैखिक नियंत्रण प्रणालियों के लिए एक विशेष
नियंत्रण प्रणाली टूलबॉक्स है ।
छोटे आनुपातिक गुणांक और शून्य अंतर के कारण ध्यान देने योग्य समय में देरी होती है, जिसमें सिस्टम के प्रत्येक तत्व का योगदान होता है।
मुझे लगता है कि संतृप्ति और मृत क्षेत्र ब्लॉक के कार्य, उनके चित्रलेखों में रेखांकन से स्पष्ट हैं।
सबसे पहले, "स्टैंडबाय" और "कॉम्बैट" मोड के कार्यान्वयन को परिमित राज्य मशीनों का उपयोग करके कल्पना की गई थी, लेकिन फिर यह पता चला कि इस मुद्दे को अधिक आसानी से हल किया जा सकता है। इसलिए,
एफएसएम का आना बाकी है। इस अवधारणा को सुरुचिपूर्ण
स्टेटफ्लो टूल की मदद से
सिमुलिंक के अंदर लागू किया गया है, और यह एमके में आसानी से डाला जाता है।
कोड के सृजन, संकलन और भरने को MATLAB के तहत पूरी तरह से किया जाता है। केइल को भी अलग से चलाने की आवश्यकता नहीं है
खुद विकास की प्रक्रिया
उपरोक्त सभी विकास चरणों के बजाय पहले से ही परिणाम के लिए सबसे अधिक है।
जबकि कोई सर्व नहीं था (हार्डवेयर घटक की कमी को इस तरह पढ़ें), सिस्टम ऑपरेशन एल्गोरिदम को ऐसे बदसूरत, राक्षस जैसे मसौदा मॉडल पर काम किया गया था:
फिर वह इस तरह हो गई:
इन मॉडलों का मुख्य विशिष्ट हिस्सा मैकेनिकल सबसिस्टम (पिछले चित्रण में नीले रंग में हाइलाइट किया गया) है, जिसने विशेष रूप से पीसी के उपयोग से सिस्टम के संचालन का मूल्यांकन करना संभव बना दिया है। मेरे मामले में, नियामकों के सर्वो और पीआई गुणांक के रोटेशन की कोणीय गति को अनुकूलित करना महत्वपूर्ण था, लेकिन सिस्टम का एक पूर्ण यांत्रिक विश्लेषण भी संभव है।
सॉलिडवर्क्स में असेंबली इस तरह दिखी:
और इसी तरह सिमुलिंक मॉडल के अंदर विधानसभा आंदोलन का अनुकरण पहले से ही दिखता है:
सॉलिडवर्क्स के अंदर डायनामिक्स और स्टैटिक्स का अनुकरण करने के लिए एक बहुत ही गंभीर उपकरण है, लेकिन मैं अभी भी MATLAB के साथ मिलकर काम करता हूं। असेंबली को SimMechanics लिंक उपयोगिता का उपयोग करके निर्यात किया जाता है।
यहाँ उसके बारे में बहुत सी बातें लिखी गई हैं।
एक शब्द में, "लोहा" आने पर, मेरे पास पहले से ही लगभग सब कुछ तैयार था। मैंने बस सभी अनावश्यक को हटा दिया और मॉडल को दो घटकों में विभाजित किया: मेजबान और लक्ष्य।
परीक्षण के परिणाम
और अंत में, क्षेत्र परीक्षण का वीडियो:
हाँ, एक बहुत बदसूरत निर्माण। सुपर प्रत्यक्ष हाथों के पुरस्कार के लिए, यह निश्चित रूप से ढोंग नहीं करता है।
निम्नलिखित लैपटॉप स्क्रीन पर हो रहा है:
निष्कर्ष
सकारात्मक:- विकास में न्यूनतम समय और संसाधन लगे। सब कुछ संतोषजनक ढंग से काम करता है और अपग्रेड करना आसान है। "ट्रिगर" को लागू करना कुछ आसान नहीं है। बोर्ड पर
100500 और बंदरगाह हैं। आपको बस स्थिति शाखा को जोड़ने की जरूरत है जब ऑब्जेक्ट का केंद्र कैप्चर ज़ोन में है, जो लॉग को फीड करेगा। एक विशिष्ट पोर्ट के लिए 1 और एक शॉट का अनुकरण करने के लिए चेन से रेल बंदूक को कम करें ।
शिक्षाप्रद नकारात्मक:- लक्ष्य के रूप में बिल्ली का उपयोग करना विफल रहा। ग्रे छलावरण undetectable है, और इसके लिए एक निशान संलग्न करने का प्रयास विफल रहा है। इसके अलावा, वह भिनभिनाने वाले से भी डरता है। मुझे सब कुछ अपने ऊपर अनुभव करना था।
- काम की गति और स्थिरता को बढ़ाने के लिए, और अधिक सुधार किए जाने की आवश्यकता है। यांत्रिक हिस्सा सबसे अधिक मूडी था। सर्विंग कैलिब्रेशन में ज्यादातर समय कमीशनिंग के लिए दिया गया। परियोजना के आगे विकास के साथ, उच्च-गुणवत्ता वाले उपकरणों पर स्विच करना आवश्यक होगा, संभवतः बाद के शोधन और अपनी स्वयं की प्रतिक्रिया की शुरूआत के साथ।
- मैं प्रकाश और आसपास की पृष्ठभूमि के आधार पर कैमरा चमक सेटिंग्स के स्वत: परिवर्तन का सामना नहीं कर सका। यह स्पष्ट है कि इससे मान्यता प्रणाली की चयनात्मकता प्रभावित हुई। भविष्य में, नियंत्रण बोर्ड के सीधे कनेक्शन के साथ एक अलग कैमरा मॉड्यूल (संभवतः इसी सीमा के साथ आईआर रेंज पर ध्यान केंद्रित करने) का उपयोग करने की योजना है।
- बहुत खुशी और असीमित आभार के साथ, मैं टिप्पणियों में उचित आलोचना पर ध्यान दूंगा। और मैं इसे यहाँ जोड़ दूंगा!
अपडेट:UPD # 1 प्रोजेक्ट स्रोत
होस्ट और लक्ष्य के लिए MATLAB मॉडलSolidworks में बनाएँUPD # 2 घरेलू निर्माता
उन लोगों के लिए जो देशभक्ति के विचार से अलग नहीं हैं (और जिनके पास डिलीवरी में सिम्मैचिक्स नहीं है), वे घरेलू (कोई कम शक्तिशाली)
यूएम टूल
"यूनिवर्सल मैकेनिज्म" का उपयोग नहीं कर सकते हैं, जो उत्पादन से पहले मॉडलिंग मैकेनिक्स का उपयोग करने के लिए MSTU से रोबोट द्वारा सफलतापूर्वक उपयोग किया जाता है। और केवल उन्हें ही नहीं।
यहाँ प्रदर्शन।
वह सिमुलिंक के साथ बोल सकता है। विवरण के लिए, आप ह्युप्राइज़र
यूपिक से संपर्क कर सकते हैं।