विषयसूची:

गिगलबॉट के साथ एक लिडार-गाइडेड रोबोट बनाएं: 8 कदम
गिगलबॉट के साथ एक लिडार-गाइडेड रोबोट बनाएं: 8 कदम

वीडियो: गिगलबॉट के साथ एक लिडार-गाइडेड रोबोट बनाएं: 8 कदम

वीडियो: गिगलबॉट के साथ एक लिडार-गाइडेड रोबोट बनाएं: 8 कदम
वीडियो: Motu teaches a lesson to Patlu 😈 | पतलू को सवक दिया | #cartoon #funny #funnyvideo 2024, नवंबर
Anonim
गिगलबोट के साथ एक लिडार-गाइडेड रोबोट बनाएं
गिगलबोट के साथ एक लिडार-गाइडेड रोबोट बनाएं
गिगलबॉट के साथ एक लिडार-निर्देशित रोबोट बनाएं
गिगलबॉट के साथ एक लिडार-निर्देशित रोबोट बनाएं
गिगलबॉट के साथ एक लिडार-निर्देशित रोबोट बनाएं
गिगलबॉट के साथ एक लिडार-निर्देशित रोबोट बनाएं

इस ट्यूटोरियल में, हम GiggleBot को भूलभुलैया की कठिनाइयों से निपटने के लिए बना रहे हैं।

हम GiggleBot पर एक सर्वो माउंट कर रहे हैं जिस पर हम एक दूरी सेंसर संलग्न करते हैं। दौड़ते समय, सर्वो आगे और पीछे घूमने वाला है ताकि दूरी सेंसर प्रत्येक बाधा तक की दूरी को माप सके। यह काफी हद तक एक LIDAR सेंसर की तरह काम करता है जो आमतौर पर बहुत अधिक महंगा होता है।

उसी समय, गिगलबॉट इस डेटा को एक दूरस्थ बीबीसी माइक्रो: बिट को भेज रहा है जो एल ई डी के 5-बाय -5 मैट्रिक्स पर बाधाओं के सापेक्ष अपनी स्थिति प्रदर्शित करता है।

आपका काम गिगलबॉट को नेविगेट करने में सक्षम होना है, यह देखकर कि यह अन्य बीबीसी माइक्रो: बिट पर क्या दिखाया गया है। गिगलबॉट को नियंत्रित करने के लिए, रिमोट बीबीसी माइक्रो: बिट के बटनों का उपयोग किया जाता है।

मजेदार लगता है! चलो इसके लिए नीचे उतरें, क्या हम?

चरण 1: आवश्यक घटक

आवश्यक घटक
आवश्यक घटक

हमें आवश्यकता होगी:

  1. एक गिगलबॉट।
  2. बीबीसी माइक्रो: बिट के लिए एक बैटरी पैक। यह अपने पैकेज में बीबीसी माइक्रो: बिट के साथ आता है।
  3. GiggleBot के लिए x3 AA बैटरी।
  4. दूरी सेंसर को गिगलबॉट से जोड़ने के लिए एक ग्रोव केबल।
  5. DexterIndustries की एक सर्वो किट।
  6. x3 बीबीसी माइक्रो: बिट्स। एक गिगलबॉट के लिए और दूसरा रोबोट को दूर से नियंत्रित करता था।
  7. DexterIndustries का एक डिस्टेंस सेंसर।

बीबीसी माइक्रो के लिए गिगलबॉट रोबोट प्राप्त करें: बिट यहाँ!

चरण 2: रोबोट को असेंबल करना

रोबोट को असेंबल करना
रोबोट को असेंबल करना
रोबोट को असेंबल करना
रोबोट को असेंबल करना

GiggleBot को प्रोग्राम करने के लिए तैयार करने के लिए, हमें इसे असेंबल करने की आवश्यकता है, हालाँकि बहुत कुछ करने की आवश्यकता नहीं है।

GiggleBot के नीचे इसके डिब्बे में 3 AA बैटरी डालें।

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

