विषयसूची:

अपनी खुद की सेल्फ-ड्राइविंग कार बनाएं - (यह निर्देश योग्य काम है): 7 कदम
अपनी खुद की सेल्फ-ड्राइविंग कार बनाएं - (यह निर्देश योग्य काम है): 7 कदम

वीडियो: अपनी खुद की सेल्फ-ड्राइविंग कार बनाएं - (यह निर्देश योग्य काम है): 7 कदम

वीडियो: अपनी खुद की सेल्फ-ड्राइविंग कार बनाएं - (यह निर्देश योग्य काम है): 7 कदम
वीडियो: कार चलानी सीखो एक्सपर्ट ड्राइवर की तरह।5 easy tips to learn car driving.zip of life.Motozip. 2024, जुलाई
Anonim
Image
Image

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

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

इसलिए मैं इस उडेमी कोर्स में आया: बिल्ड योर ओन सेल्फ-ड्राइविंग कार जिसने मुझे इस प्रोजेक्ट के लिए आइडिया दिया।

यदि आप उदमी पाठ्यक्रम में रुचि रखते हैं, तो आप वहां वापस जांच कर सकते हैं; यह समय-समय पर भारी छूट पर बिक्री पर जाता है। नोट: भाग 1 और भाग 2 है - आपको दो पाठ्यक्रमों को पैकेज (छूट) के रूप में कैसे प्राप्त किया जाए, इस पर कुछ जांच करने की आवश्यकता है।

इस निर्देश का उद्देश्य दुगना है। सबसे पहले, पाठ्यक्रम के कुछ हिस्सों (जैसे कि पुर्जे और हार्डवेयर) के लिए कुछ संकेत और विकल्प देना। और दूसरा, पाठ्यक्रम का विस्तार करने के लिए।

उदमी पाठ्यक्रम का मुख्य उद्देश्य:

एक छोटी पहिए वाली रोबोट कार को स्केल-डाउन टू-लेन सड़क पर सेल्फ-ड्राइव करने में सक्षम होना है।

इसे लेन की धारियों को पहचानना होता है, और जब यह सड़क के अंत तक पहुँच जाती है।

इसे स्टॉप साइन (और स्टॉप) को पहचानना है।

साथ ही लाल और हरे रंग का ट्रैफिक सिग्नल।

इसे एक बाधा (दूसरी कार) के आसपास भी पहचानना और पैंतरेबाज़ी करना चाहिए।

यह निर्देशयोग्य पाठ्यक्रम में क्या जोड़ता है:

छोटी कार को रिमोट USB गेमपैड से चलाएं, ठीक उसी तरह जैसे इस अन्य इंस्ट्रक्शनल में।

पाठ्यक्रम क्या प्रदान करता है, इसके कुछ विकल्प दें।

आपको पाठ्यक्रम खरीदना भी नहीं पड़ सकता है:

यह निर्देश योग्य हो सकता है कि आपको आरंभ करने की आवश्यकता हो।

आपूर्ति

आवश्यक (सुझाए गए) भाग:

एक रोबोट चेसिस

चार मोटर

अरुडिनो

रास्पबेरी पाई (3, 3बी+, 4)

कैमरा (USB वेब कैमरा, या पिकामेरा मॉड्यूल)

बैटरी की ताकत

चालू/बंद स्विच

जम्पर तार

स्टैंड-ऑफ (प्लास्टिक और शायद धातु भी)

कृपया पुर्जे खरीदने का प्रयास करने से पहले संपूर्ण निर्देशयोग्य और वीडियो की समीक्षा करें।

इस परियोजना को करने के बाद, मुझे एहसास हुआ कि सटीक हिस्से इतने महत्वपूर्ण नहीं हैं।

चरण 1: भागों के बारे में अधिक जानकारी…

Image
Image
भागों के बारे में अधिक जानकारी…
भागों के बारे में अधिक जानकारी…
भागों के बारे में अधिक जानकारी…
भागों के बारे में अधिक जानकारी…

संबंधित वीडियो कुछ हिस्सों के बारे में विस्तार से बताता है, और कुछ समस्याएं जो मुझे मिलीं।

  • विभिन्न चेसिस / मोटर्स के लिए चारों ओर देखें
  • मोटरों में पहले से ही तार लगे होने चाहिए
  • आप एक ड्रिल और ड्रिल बिट, या अधिक छेद वाली चेसिस रखना चाह सकते हैं
  • ध्यान रखें कि वजन एक मुद्दा है। सब कुछ यथासंभव हल्का होना चाहिए।
  • L298 H-Bridge मोटर ड्राइवर बढ़िया काम करता है। नोट: स्क्रू टर्मिनल ब्लॉक के साथ एक प्राप्त करें (फोटो देखें)
  • आप शायद प्लास्टिक और धातु दोनों गतिरोध चाहते हैं, आकार M3 शायद सबसे अच्छा विकल्प है।

चेसिस (मोटर ड्राइवर, अरुडिनो, रास्पबेरी, पावर पीसीबी, ऑन / ऑफ स्विच, आदि) पर बोर्ड लगाने के लिए प्लास्टिक स्टैंडऑफ अच्छे हैं।

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

ड्रिल + ड्रिल बिट्स

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

एक ड्रिल का उपयोग करने से इसे फिर से स्थापित करना बहुत आसान हो जाता है (विशेषकर यदि चेसिस प्लास्टिक का है) और यह अधिक पेशेवर दिखता है।

चरण 2: विकास के दौरान कार को शक्ति देना

विकास के दौरान कार को शक्ति देना
विकास के दौरान कार को शक्ति देना
विकास के दौरान कार को शक्ति देना
विकास के दौरान कार को शक्ति देना

मेरी राय में, इस परियोजना के साथ आरंभ करने का सबसे तेज़, आसान तरीका है:

  • सॉफ्टवेयर Arduino स्केच विकास के लिए, बस Arduino को USB के माध्यम से अपने कंप्यूटर से कनेक्ट करें
  • सॉफ्टवेयर रास्पबेरी पाई के लिए, आपके पास 5V USB पावर होनी चाहिए जो कम से कम 3 Amps की आपूर्ति कर सके। और इसमें ऑन/ऑफ स्विच होना चाहिए। जब तक आपके पास अपने कंप्यूटर से जुड़ा एक अच्छा, संचालित यूएसबी हब नहीं है, तो आप शायद रास्पबेरी को सीधे अपने कंप्यूटर से पावर नहीं कर पाएंगे।
  • जब आप मोटरों/पहियों का परीक्षण करने के लिए तैयार हों, तो सबसे आसान है (फोटो देखें) एक अच्छी बिजली आपूर्ति। हालांकि, ये सस्ते नहीं हैं।

इस खंड के साथ मेरा कहना है कि आप विकास के दौरान बैटरी पावर का उपयोग नहीं करना चाहते हैं, क्योंकि यह आपकी प्रगति को बहुत धीमा कर देगा।

साथ ही, ऊपर दिए गए सुझावों के समान कुछ करने से, आपको इस बारे में चिंता करने की (अभी तक) ज़रूरत नहीं है कि आप कार को कैसे पावर देंगे। आप उस निर्णय को परियोजना में बाद के लिए विलंबित कर सकते हैं।

चरण 3: वास्तविक उपयोग के दौरान कार को पावर देना

वास्तविक उपयोग के दौरान कार को पावर देना
वास्तविक उपयोग के दौरान कार को पावर देना
वास्तविक उपयोग के दौरान कार को पावर देना
वास्तविक उपयोग के दौरान कार को पावर देना

यदि आप तर्क के लिए 5V शक्ति के लिए पाठ्यक्रम (या मैंने जो किया है) का पालन करने का निर्णय लेते हैं, तो ध्यान रखें कि इस परियोजना के लिए सभी 5V USB पावरबैंक अच्छे नहीं हैं।

यहाँ मुख्य बिंदु यह है कि आपको 5V की आवश्यकता है लेकिन आपको कम से कम 3 Amps की आवश्यकता है! इसे इस तरह से सोचें - आप एक पावरबैंक चाहते हैं जो एक लैपटॉप कंप्यूटर (शायद) को शक्ति प्रदान करे।

अगर आप यू.एस.ए. में रहते हैं तो मुझे लगता है कि ऐसा करने का एक सबसे अच्छा तरीका बेस्ट बाय से खरीदना है। क्यों? रिटर्न के लिए उनकी 14 दिन की मनी बैक पॉलिसी के कारण।

इससे पहले कि मैं काम करता, मुझे वास्तव में तीन अलग-अलग पावरबैंक आज़माने पड़े। अन्य रास्पबेरी पाई को अंडर-वोल्टेज के बारे में शिकायत करने का कारण बनते हैं।

मैंने कम से कम महंगे पावरबैंक के साथ शुरुआत की थी, और बस अगले मॉडल (जिसकी कीमत अधिक थी) की कोशिश करता रहा, जब तक कि मुझे एक काम करने वाला नहीं मिला।

Arduino को कैसे पावर दें

Udemy पाठ्यक्रम में, लेखक ने Arduino को सीधे पॉवरबैंक (उसने बनाए गए एक कस्टम पीसीबी के माध्यम से) से बिजली देने के लिए चुना और उसने Arduino के GPIO कनेक्टर पर पावर पिन का उपयोग किया।

हालाँकि, मैंने USB केबल के माध्यम से सीधे रास्पबेरी पाई से Arduino को पावर देना चुना।

आपको तय करना होगा कि कौन सा बेहतर है।

मोटर/मोटर चालक को शक्ति कैसे दें

उडेमी कोर्स में, लेखक ने सीधे 5V पावरबैंक से मोटर्स/ड्राइवर को पावर देना चुना। यदि आप उस दृष्टिकोण का उपयोग करते हैं तो दो विचार हैं।

  1. जब मोटरें पहली बार मुड़ना शुरू करती हैं, तो वे सबसे अधिक धारा खींचती हैं। यह बिजली वोल्टेज को 5V से नीचे (डुबकी) कर सकता है, और रास्पबेरी को रीसेट करने का कारण बन सकता है।
  2. मोटरों को शक्ति प्रदान करने के लिए केवल 5V का उपयोग करने का अर्थ है कि आप मोटरों को उतनी शक्ति प्रदान नहीं कर रहे हैं, और कार धीमी (अधिक सुस्त) चलेगी। मैंने मोटरों का परीक्षण किया है (उस बिजली की आपूर्ति के साथ) (फोटो देखें) कम से कम ९वी तक। वे 9वी पर ठीक काम करते हैं।

9वी (या अधिक) के बारे में अवलोकन

यदि आपने इस निर्देश के लिए सभी फ़ोटो और वीडियो पर एक नज़र डाली, तो आपने देखा कि मैंने अपना 9V पावर स्रोत बनाने के लिए एक कस्टम PCB को इकट्ठा किया। मैंने रास्ते में कुछ चीजें सीखी हैं।

अभी मैं मोटर्स को पावर देने के लिए समानांतर में कई (3) 9वी बैटरी सेल का उपयोग कर रहा हूं। मैंने क्षारीय और NiMH रिचार्जेबल बैटरी दोनों का उपयोग किया है।

सीखने का अनुभव # 1: NiMH 9V बैटरी को ठीक से चार्ज करने में एक लंबा समय (कई घंटे) लगता है।

संभावित समाधान: मल्टी-बैटरी NiMH चार्जर में निवेश करें। यह एक "स्मार्ट" चार्जर होना चाहिए।

नुकसान: वे सस्ती नहीं हैं।

सीखने का अनुभव #2: 9वी बैटरी वास्तव में कई छोटी आंतरिक कोशिकाओं से बनी होती हैं। अगर इनमें से एक भी सेल मर जाता है, तो पूरी बैटरी बेकार हो जाती है। मुझे यह समस्या नहीं हुई है, लेकिन मैंने इसके बारे में पढ़ा।

सीखने का अनुभव #3: सभी 9वी बैटरी समान वोल्टेज नहीं हैं। यह एक महत्वपूर्ण है। क्योंकि वोल्टेज जितना अधिक होगा, उतनी ही अधिक गति संभव है। कुछ बैटरी सेल (और चार्जर) केवल 8.4V हैं। कुछ और भी कम। कुछ 9.6V हैं।

सीखने का अनुभव # 4: 9वी बैटरी, विशेष रूप से एनआईएमएच वाले, वजन में हल्के होते हैं। एक अच्छी चीज। हालांकि, उनमें से ज्यादातर केवल आउटपुट करंट का mA प्रदान करते हैं। इसलिए मुझे उन्हें समानांतर में रखना पड़ा। आपको थोड़े समय के लिए भी लगभग 2 एम्पीयर की कुल वर्तमान क्षमता की आवश्यकता है।

सीखने का अनुभव #5: 9.6V बैटरी पैक मौजूद हैं, जिनका उपयोग रेडियो-नियंत्रित कारों जैसी चीज़ों के लिए किया जाता है। मैंने अभी तक एक का उपयोग नहीं किया है, लेकिन मेरा मानना है कि वे समानांतर 9वी बैटरी की तुलना में अधिक वर्तमान प्रदान करते हैं जैसे मैंने किया। साथ ही, आप सिंगल यूनिट को चार्ज कर सकते हैं। पैक विभिन्न आकारों में आते हैं। और एक वजन विचार है। और फिर, क्या आप पैक का उपयोग पूरी कार, या सिर्फ मोटरों को चलाने के लिए करते हैं? अगर पूरी कार के लिए, आपको रास्पबेरी पाई के लिए 5V स्टेप-डाउन रेगुलेटर की आवश्यकता होगी।

L298 H-Bridge में इस उद्देश्य के लिए 5V आउटपुट करने की क्षमता है, लेकिन मुझे इस बात की चिंता है कि यह रास्पबेरी पाई के लिए कितना करंट पैदा कर सकता है, और अगर यह L298 बोर्ड पर बहुत अधिक तनाव होगा।

यदि आप दो अलग-अलग बिजली स्रोत रखने का निर्णय लेते हैं, तो आपको वजन की समस्या (बहुत भारी) हो सकती है।

चरण 4: गेमपैड ड्राइविंग के लिए सॉफ्टवेयर प्रोग्रामिंग

मुझे लगता है कि मैंने रिमोट यूएसबी गेमपैड इंस्ट्रक्शनल के माध्यम से रोबोट ड्रिवेन में पहले से ही इस सेक्शन को कवर किया है, इसलिए मैं इसे यहां नहीं दोहराऊंगा।

उस अन्य इंस्ट्रक्शनल में प्रोग्रामिंग / सॉफ्टवेयर सेक्शन सिर्फ एक सुझाव हैं। मुझे लगता है कि परीक्षण-और-त्रुटि से कोई और सीखता है।

चरण 5: कैमरा जोड़ना

कैमरा जोड़ना
कैमरा जोड़ना
कैमरा जोड़ना
कैमरा जोड़ना
कैमरा जोड़ना
कैमरा जोड़ना

उडेमी पाठ्यक्रम में, मेरा मानना है कि लेखक कैमरे को ऊपर उठाने का एक तरीका बनाने के लिए गोल लकड़ी के डॉवेल और एक गोंद बंदूक का उपयोग करता है।

आप कैमरे को ऊपर उठाना चाहेंगे ताकि वह दो लेन वाली सड़क पर दिखे, ताकि वह गलियों को आसानी से पहचान सके।

जहाँ मैं U. S. A. में रहता हूँ, लकड़ी के डॉवेल बहुत सस्ते थे। आप उन्हें लोव या होम डिपो में खरीद सकते हैं। मैंने गोल डॉवल्स के बजाय चौकोर डॉवेल को चुना।

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

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

आप फिश-आई टाइप कैमरा में निवेश करना चाह सकते हैं।

मैंने एक बहुत सस्ती गर्म गोंद बंदूक खरीदी, लेकिन मैं टॉवर के आधार को बेहतर ढंग से मजबूत करना चाहता था, इसलिए मैंने कुछ पेंच-छेद पूर्व-ड्रिल किए और सब कुछ एक साथ बेहतर रखने के लिए शिकंजा जोड़ा।

फिर मैंने कार के चेसिस पर बेस को बोल्ट किया।

यदि बाद में, मैं चीजों को इधर-उधर करना चाहता हूं, तो मैं चेसिस से आधार को हटा देता हूं, चेसिस के नए स्थान में नए छेद ड्रिल करता हूं, और चेसिस पर टॉवर को फिर से बोल्ट करता हूं।

मैं सब कुछ परीक्षण करने के तरीके के रूप में बड़े रोबोट (वालेस रोबोट 4) से "फॉलो-मी" पायथन और नोड.जेएस कोड लाया। कृपया इस खंड में उन youtube की सूची के लिए फ़ोटो देखें जो "फॉलो-मी" के बारे में बहुत अधिक विवरण देते हैं।

जैसा कि मैंने उल्लेख किया है, पहले USB वेब कैमरा माउंट करना आसान था। बाद में मैं पिकामेरा मॉड्यूल माउंट कर सकता हूं।

चरण 6: चेहरा पहचानना - स्थिति निर्धारित करें

Image
Image

यह हिस्सा उडेमी कोर्स का फोकस नहीं है, बल्कि यह एक मजेदार एक्सरसाइज थी।

यदि आप "पायथन ओपनसीवी फेस रिकग्निशन" के लिए कुछ वेब खोज करते हैं, तो आपको ऐसा करने के तरीके के बारे में कई अच्छे उदाहरण मिलेंगे, और वे सभी समान चरणों का पालन करते हैं।

  1. "हार" फेस फाइल लोड करें
  2. कैमरा इनिशियलाइज़ करें
  3. एक लूप शुरू करें जहां आप एक फ्रेम पकड़ते हैं
  4. रंग छवि को ग्रे-स्केल में बदलें
  5. इसे ओपनसीवी को खिलाएं ताकि यह चेहरा ढूंढ सके
  6. एक आंतरिक लूप शुरू करें (प्रत्येक चेहरे के लिए मिला) (मेरे मामले में, मैं 1 से अधिक चेहरे को निरस्त करने के लिए कोड जोड़ता हूं)

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

यदि आप रोबोट को आगे या पीछे ले जाना चाहते हैं, तो आपको केवल डब्ल्यू पर विचार करना होगा। यदि डब्ल्यू बहुत बड़ा है (बहुत करीब), तो रोबोट को पीछे ले जाएं। यदि W बहुत छोटा है (बहुत दूर), तो रोबोट को आगे बढ़ने के लिए कहें।

बाएं/दाएं आंदोलन थोड़ा अधिक जटिल है लेकिन पागल नहीं है। इस खंड के लिए छवि पर एक नज़र डालें जिसमें विवरण दिया गया है कि बाएं बनाम दाएं चेहरे की स्थिति कैसे निर्धारित की जाए।

ध्यान दें:

यदि आप किसी भी वेब ओपनसीवी उदाहरण को चलाते हैं, तो वे सभी एक वर्ग में उल्लिखित चेहरे के साथ ओपनसीवी "देखने" का वास्तविक दृश्य दिखाते हैं। यदि आप देखेंगे कि वह वर्ग स्थिर नहीं है, भले ही आप गतिमान न हों।

उन बदलते मूल्यों के कारण रोबोट लगातार आगे या पीछे, बाएँ या दाएँ गति में रहेगा।

इस प्रकार, आपको आगे/पीछे और बाएं/दाएं दोनों के लिए किसी प्रकार का डेल्टा होना चाहिए।

आइए बाएं बनाम दाएं लें:

एक बार जब आप बाएं और दाएं की गणना कर लेते हैं, तो अंतर (डेल्टा) प्राप्त करें:

डेल्टा = एब्स (बाएं-दाएं)

आपको निरपेक्ष लेने की आवश्यकता है क्योंकि आप नहीं जानते कि कौन सी बड़ी संख्या होगी।

फिर आप कुछ सशर्त कोड जोड़ते हैं ताकि केवल डेल्टा कुछ न्यूनतम से अधिक होने पर स्थानांतरित करने का प्रयास किया जा सके।

आप आगे बनाम पीछे के लिए भी यही काम करेंगे।

चरण 7: फेस पोजीशन - मूविंग रोबोट

एक बार जब आप जान जाते हैं कि आपको बाएं या दाएं, आगे या पीछे जाने के लिए रोबोट की आवश्यकता है, तो आप यह कैसे करते हैं?

चूंकि यह निर्देशयोग्य एक कार्य प्रक्रिया में है, इस समय, मैंने इस परियोजना के लिए उपयोग करने के लिए अपने बड़े रोबोट से कोड की प्रतिलिपि बनाई है। कृपया यूट्यूब पर मेरी रोबोटिक्स प्लेलिस्ट देखें जहां यह इस सब का विवरण देता है।

संक्षेप में, मेरे पास परतों में कोड है।

पायथन फेस-रिकग्निशन स्क्रिप्ट Node.js सर्वर के लिए http अनुरोध करती है

Node.js सर्वर स्थानांतरण दिशाओं के लिए http अनुरोधों को सुनता है, उन्हें कस्टम सीरियल प्रोटोकॉल में परिवर्तित करता है

Node.js सर्वर और Arduino के बीच कस्टम सीरियल प्रोटोकॉल

Arduino स्केच जो रोबोट को स्थानांतरित करने के लिए वास्तविक आदेश देता है

उडेमी पाठ्यक्रम इसे ऊपर की तरह नहीं करता है। लेकिन चूंकि मैं अच्छी प्रगति करना चाहता था और वास्तविक छवि-पहचान पर ध्यान केंद्रित करना चाहता था, इसलिए मैंने अभी के लिए अपने पिछले कोड का पुन: उपयोग किया।

सिफारिश की: