विषयसूची:
- चरण 1: परिचय
- चरण 2: आवश्यक सामग्री और सॉफ्टवेयर
- चरण 3: रोवर चेसिस का निर्माण
- चरण 4: अल्ट्रासोनिक रेंजफाइंडर असेंबली का निर्माण
- चरण 5: योजनाबद्ध और विद्युत कनेक्शन
- चरण 6: एसएसएच और ओपन सीवी इंस्टॉलेशन
- चरण 7: रोवर के लिए पायथन कोड चलाना
वीडियो: रास्पबेरी पाई - ओपनसीवी ऑब्जेक्ट ट्रैकिंग के साथ स्वायत्त मार्स रोवर: 7 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
रास्पबेरी पाई 3, ओपन सीवी ऑब्जेक्ट रिकग्निशन, अल्ट्रासोनिक सेंसर और गियर डीसी मोटर्स द्वारा संचालित। यह रोवर किसी भी ऐसी वस्तु को ट्रैक कर सकता है जिसके लिए उसे प्रशिक्षित किया गया है और किसी भी इलाके में आगे बढ़ सकता है।
चरण 1: परिचय
इस निर्देश में, हम एक ऑटोनॉमस मार्स रोवर बनाने जा रहे हैं, जो एक वेब कैमरा डिवाइस या मूल रास्पबेरी पाई कैमरा का उपयोग करने के विकल्प के साथ रास्पबेरी पाई 3 पर चलने वाले ओपन सीवी सॉफ्टवेयर का उपयोग करके वस्तुओं को पहचान सकता है और उन्हें ट्रैक कर सकता है। यह अंधेरे वातावरण में अपना रास्ता ट्रैक करने के लिए एक सर्वो पर घुड़सवार एक अल्ट्रासोनिक सेंसर से भी लैस है जहां कैमरा काम नहीं करेगा। पाई से प्राप्त सिग्नल मोटर चालक IC (L293D) को भेजे जाते हैं जो 4 x 150RPM DC मोटर्स को पीवीसी पाइप से बनी बॉडी पर माउंट करते हैं।
चरण 2: आवश्यक सामग्री और सॉफ्टवेयर
सामग्री की आवश्यकता
- रास्पबेरी पाई (कोई भी लेकिन शून्य)
- रास्पबेरी पीआई कैमरा या एक वेब कैमरा
- L293D मोटर चालक IC
- रोबोट व्हील (7x4cm) X 4
- गियर वाली डीसी मोटर्स (150 आरपीएम) एक्स 4
- चेसिस के लिए पीवीसी पाइप
सॉफ्टवेयर की आवश्यकता
- एसएसएच के लिए पोटीन पी आईएनजी
- वस्तु पहचान के लिए सीवी खोलें
चरण 3: रोवर चेसिस का निर्माण
इस पीवीसी चेसिस को बनाने के लिए, आपको आवश्यकता होगी
- 2 एक्स 8"
- 2 एक्स 4"
- 4 टी-जोड़ों
पीवीसी पाइपों को सीढ़ी जैसी संरचना में व्यवस्थित करें और टी-जोड़ों में डालें। जोड़ों को और भी मजबूत बनाने के लिए आप पीवीसी सीलेंट का उपयोग कर सकते हैं।
गियर वाली डीसी मोटरों को क्लैंप का उपयोग करके पीवीसी पाइप चेसिस से जोड़ा जाता है और फिर पहियों को स्क्रू का उपयोग करके मोटर्स से जोड़ा जाता है।
चरण 4: अल्ट्रासोनिक रेंजफाइंडर असेंबली का निर्माण
अल्ट्रासोनिक रेंज फाइंडर असेंबली को माइक्रो सर्वो मोटर से जुड़े HC-SR04 अल्ट्रासोनिक सेंसर का उपयोग करके बनाया गया है। प्लास्टिक केस में डालने से पहले केबल्स को अल्ट्रासोनिक सेंसर से जोड़ा जाता है जो कि स्क्रू के माध्यम से सर्वो मोटर से जुड़ा होता है।
चरण 5: योजनाबद्ध और विद्युत कनेक्शन
कृपया संलग्न सर्किट डायग्राम के अनुसार विद्युत कनेक्शन करें।
चरण 6: एसएसएच और ओपन सीवी इंस्टॉलेशन
अब, हमें आवश्यक सॉफ़्टवेयर स्थापित करने के लिए अपने रास्पबेरी पाई में SSH की आवश्यकता है। हम SSHing द्वारा अपने रास्पबेरी पाई से शुरू करेंगे। सुनिश्चित करें कि आपका पाई आपके पीसी के समान राउटर से जुड़ा है और आप जानते हैं कि यह आपके राउटर द्वारा इसे सौंपा गया आईपी पता है। अब, यदि आप विंडोज़ पर हैं तो कमांड प्रॉम्प्ट या पुट्टी खोलें और निम्न कमांड चलाएँ।
एसएसएच पीआई@192.168.1.6
आपके पाई का IP अलग हो सकता है, मेरा 192.168.1.6 है।
अब, अपना डिफ़ॉल्ट पासवर्ड दर्ज करें - "रास्पबेरी"
अब, जब आपने अपने पाई में SSH'd कर लिया है, तो आइए इस कमांड के साथ अपडेट करके शुरू करें।
sudo apt-get update && sudo apt-get upgrade
आइए अब आवश्यक डेवलपर टूल इंस्टॉल करें, sudo apt-get install बिल्ड-एसेंशियल सेमेक pkg-config
इसके बाद, हमें कुछ छवि I/O पैकेज स्थापित करने की आवश्यकता है जो हमारे पीआई को डिस्क से विभिन्न छवि प्रारूपों को लाने में मदद करेंगे।
sudo apt-libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev इंस्टॉल करें
अब, वीडियो लाने, लाइव स्ट्रीमिंग और OpenCV प्रदर्शन को अनुकूलित करने के लिए कुछ पैकेज
sudo apt-libavcodec-dev libavformat-dev libswscale-dev libv4l-dev इंस्टॉल करें
sudo apt-libxvidcore-dev libx264-dev स्थापित करें
sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-libatlas-base-dev gfortran स्थापित करें
हमें पायथन 2.7 और पायथन 3 हेडर फाइलों को भी स्थापित करने की आवश्यकता है ताकि हम ओपनसीवी को पायथन बाइंडिंग के साथ संकलित कर सकें
sudo apt-get install python2.7-dev python3-dev
ओपनसीवी स्रोत कोड डाउनलोड करना
सीडी ~
wget -O opencv.zip
opencv.zip. को अनज़िप करें
opencv_contrib भंडार डाउनलोड कर रहा है
wget -O opencv_contrib.zip
खोलना opencv_contrib.zip
OpenCV को स्थापित करने के लिए वर्चुअल वातावरण का उपयोग करने की भी सिफारिश की जाती है।
sudo pip virtualenv virtualenvwrapper स्थापित करें
सुडो आरएम-आरएफ ~/.cache/pip
अब, वह virtualenv और virtualenvwrapper संस्थापित हो गया है, हमें नीचे की पंक्तियों को शामिल करने के लिए अपने ~/.profile को अद्यतन करने की आवश्यकता है
निर्यात WORKON_HOME=$HOME/.virtualenvs निर्यात VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 स्रोत /usr/local/bin/virtualenvwrapper.sh
अपना अजगर आभासी वातावरण बनाएं
mkvirtualenv cv -p python2
निर्मित आभासी वातावरण पर स्विच करें
स्रोत ~/.प्रोफ़ाइल
काम सीवी
NumPy स्थापित करना
पाइप स्थापित numpy
OpenCV को संकलित और स्थापित करें
सीडी ~/ओपनसीवी-3.3.0/
एमकेडीआईआर बिल्ड
सीडी बिल्ड
cmake -D CMAKE_BUILD_TYPE=RELEASE / -D CMAKE_INSTALL_PREFIX=/usr/स्थानीय / -D INSTALL_PYTHON_EXAMPLES=ON / -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/मॉड्यूल / -D BUILD_..
अंत में ओपनसीवी संकलित करें
मेक -जे४
इसके बाद यह कमांड रन करना खत्म कर देती है। आपको बस इसे इंस्टॉल करना है।
सुडो कॉन्फ़िगर करें
sudo ldconfig
चरण 7: रोवर के लिए पायथन कोड चलाना
Tracker.py नामक एक पायथन फ़ाइल बनाएँ और उसमें निम्न कोड जोड़ें।
सूडो नैनो ट्रैकर.py
कोड: -
#आसार कार्यक्रम
# यह प्रोग्राम एक लाल गेंद को ट्रैक करता है और एक रास्पबेरी पाई को उसका पालन करने का निर्देश देता है। आयात sys sys.path.append('/usr/local/lib/python2.7/site-packages') आयात cv2 आयात numpy के रूप में np आयात ओएस RPi. GPIO IO IO.setmode (IO. BOARD) IO.setup के रूप में आयात करें (7, IO. OUT) IO.setup(15, IO. OUT) IO.setup(13, IO. OUT) IO.setup(21, IO. OUT) IO.setup(22, IO. OUT) def fwd(: IO.output(21, 1)#Left Motor Forward IO.output(22, 0) IO.output(13, 1)#Right Motor Forward IO.output(15, 0) def bac(): IO.output (२१, ०) # लेफ्ट मोटर बैकवर्ड आईओ.आउटपुट (२२, १) आईओ.आउटपुट (१३, ०) # लेफ्ट मोटर बैकवर्ड IO.output(22, 1) IO.output(13, 1)#राइट मोटर फॉरवर्ड IO.output(15, 0) def lft(): IO.output(21, 1)#Left Motor Forward IO.output(22, 0) IO.output(13, 0)# राइट मोटर बैकवर्ड IO.output(15, 1) def stp(): IO.output(21, 0)#Left Motor Stop IO.output(22, 0) IO.output(13, 0)# राइट मोटर स्टॉप IO.output(15, 0) ######################### ############################################# ################### def main(): capWebcam = cv2. VideoCapture(0) # एक घोषित करें VideoCapture ऑब्जेक्ट और वेबकैम से संबद्ध, 0 => पहले वेबकैम का उपयोग करें # मूल रिज़ॉल्यूशन प्रिंट दिखाएं "डिफ़ॉल्ट रिज़ॉल्यूशन =" + str(capWebcam.get(cv2. CAP_PROP_FRAME_WIDTH)) + "x" + str(capWebcam.get(cv2. CAP_PROP_FRAME_HEIGHT)) capWebcam.set(cv2. CAP_PROP_FRAME_WIDTH, 320.0) # तेजी से संसाधन कैपवेबकैम.सेट (cv2. CAP_PROP_FRAME_HEIGHT, 240.0) के लिए संकल्प को 320x240 में बदलें) + "x" + str(capWebcam.get(cv2. CAP_PROP_FRAME_HEIGHT)) अगर capWebcam.isOpened() == गलत: # जांचें कि क्या VideoCapture ऑब्जेक्ट वेबकैम से जुड़ा था सफलतापूर्वक प्रिंट करें "त्रुटि: कैपवेबकैम सफलतापूर्वक एक्सेस नहीं किया गया\n\n" # यदि नहीं, तो os.system ("रोकें") को बाहर निकालने के लिए त्रुटि संदेश प्रिंट करें) != 27 और capWebcam.isOpened(): # Esc कुंजी दबाए जाने तक या वेबकैम कनेक्शन खो जाने तक blnFrameReadSuccessf ully, imgOriginal = capWebcam.read() # अगला फ़्रेम पढ़ें यदि नहीं blnFrameReadSuccessful या imgOriginal कोई नहीं है: # यदि फ़्रेम सफलतापूर्वक नहीं पढ़ा गया तो प्रिंट करें "त्रुटि: फ़्रेम वेबकैम से नहीं पढ़ा गया\n" # os.system को बाहर निकालने के लिए त्रुटि संदेश प्रिंट करें ("रोकें") # तब तक रोकें जब तक उपयोगकर्ता एक कुंजी दबाता है ताकि उपयोगकर्ता त्रुटि संदेश ब्रेक देख सके # लूप के दौरान बाहर निकलें (जो प्रोग्राम से बाहर निकलता है) # अंत अगर imgHSV = cv2.cvtColor (imgOriginal, cv2. COLOR_BGR2HSV) imgThreshLow = cv2.inRange(imgHSV), np.array([0, 135, 135]), np.array([18, 255, 255])) imgThreshHigh = cv2.inRange(imgHSV, np.array([165, 135, 135]), np. array([179, 255, 255])) imgThresh = cv2.add(imgThreshLow, imgThreshHigh) imgThresh = cv2. GaussianBlur(imgThresh, (3, 3), 2) imgThresh = cv2.dilate(imgThresh, np.ones((5, 5), np.uint8)) imgThresh = cv2.erode(imgThresh, np.ones((5, 5), np.uint8)) intRows, intColumns = imgThresh.shape वृत्त = cv2. HoughCircles(imgThresh, cv2. HOUGH_GRADIENT, 5, intRows / 4) # प्रोसेस्ड इमेज में सभी सर्किलों के साथ वेरिएबल सर्कल भरें यदि सर्कल कोई नहीं नहीं है: # यह लाइन प्रोग्राम को अगली लाइन पर क्रैश होने से बचाने के लिए आवश्यक है यदि सर्कल में सर्कल के लिए IO.output(7, 1) कोई सर्कल नहीं मिला है [0]: # प्रत्येक सर्कल x, y, त्रिज्या = सर्कल # के लिए # ब्रेक आउट x, y, और त्रिज्या प्रिंट "बॉल पोजीशन x =" + str(x) + ", y =" + str(y) + ", त्रिज्या =" + str (त्रिज्या) # प्रिंट बॉल की स्थिति और त्रिज्या obRadius = int(radius) xAxis = int(x) if obRadius>0 & obRadius100&xAxis180: print("मूविंग राइट") ryt() elif xAxis<100: प्रिंट ("मूविंग लेफ्ट") lft() और: stp() और: stp () cv2.circle(imgOriginal, (x, y), 3, (0, 255, 0), -1) # ज्ञात वस्तु के केंद्र में छोटा हरा वृत्त बनाएं cv2.circle(imgOriginal, (x, y), त्रिज्या, (0, 0, 255), 3) # खोजी गई वस्तु के चारों ओर लाल वृत्त बनाएं # अंत के लिए # अंत यदि अन्य: IO.output(7, 0) cv2.namedWindow("imgOriginal", cv2. WINDOW_AUTOSIZE) # विंडोज़ बनाएं, निश्चित विंडो आकार cv2.namedWindow("imgThresh", cv2. WINDOW_AUTOSIZE) # के लिए WINDOW_AUTOSIZE का उपयोग करें या विंडो के आकार बदलने की अनुमति देने के लिए WINDOW_NORMAL का उपयोग करें cv2.imshow("imgOriginal", imgOri ginal) # विंडोज़ दिखाएं cv2.imshow("imgThresh", imgThresh) # एंड जबकि cv2.destroyAllWindows () # मेमोरी रिटर्न से विंडोज़ हटाएं ################### ############################################# ######################### अगर _name_ == "_main_": main()
अब, जो कुछ करना बाकी है, वह है प्रोग्राम चलाना
अजगर ट्रैकर.py
बधाई! आपका सेल्फ-ड्राइविंग रोवर तैयार है! अल्ट्रासोनिक सेंसर आधारित नेविगेशन भाग जल्द ही पूरा हो जाएगा और मैं इस निर्देश को अपडेट करूंगा।
पढ़ने के लिए धन्यवाद!
सिफारिश की:
रास्पबेरी पाई का उपयोग कर मार्स रोवर: 5 कदम
रास्पबेरी पाई का उपयोग कर मार्स रोवर: प्रिय सभी महान शिक्षार्थी, मैं मार्स रोवर के बारे में जानने के लिए हमेशा उत्सुक रहता हूं, जिसमें 6 पहिए होते हैं जो मंगल की सभी सतह पर जा सकते हैं और पृथ्वी से चीजों का पता लगा सकते हैं। मैं भी अपने लैपटॉप पर बैठकर चीजों को एक्सप्लोर करना चाहता हूं। तो अब मैं इसे बनाने का सही समय बताता हूँ और
घूर्णी अक्ष के साथ ऑब्जेक्ट ट्रैकिंग कैमरा स्लाइडर। 3डी प्रिंटेड और रोबोक्ला डीसी मोटर कंट्रोलर और अरुडिनो पर निर्मित: 5 कदम (चित्रों के साथ)
घूर्णी अक्ष के साथ ऑब्जेक्ट ट्रैकिंग कैमरा स्लाइडर। 3D प्रिंटेड और RoboClaw DC मोटर कंट्रोलर और Arduino पर निर्मित: यह प्रोजेक्ट मेरे पसंदीदा प्रोजेक्ट्स में से एक रहा है क्योंकि मुझे DIY के साथ वीडियो-मेकिंग के अपने हित को मिलाने के लिए मिला है। मैंने हमेशा देखा है और फिल्मों में उन सिनेमाई शॉट्स का अनुकरण करना चाहता हूं जहां एक कैमरा एक स्क्रीन पर पैनिंग करते समय ट्रैक करता है
रास्पबेरी पाई के साथ एलईडी ब्लिंक - रास्पबेरी पाई पर GPIO पिन का उपयोग कैसे करें: 4 कदम
रास्पबेरी पाई के साथ एलईडी ब्लिंक | रास्पबेरी पाई पर GPIO पिन का उपयोग कैसे करें: हाय दोस्तों इस निर्देश में हम सीखेंगे कि रास्पबेरी पाई के GPIO का उपयोग कैसे करें। अगर आपने कभी Arduino का इस्तेमाल किया है तो शायद आप जानते हैं कि हम LED स्विच आदि को इसके पिन से जोड़ सकते हैं और इसे इस तरह काम कर सकते हैं। एलईडी ब्लिंक करें या स्विच से इनपुट प्राप्त करें ताकि
रास्पबेरी पाई 3 पर रास्पियन बस्टर स्थापित करना - रास्पबेरी पाई 3बी / 3बी+ के साथ रास्पियन बस्टर के साथ शुरुआत करना: 4 कदम
रास्पबेरी पाई 3 पर रास्पियन बस्टर स्थापित करना | रास्पबेरी पाई 3 बी / 3 बी + के साथ रास्पियन बस्टर के साथ शुरुआत करना: हाय दोस्तों, हाल ही में रास्पबेरी पाई संगठन ने रास्पियन बस्टर नामक नया रास्पियन ओएस लॉन्च किया। यह रास्पबेरी पाई के लिए रास्पियन का एक नया संस्करण है। तो आज इस निर्देश में हम सीखेंगे कि रास्पबेरी पाई 3 पर रास्पियन बस्टर ओएस कैसे स्थापित करें
रास्पबेरी पाई 3 बी में एचडीएमआई के बिना रास्पियन स्थापित करना - रास्पबेरी पाई 3बी के साथ शुरुआत करना - अपना रास्पबेरी पाई सेट करना 3: 6 कदम
रास्पबेरी पाई 3 बी में एचडीएमआई के बिना रास्पियन स्थापित करना | रास्पबेरी पाई 3बी के साथ शुरुआत करना | अपना रास्पबेरी पाई 3 सेट करना: जैसा कि आप में से कुछ लोग जानते हैं कि रास्पबेरी पाई कंप्यूटर काफी शानदार हैं और आप पूरे कंप्यूटर को सिर्फ एक छोटे बोर्ड पर प्राप्त कर सकते हैं। रास्पबेरी पाई 3 मॉडल बी में क्वाड-कोर 64-बिट एआरएम कोर्टेक्स ए 53 है। 1.2 गीगाहर्ट्ज़ पर क्लॉक किया गया। यह पाई 3 को लगभग 50