सर्वो आर्म को सर्वो पर माउंट करते समय, सुनिश्चित करें कि सर्वो पहले से ही स्थिति 80 पर सेट है। आप gigglebot.set_servo(gigglebot. RIGHT, 80) पर कॉल करके ऐसा कर सकते हैं। आप यहाँ उसके बारे में और अधिक पढ़ सकते हैं ।

इसके बाद, डिस्टेंस सेंसर को सर्वो पैकेज के सामने की तरफ रखें और इसे ऊपर के उदाहरण की तरह ठीक करें।

अंत में, डिस्टेंस सेंसर को ग्रोव केबल के साथ 2 I2C पोर्ट में से किसी से कनेक्ट करें और सर्वो मोटर को GiggleBot पर बैठे दाहिने पोर्ट से कनेक्ट करें - इस पर राइट पोर्ट का उल्लेख किया गया है।

चरण 3: अपनी खुद की भूलभुलैया बनाएं - वैकल्पिक

अपनी खुद की भूलभुलैया बनाएं - वैकल्पिक
अपनी खुद की भूलभुलैया बनाएं - वैकल्पिक

इस मामले में, मैंने NASCAR के समान एक बंद लूप ट्रैक बनाने के लिए बक्से के एक समूह का उपयोग किया है।

इस कदम पर, आप वास्तव में रचनात्मक हो सकते हैं और इसे अपनी इच्छानुसार मोड़ सकते हैं या इसे बहुत लंबा बना सकते हैं क्योंकि यह वास्तव में आप पर निर्भर है।

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

चरण 4: पर्यावरण की स्थापना

पर्यावरण की स्थापना
पर्यावरण की स्थापना

माइक्रोपायथन में बीबीसी माइक्रो: बिट को प्रोग्राम करने में सक्षम होने के लिए, आपको इसके लिए एक संपादक (एमयू संपादक) स्थापित करना होगा और गिगलबॉट माइक्रोपीथन रनटाइम को इसके रनटाइम के रूप में सेट करना होगा। उसके लिए, आपको इस पृष्ठ पर दिए गए निर्देशों का पालन करना होगा। इस समय तक, रनटाइम के संस्करण v0.4.0 का उपयोग किया जाता है।

चरण 5: गिगलबॉट की प्रोग्रामिंग - भाग I

सबसे पहले, गिगलबॉट की स्क्रिप्ट सेट करते हैं। यह स्क्रिप्ट GiggleBot को अपनी सर्वो मोटर को 160 डिग्री (प्रत्येक दिशा में 80 डिग्री) घुमाएगी, जबकि साथ ही प्रति मोड़ दूरी सेंसर से 10 रीडिंग लेगी।

चालू होने पर, गिगलबॉट तब तक खड़ा रहेगा जब तक कि उसे रिमोट कंट्रोल से कोई आदेश प्राप्त न हो जाए। केवल 3 आदेश हो सकते हैं: आगे बढ़ें, बाएं या दाएं।

नोट: निम्न स्क्रिप्ट में रिक्त स्थान गायब हो सकते हैं और ऐसा लगता है कि गिटहब जिस्ट को प्रदर्शित करने में कुछ समस्या है। आपको इसके GitHub पेज पर ले जाने के लिए जिस्ट पर क्लिक करें जहाँ आप कोड को कॉपी-पेस्ट कर सकते हैं।

रिमोट नियंत्रित LIDAR-आधारित GiggleBot

गिगलबॉट आयात से*
डिस्टेंस_सेंसर से डिस्टेंस सेंसर आयात करें
माइक्रोबिट आयात नींद से
utime आयात से ticks_us, sleep_us
इंपोर्ट यूस्ट्रक्ट
आयात रेडियो
# रोबोट को रोकें अगर वह पहले से ही चल रहा है
विराम()
# रेडियो सक्षम करें
रेडियो.ऑन ()
# दूरी सेंसर वस्तु
डीएस = दूरी सेंसर ()
ds.start_continuous ()
रोटेट_टाइम = 0.7# सेकंड में मापा जाता है
रोटेट_स्पैन =160# डिग्री में मापा जाता है
रोटेट_स्टेप्स = 10
ओवरहेड_कंपेंसेशन = 1.05# प्रतिशत में परिभाषित
टाइम_पर_स्टेप =10**6* रोटेट_टाइम / (रोटेट_स्टेप्स * ओवरहेड_कंपेंसेशन)
last_read_time =0
रडार = बाइटएरे (रोटेट_स्टेप्स)
सर्वो_रोटेट_दिशा =0# 0 ऊपर जाने के लिए (0->160) और 1 अन्यथा
रडार_इंडेक्स = 0
सेट_सर्वो (दाएं, 0)
जबकि सच:
#रडार से पढ़ें
अगर ticks_us () - last_read_time > time_per_step:
# डिस्टेंस सेंसर से पढ़ें
रडार [रडार_इंडेक्स] = int (ds.read_range_continuous() /10)
last_read_time = ticks_us ()
प्रिंट (रडार_इंडेक्स)
# सर्वो को बाएं से दाएं घुमाने के लिए तर्क करें
अगर रडार_इंडेक्स == रोटेट_स्टेप्स -1 और सर्वो_रोटेट_डायरेक्शन == 0:
सेट_सर्वो (दाएं, 0)
सर्वो_रोटेट_दिशा = 1
एलिफ रडार_इंडेक्स ==0और सर्वो_रोटेट_दिशा ==1:
सेट_सर्वो (राइट, रोटेट_स्पैन)
सर्वो_रोटेट_दिशा = 0
अन्यथा:
रडार_इंडेक्स +=1if सर्वो_रोटेट_दिशा ==0else-1
# और रडार मान भेजें
Radio.send_bytes (रडार)
प्रयत्न:
# रोबोट कमांड पढ़ें
lmotor, rmotor = ustruct.unpack('bb', Radio.receive_bytes())
# और मोटरों को क्रियान्वित करें क्या कोई प्राप्त आदेश होना चाहिए
set_speed (lmotor, rmotor)
चलाना()
को छोड़कर टाइप त्रुटि:
उत्तीर्ण

देखें rawgigglebot_lidar_robot.py GitHub द्वारा ❤ के साथ होस्ट किया गया

चरण 6: रिमोट प्रोग्रामिंग - भाग II

जो किया जाना बाकी है वह है दूसरा बीबीसी माइक्रो: बिट प्रोग्रामिंग करना जो रिमोट के रूप में कार्य करता है।

रिमोट का उपयोग इसकी 5-बाय-5 पिक्सेल-निर्मित स्क्रीन पर बाधाओं के सापेक्ष दूरी को प्रदर्शित करने के लिए किया जाता है। अधिक से अधिक, 10 पिक्सेल चालू होने वाले हैं।

साथ ही, रिमोट आपको इसके 2 बटन दबाकर गिगलबॉट को रिमोट कंट्रोल करने की क्षमता दे रहा है: आगे बढ़ें, बाएं और दाएं।

नोट: निम्न स्क्रिप्ट में रिक्त स्थान गायब हो सकते हैं और ऐसा लगता है कि गिटहब जिस्ट को प्रदर्शित करने में कुछ समस्या है। आपको इसके GitHub पेज पर ले जाने के लिए जिस्ट पर क्लिक करें जहाँ आप कोड को कॉपी-पेस्ट कर सकते हैं।

रिमोट नियंत्रित लिडार-आधारित गिगलबॉट - रिमोट कोड

माइक्रोबिट आयात नींद से, प्रदर्शन, बटन_ए, बटन_बी
इंपोर्ट यूस्ट्रक्ट
आयात रेडियो
आयात गणित
रेडियो.ऑन ()
रोटेट_स्टेप्स = 10
रोटेट_स्पैन =160# डिग्री में
रोटेट_स्टेप = रोटेट_स्पैन / रोटेट_स्टेप्स
max_distance =50# सेंटीमीटर में
side_length_leds =3# पिक्सेल के # में मापा जाता है
रडार = बाइटएरे (रोटेट_स्टेप्स)
xar =bytearray(rotate_steps)
यार = बाइटअरे (रोटेट_स्टेप्स)
save_xar =bytearray(rotate_steps)
save_yar =bytearray(rotate_steps)
मोटर_स्पीड = 50
जबकि सच:
स्थिति = Radio.receive_bytes_into (रडार)
यदि स्थिति कोई नहीं है:
# डिस्प्ले। क्लियर ()
सी के लिए, वैल इनन्यूमरेट (रडार):
अगर रडार [सी] <= max_distance:
# प्रत्येक दूरी के 2d निर्देशांक की गणना करें
कोण = रोटेट_स्टेप्स / (रोटेट_स्टेप्स -1) * रोटेट_स्टेप * सी
कोण += (180- रोटेट_स्पैन) /2.0
x_c = math.cos (कोण * math.pi /180.0) * रडार [c]
y_c = math.sin (कोण * math.pi /180.0) * रडार [c]
# 5x5 माइक्रोबिट डिस्प्ले पर फिट होने के लिए दूरियों को मापें
x_c = x_c * (side_length_leds -1) / max_distance
y_c = y_c * (side_length_leds +1) / max_distance
# स्थानान्तरण निर्देशांक
x_c += (side_length_leds -1)
y_c = (side_length_leds +1) - y_c
# गोल निर्देशांक ठीक उसी जगह पर होते हैं जहां एल ई डी पाए जाते हैं
अगर x_c - math.floor(x_c) <0.5:
x_c = गणित। तल (x_c)
अन्यथा:
x_c = math.ceil(x_c)
अगर y_c - math.floor(y_c) <0.5:
y_c = math.floor(y_c)
अन्यथा:
y_c = math.ceil(y_c)
xar[c] = x_c
यार [सी] = y_c
अन्यथा:
xar[c] =0
यार [सी] = 0
डिस्प्ले.क्लियर ()
एक्स, वाई इनज़िप (एक्सएआर, यार) के लिए:
डिस्प्ले.सेट_पिक्सेल (एक्स, वाई, 9)
# प्रिंट (सूची (ज़िप (xar, यार, रडार)))
राज्यए = बटन_ए.इस_प्रेस्ड ()
राज्यबी = बटन_बी.इस_प्रेस्ड ()
यदि राज्य ए और राज्य बी:
Radio.send_bytes(ustruct.pack('bb', motor_speed, motor_speed))
प्रिंट ('आगे')
अगर राज्य ए और राज्य बी नहीं:
Radio.send_bytes(ustruct.pack('bb', motor_speed, -motor_speed))
प्रिंट ('बाएं')
अगर नहीं राज्य ए और राज्य बी:
Radio.send_bytes(ustruct.pack('bb', -motor_speed, motor_speed))
प्रिंट ('दाएं')
अगर नहीं राज्य ए और राज्य बी नहीं:
Radio.send_bytes(ustruct.pack('bb', 0, 0))
प्रिंट ('स्टॉप')

देखें rawgigglebot_lidar_remote.py GitHub द्वारा ❤ के साथ होस्ट किया गया

चरण 7: रिमोट स्क्रीन की व्याख्या करना

"लोड हो रहा है="आलसी" गिगलबॉट को नियंत्रित करता है, आपके पास निम्नलिखित विकल्प हैं:

  1. गिगलबॉट को आगे ले जाने के लिए बटन ए और बटन बी दबाएं।
  2. गिगलबॉट को बाईं ओर घुमाने के लिए बटन ए दबाएं।
  3. GiggleBot को दाईं ओर घुमाने के लिए बटन B दबाएं।

यह देखने के लिए कि किस दिशा में निकटतम बाधाओं का पता लगाया गया है, बस रिमोट (रिमोट बीबीसी माइक्रो: बिट जिसे आप पकड़ रहे हैं) स्क्रीन पर देखें। आपको गिगलबॉट को देखे बिना दूर से उसे नियंत्रित करने में सक्षम होना चाहिए।

सिफारिश की: