विषयसूची:
- आपूर्ति
- चरण 1: डिवाइस सेट करना
- चरण 2: जंपिंग जैक चलाना
- चरण 3: कोड और कमांड फ़ाइल
- चरण 4: आगे के विचार और अन्य उदाहरण
वीडियो: ए हियरिंग जंपिंग जैक, गूगल कोरल टीपीयू एक्सेलेरेटर संस्करण: 4 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:20
यह अपने अंगों को हिलाता है, यह आपके आदेशों को सुनता है, यह नवीनतम मशीन लर्निंग तकनीक द्वारा संचालित है
"हियरिंग जंपिंग जैक" एक साधारण इलेक्ट्रोमैकेनिकल जंपिंग जैक है, जो दो माइक्रो सर्वो और एक बहुत ही सरल गियर द्वारा संचालित होता है, जिसमें "आंखों" के रूप में एलईडी होते हैं। इसे सरल वॉयस कमांड द्वारा नियंत्रित किया जाता है जो यह दर्शाता है कि इसे नौ पूर्वनिर्धारित पदों में से कौन सा स्थान लेना चाहिए, या यदि एलईडी को चालू या बंद किया जाना चाहिए, या यदि यह पूर्वनिर्धारित "नृत्य" या चालों का यादृच्छिक सेट करेगा।
सिस्टम का मुख्य तत्व Google कोरल TPU त्वरक है, जो Tensorflow Lite मॉडल को बहुत उच्च वेग के साथ ऑफ़लाइन चलाने की अनुमति देता है, यहां तक कि रास्पबेरी पाई जैसे "कमजोर" कंप्यूटर पर भी। यह अनुमति देता है उदा। आरपीआई कैमरे का उपयोग करके तेजी से वस्तु की पहचान और वर्गीकरण, लेकिन स्थानीय रूप से मशीन लर्निंग-आधारित आवाज पहचान कार्यों को चलाने के लिए।
मेरी जानकारी के लिए यह कोरल एक्सेलेरेटर वॉयस डिटेक्शन-संचालित भौतिक DIY डिवाइस के लिए पहला प्रकाशित उदाहरण है, और संलग्न कोड उदाहरण का उपयोग अन्य, अधिक जटिल परियोजनाओं के लिए भी किया जा सकता है।
आवाज नियंत्रण "प्रोजेक्ट कीवर्ड स्पॉटर" (https://github.com/google-coral/project-keyword-spotter) में "द हियरिंग स्नेक" उदाहरण पर आधारित है, जिसे हाल ही में (सितंबर 2019) GitHub पर रखा गया था। मेरे कॉन्फ़िगरेशन में, सिस्टम में एक रास्पबेरी पाई 4 शामिल है जो एक एडफ्रूट 16 चैनल सर्वो बोनट, एक Google कोरल टीपीयू एक्सेलेरेटर और एक वेबकैम से लैस है, यहां माइक्रोफ़ोन के रूप में उपयोग किया जाता है। जंपिंग जैक को पिछले निर्देश में पहले वर्णित किया गया था, जहां इसे वॉयस कमांड पढ़ने के लिए Google Voice किट द्वारा संचालित किया गया था, निम्नलिखित में वर्णित संस्करण 2.0 में सर्वो बोनट से जुड़ा हुआ है।
पिछले Google Voice Kit संस्करण की तीन केंद्रीय सीमाएँ थीं: यह Google वेब-आधारित ध्वनि पहचान सेवाओं पर निर्भर था और सेटअप अपेक्षाकृत जटिल था, आपको कोई आदेश देने से पहले किसी प्रकार के बटन को दबाने की आवश्यकता थी, और एक गंभीर विलंब था आदेश कहने और सिस्टम की प्रतिक्रिया के बीच। Google कोरल एक्सेलेरेटर का उपयोग प्रतिक्रिया समय को सेकंड में कम कर देता है, इंटरनेट कनेक्शन से स्वतंत्र है और हर समय सुन रहा है। कुछ संशोधनों के साथ आप इसका उपयोग जंपिंग जैक जैसे अधिक जटिल उपकरणों को नियंत्रित करने के लिए कर सकते हैं, जैसे कि रोबोट या कार, या जो कुछ भी आप रास्पबेरी पाई के साथ बना और नियंत्रित कर सकते हैं।
अपने वर्तमान संस्करण में कीवर्ड स्पॉटर लगभग 140 छोटे कीवर्ड/कुंजी वाक्यांशों के एक सेट को समझता है, जो साथ में मॉडल फ़ाइल ("voice_commands_v0.7_egetpu.tflite") में परिभाषित है और एक अलग लेबल फ़ाइल ("लेबल_gc2.raw.txt") में वर्णित है।. एक स्वतंत्र रूप से संशोधित फ़ाइल ("commands_v2_hampelmann.txt") द्वारा परिभाषित, विशेष रूप से हमारी स्क्रिप्ट द्वारा उपयोग किए जाने वाले कीवर्ड को वर्चुअल कीबोर्ड पर कीस्ट्रोक्स में मैप किया जाता है, उदा। अक्षरों, संख्याओं के लिए, ऊपर/नीचे/बाएं/दाएं, crtl+c, वगैरह।
फिर, उदा. pygame.key का उपयोग करते हुए, इन "कीस्ट्रोक" को पढ़ा जाता है और यह नियंत्रित करने के लिए उपयोग किया जाता है कि एक उपकरण, यहां जंपिंग जैक, कौन से कार्य करेगा। हमारे मामले में इसका मतलब है कि दो सर्वो को पूर्वनिर्धारित स्थिति में चलाना, या एल ई डी को चालू या बंद करना। चूंकि खोजशब्द स्पॉटर एक अलग चाल में चलता है, यह आपके आदेशों को स्थायी रूप से सुन सकता है।
संस्करण 21 सितंबर, 2019
आपूर्ति
रास्पबेरी पाई 4, पिमोरोनी के माध्यम से
Google कोरल टीपीयू एक्सेलेरेटर, मौसर जर्मनी के माध्यम से, 72€
एडफ्रूट 16 सर्वो बोनट, पिमोरोनी के माध्यम से, लगभग 10 €
www.adafruit.com/product/3416
learn.adafruit.com/adafruit-16-channel-pwm…
स्टेकर हैडर (यदि आवश्यक हो)
www.adafruit.com/product/2223
सर्वो बोनट के लिए 4x AA बैटरी पैक (या अन्य 5-6V पावर स्रोत)
पुराना वेबकैम, माइक्रोफ़ोन के रूप में
सर्वो संचालित जंपिंग जैक, जैसा कि पिछले निर्देश में वर्णित है। लेआउट आरेखण अगले चरण से जुड़े हुए हैं, लेकिन इसमें समायोजन की आवश्यकता हो सकती है।
जंपिंग जैक के लिए आवश्यक भाग:
- 3 मिमी विदेशी मुद्रा प्लेट
- 2 माइक्रो सर्वोस
- 2 और 3 मिमी स्क्रू और नट
- 2 सफेद एलईडी और एक रोकनेवाला
- थोड़ा सा केबल
चरण 1: डिवाइस सेट करना
जंपिंग जैक बनाने के लिए, कृपया पिछले निर्देश में दिए गए संकेतों का पालन करें। मैंने अपने प्रोटोटाइप के लिए फॉरेक्स का इस्तेमाल किया, लेकिन आप लेजर कट ऐक्रेलिक या प्लाईवुड प्लेट्स का इस्तेमाल कर सकते हैं। आपको अपने सर्वो आदि के आकार के अनुसार लेआउट को समायोजित करना पड़ सकता है। परीक्षण करें कि क्या अंग और गियर बिना घर्षण के चल सकते हैं।
अपना रास्पबेरी पाई सेटअप करें। कोरल जीथब साइट पर, एक रास्पियन छवि उपलब्ध है जिसमें पाई पर कोरल त्वरक को चलाने के लिए आवश्यक सभी चीजें शामिल हैं और इसमें बहुत सारी परियोजनाएं शामिल हैं, सभी सेटिंग्स पहले से ही मौजूद हैं।
Google कोरल गिटहब पेज से प्रोजेक्ट कीवर्ड स्पॉटर प्राप्त करें। संकेत के अनुसार सभी आवश्यक सॉफ़्टवेयर स्थापित करें।
प्रदान की गई फ़ाइलों को स्थापित करें। जंपिंग जैक पायथन स्क्रिप्ट को प्रोजेक्ट कीवर्ड स्पॉटर फोल्डर में रखें और कॉन्फिग सबफोल्डर में संबंधित कमांड फाइल को रखें।
एडफ्रूट सर्वो बोनट को पाई में संलग्न करें। चूंकि मैं एक प्रशंसक के साथ आरपीआई आवास का उपयोग कर रहा हूं, मुझे कनेक्शन सक्षम करने के लिए जीपीआईओ स्टैकर्स (उदाहरण के लिए पिमोरोनी से उपलब्ध) का उपयोग करने की आवश्यकता है। सर्वो बोनट के लिए एडफ्रूट के निर्देशों के अनुसार सभी आवश्यक पुस्तकालय स्थापित करें।
सर्वो बोनट में 5-6V पावर स्रोत संलग्न करें। सर्वो और एलईडी संलग्न करें। मैं अपने मामले में, मैंने एल ई डी के लिए पोर्ट 0 और सर्वो के लिए पोर्ट 11 और 15 का उपयोग किया।
सब कुछ जांचने के लिए, मैं प्रोजेक्ट कीवर्ड स्पॉटर "हियरिंग स्नेक" उदाहरण और एडफ्रूट सर्वो बोनट उदाहरणों को पहले आज़माने की सलाह दूंगा।
चरण 2: जंपिंग जैक चलाना
यदि सभी भाग सेट अप और चल रहे हैं, तो इसका उपयोग करने का प्रयास करें। आप स्क्रिप्ट को IDE या कमांड लाइन से चला सकते हैं।
"स्थिति ०" से "स्थिति ९" तक चिल्लाना जंपिंग जैक को पूर्वनिर्धारित पदों में से एक लेने के लिए प्रेरित करेगा। मैंने "1" को दोनों भुजाओं के ऊपर (uu), "3" को बाएँ ऊपर, दाएँ नीचे (ud), "9" को दोनों भुजाओं के नीचे (dd) और "5" को दोनों भुजाओं पर केंद्रित (cc) के रूप में परिभाषित किया।
यू यू यू यू यू = 1 2 3
घन सीसी सीडी = 4 5 6
डु डीसी डीडी = 7 8 9
"0" "5" के समान है। "3" और "8" कीवर्ड स्पॉटर द्वारा बहुत अच्छी तरह से पहचाने नहीं जाते हैं और उन्हें दोहराया जाना पड़ सकता है।
आपको प्रत्येक सर्वो/पक्ष के लिए न्यूनतम और अधिकतम मानों को समायोजित करना पड़ सकता है ताकि सर्वो अवरुद्ध न हों और फिर बहुत अधिक शक्ति प्राप्त करें।
"अगला गेम" "नृत्य" शुरू करेगा, यानी पदों का एक परिभाषित अनुक्रम, जबकि "रैंडम गेम" जंपिंग जैक को चालों का एक यादृच्छिक अनुक्रम करने के लिए शुरू करेगा। दोनों ही मामलों में वे हमेशा के लिए चलेंगे, इसलिए आपको आंदोलनों को रोकना पड़ सकता है, उदा। "स्थिति शून्य" कमांड के साथ।
"स्टॉप गेम" एक "ctrl + c" उत्पन्न करेगा और प्रक्रिया को रोक देगा।
"स्विच ऑन" और "स्विच ऑफ" का उपयोग एल ई डी को चालू और बंद करने के लिए किया जा सकता है।
समय में संशोधन करके। नींद के मूल्यों को आप आंदोलनों के वेग को समायोजित कर सकते हैं।
चरण 3: कोड और कमांड फ़ाइल
यहां प्रस्तुत कोड "हियरिंग स्नेक" कोड का एक संशोधन है जो प्रोजेक्ट कीवर्ड स्पॉटर पैकेज का हिस्सा है। मैंने विवरण की वास्तविक समझ के बिना, मेरे आवेदन के लिए आवश्यक कुछ भी हटा दिया। किसी भी सुधार का स्वागत है।
फिर मैंने उनकी उदाहरण फाइलों के आधार पर एडफ्रूट सर्वो बोनट के लिए आवश्यक भागों को जोड़ा।
मैं दोनों भागों के प्रोग्रामर्स को धन्यवाद देना चाहता हूं।
कोड फ़ाइल के रूप में संलग्न पाया जा सकता है। इसे अपने जोखिम पर उपयोग करें, इसे संशोधित करें, इसे सुधारें, इसके साथ खेलें।
# कॉपीराइट 2019 गूगल एलएलसी
# # अपाचे लाइसेंस के तहत लाइसेंस, संस्करण 2.0 ("लाइसेंस"); # आप लाइसेंस के अनुपालन के अलावा इस फ़ाइल का उपयोग नहीं कर सकते। # आप ## https://www.apache.org/licenses/LICENSE-2.0 # पर लाइसेंस की एक प्रति प्राप्त कर सकते हैं # जब तक लागू कानून द्वारा आवश्यक न हो या लिखित में सहमति न हो, लाइसेंस के तहत वितरित सॉफ्टवेयर # एक पर वितरित किया जाता है "जैसा है" के आधार पर, # वारंटी या किसी भी प्रकार की शर्तों के बिना, या तो व्यक्त या निहित। # लाइसेंस के तहत अनुमतियों और # सीमाओं को नियंत्रित करने वाली विशिष्ट भाषा के लिए लाइसेंस देखें। _future_ से _future_ आयात _future_ से आयात विभाग आयात करें प्रिंट_फंक्शन आयात argparse आयात ओएस यादृच्छिक आयात रैंडिंट से थ्रेडिंग आयात से थ्रेड आयात समय edgetpu.basic.basic_engine से आयात करें BasicEngine आयात मॉडल pygame से आयात करें। स्थानीय लोग आयात * यादृच्छिक आयात रैंडरेंज से आयात कतार adafruit_servokit आयात से सर्वोकिट आयात बोर्ड आयात बसियो आयात adafruit_pca9685 आयात समय i2c = busio. I2C (board. SCL, बोर्ड। एसडीए) टोपी = adafruit_pca9685. PCA9685 (i2c) टोपी। आवृत्ति = 60 किट = सर्वो किट (चैनल = 16) # सेट संख्या चैनलों के #kit.servo[0].actuation_range = 160 #kit.servo[0].set_pulse_width_range(1000, 2000) # ऊपर, मध्य और नीचे बाईं और दाईं भुजाओं के लिए सेटिंग्स up_l = 35 md_l = 90 dn_l = 160 up_r = १६० md_r = ९० dn_r = ३५
एलएफटी = 15 # सर्वो पोर्ट की संख्या, बाएं सर्वो (0-8)
आरजीटी = 11 # सर्वो पोर्ट की संख्या, दायां सर्वो (0-8) एलईडी_चैनल_0 = टोपी। चैनल [0] # पोर्ट 0 पर एलईडी सेट एलईडी_चैनल_0. ड्यूटी_साइकिल = 0 # एलईडी चालू करें 100% # नौ पदों की स्थिति के लिए आर्म सेटिंग्स की सूची = [(md_l, md_r), (up_l, up_r), (up_l, md_r), (up_l, dn_r), (md_l, up_r), (md_l, md_r), (md_l, dn_r), (dn_l, up_r), (dn_l, md_r), (dn_l, dn_r)] # 9 जंपिंगजैक पोजीशन को परिभाषित करता है, जो पूर्णांक 0-9 डांस1 = (0, 8, 7, 4, 1, 2, 3, 6, 9, 8, 5, 2 द्वारा इंगित किया गया है), 1, 4, 7, 8, 9, 6, 3, 2, 0) # एक "नृत्य" वर्ग नियंत्रक (वस्तु): #Callback function def _init_(self, q): self._q = q def कॉलबैक (स्वयं), कमांड): self._q.put(command) class ऐप: def _init_(self): self._running = True def on_init(self): pygame.init() self.game_started = True self._running = True return True def on_event(self, event): if event.type == pygame. QUIT: self._running = False def JumpingJack0(self, keys): # जम्पिंग जैक को नियंत्रित करता है, कीवर्ड: "स्थिति x" कुंजी = int (कुंजी) p = स्थिति [कुंजी] ए = पी [0] बी = पी [1] प्रिंट ("स्थिति:", कुंजी, "बाएं" /दाएं: ", ए, "/", बी, "डिग्री") # sys.stdout.लिखें ("स्थिति:", कुंजी, "बाएं/दाएं:", ए, "/", बी, "डिग्री") Kit.servo[lft].angle = a kit.servo[rgt].angle = b time.sleep(0.1) def JumpingJack1(self): # जम्पिंग जैक डांस को नियंत्रित करता है, कीवर्ड: "नेक्स्ट गेम" dnce = डांस1 एसपी=(len(dnce)) r इन रेंज (sp) के लिए: #नृत्य क्रम, sp चरण dc = dnce[r] अगर (dc रेंज में नहीं है(10)): # प्रिंट ("स्थिति पर इनपुट त्रुटि", एसपी) डीसी = 4 पी = स्थिति [डीसी] ए = पी [0] बी = पी [1] किट। सर्वो [एलएफटी]। कोण = एक किट। सर्वो [आरजीटी]। कोण = बी समय। नींद (0.25) # वेग सेट करता है जम्पिंगजैक2(सेल्फ, कीज़) को नियंत्रित करता है: # जंपिंग जैक एल ई डी को नियंत्रित करता है, कीवर्ड: "स्विच ऑन/ऑफ" एलईडी = इंट (की) अगर एलईडी == 1: एलईडी_चैनल_0.ड्यूटी_साइकिल = 0xffff # एलईडी 100% समय पर चालू करें। सो जाओ (0.1) अगर एलईडी == 0: एलईडी_चैनल_0.ड्यूटी_साइकिल = 0 # एलईडी समय बंद करें। नींद (0.1) अगर एलईडी == 2: # ब्लिंक एलईडी_चैनल_0.ड्यूटी_साइकिल = 0xffff # एलईडी 100% समय चालू करें। नींद (0.5) एलईडी_चैनल_0.ड्यूटी_साइकिल = 0 # एलईडी को 100% समय पर चालू करें। नींद (0.5) एलईडी_चैनल_0.ड्यूटी_साइकिल = 0xffff # एलईडी 100% समय पर चालू करें। नींद (0.5) एलईडी_चैनल_0.ड्यूटी_साइकिल = 0 # एलईडी 100% समय चालू करें।): # जंपिंग जैक डांस को नियंत्रित करता है, कीवर्ड: "रैंडम गेम" # h रेंज में (10): dr= randrange (9) p = position[dr] a = p[0] b = p[1] Kit.servo [एलएफटी]। कोण = एक किट। सर्वो [आरजीटी]। कोण = बी समय। नींद (0.25) # आंदोलनों के वेग को स्पॉटटर (स्वयं, तर्क) सेट करता है: इंजन = बेसिकइंजिन (args.model_file) माइक = args.mic अगर args.mic कोई और नहीं int(args.mic) model.classify_audio(mic, engine, label_file="config/labels_gc2.raw.txt", command_file="config/commands_v2_hampelmann.txt", dectection_callback=self._controler.callback, sample_rate_hz=int(args.sample_rate_hz), num_frames_hop=int(args.num_frames_hop))
def on_execute (स्वयं, args):
अगर नहीं self.on_init(): self._running = False q = model.get_queue() self._controler = Controler(q) अगर नहीं तो args.debug_keyboard: t = थ्रेड (target=self.spotter, args=(args,)) t.daemon = True t.start() आइटम = -1 जबकि self._running: pygame.event.pump() अगर args.debug_keyboard: keys = pygame.key.get_pressed() और: try: new_item = q.get (सच, 0.1) कतार को छोड़कर। खाली: new_item = कोई नहीं अगर new_item कोई नहीं है: आइटम = new_item अगर (args.debug_keyboard और कुंजियाँ [pygame. K_ESCAPE]) या आइटम == "रोकें": self._running = False # if (args.debug_keyboard and keys[pygame. K_SPACE]) या आइटम == "go": # self. JumpingJack0(7) # if (args.debug_keyboard and keys[pygame. K_RIGHT]) या आइटम == "दाएं": स्वयं. JumpingJack0(6) अगर (args.debug_keyboard and keys[pygame. K_LEFT]) या आइटम == "बाएं": self. JumpingJack0(4) if (args.debug_keyboard and keys[pygame. K_UP]) या आइटम == " up": self. JumpingJack0(1) if (args.debug_keyboard and keys[pygame. K_DOWN]) या आइटम == "डाउन": self. JumpingJack0(9) if (args.debug_keyboard and keys[pygam) e. K_0]) या आइटम == "0": self. JumpingJack0(0) if (args.debug_keyboard and keys[pygame. K_1]) या आइटम == "1": self. JumpingJack0(1) if (args. डिबग_कीबोर्ड और कुंजियाँ[pygame. K_2]) या आइटम == "2": self. JumpingJack0(2) अगर (args.debug_keyboard and keys[pygame. K_3]) या आइटम == "3": self. JumpingJack0(3) if (args.debug_keyboard and keys[pygame. K_4]) या आइटम == "4": self. JumpingJack0(4) if (args.debug_keyboard and keys[pygame. K_5]) या आइटम == "5": self. JumpingJack0(5) अगर (args.debug_keyboard and keys[pygame. K_6]) या आइटम == "6": self. JumpingJack0(6) if (args.debug_keyboard and keys[pygame. K_7]) या आइटम == "7 ": self. JumpingJack0(7) if (args.debug_keyboard and keys[pygame. K_8]) या आइटम == "8": self. JumpingJack0(8) if (args.debug_keyboard and keys[pygame. K_9]) या आइटम == "9": self. JumpingJack0(9) if (args.debug_keyboard and keys[pygame. K_a]) या आइटम == "d": self. JumpingJack1() #dancing Jack, "next_game" पर अगर (args. डिबग_कीबोर्ड और कुंजियाँ [pygame. K_j]) या आइटम == "j": self. JumpingJack2(0) #LED on, ON " स्विच_ऑन" अगर (args.debug_keyboard and keys[pygame. K_k]) या आइटम == "k": self. JumpingJack2(1) #LED off, "swithch off" पर if (args.debug_keyboard and keys[pygame. K_l]) या आइटम == "l": self. JumpingJack2(1) #LED ब्लिंक "टारगेट" अगर (args.debug_keyboard and keys[pygame. K_r]) या आइटम == "r": self. JumpingJack3() #random डांस "रैंडम गेम" टाइम.स्लीप (0.05) सेल्फ.ऑन_क्लीनअप () अगर _name_ == '_main_': पार्सर = argparse. ArgumentParser() parser.add_argument('--debug_keyboard', help='JumpingJack को नियंत्रित करने के लिए कीबोर्ड का उपयोग करें.', क्रिया = 'store_true', डिफ़ॉल्ट = गलत) model.add_model_flags (पार्सर) args = parser.parse_args() the_app = App() the_app.on_execute(args)
कमांड कॉन्फ़िगरेशन फ़ाइल "commands_v2_hampelmann.txt" भी है। अपनी पसंद के अनुसार संशोधित करें। यह लेबल-फ़ाइल के आधार पर "कमांड, कुंजी, (ताकत,)" संयोजनों की एक सूची है।
स्थिति_शून्य, 0, स्थिति_एक, १, स्थिति_दो, २, स्थिति_तीन, ३, स्थिति_चार, ४, स्थिति_पांच, ५, स्थिति_छह, ६, स्थिति_सेवन, ७, स्थिति_आठ, ८, स्थिति_नौ, ९, चाल_अप, ऊपर, ऊपर, ऊपर, नीचे, नीचे, गो_डाउन, डाउन, मूव_बैकवर्ड, लेफ्ट, मूव_फॉरवर्ड, राइट, गो_बैकवर्ड, लेफ्ट, गो_फॉरवर्ड, राइट, 0.8 टारगेट, एल, म्यूट, जेड, हां, वाई, नहीं, एन, स्विच_ऑन, जे, स्विच_ऑफ, के, वॉल्यूम_अप, अप, वॉल्यूम_डाउन, डाउन, अगला_गेम, d, random_game, r, start_game, s, stop_game, ctrl+c,
चरण 4: आगे के विचार और अन्य उदाहरण
यह बिल्कुल स्पष्ट है कि इस सेटिंग का उपयोग रोबोट या अन्य उपकरणों को नियंत्रित करने के लिए भी किया जा सकता है। मूल रूप से वह सब कुछ जो रास्पबेरी पाई द्वारा नियंत्रित किया जा सकता है।
मैं एक MeArm चलाने के लिए स्क्रिप्ट के विस्तार पर काम कर रहा हूं, और आशा करता हूं कि अक्टूबर 2019 में इसे प्रस्तुत करने में सक्षम हूं।
मैं जंपिंग जैक को एक सेमाफोर के रूप में उपयोग करने पर भी विचार कर रहा हूं, और जंपिंग जैक की स्थिति को पढ़ने और इसे वापस एक संख्या में अनुवाद करने के लिए एक उपकरण के रूप में "प्रोजेक्ट पॉज़नेट" अंग स्थिति पहचान कार्यक्रम का उपयोग करने पर विचार कर रहा हूं। इस तरह यह पाठ को भी संप्रेषित कर सकता है, दी गई 2x 8 स्थिति 64 विभिन्न संख्याओं को इंगित कर सकती है, जो वर्णमाला, संख्याओं और संकेतों के लिए पर्याप्त से अधिक है। यह सक्षम हो सकता है, जबकि थोड़ा संशोधित, प्रस्तावित आईईटीएफ के लिए एक भौतिक प्राप्ति "सेमाफोर फ्लैग सिग्नलिंग सिस्टम (एसएफएसएस) पर आईपी डेटाग्राम का संचरण" (https://tools.ietf.org/html/rfc4824)।
लेकिन यह एक और शिक्षाप्रद होगा। और, जैसा कि पहले प्रयोगों ने संकेत दिया था कि एआई सिस्टम द्वारा मानव के रूप में पहचाने जाने से पहले जंपिंग जैक को महत्वपूर्ण संशोधनों की आवश्यकता होगी, कुछ समय की आवश्यकता हो सकती है।
मैं आपका ध्यान निम्नलिखित निर्देश की ओर आकर्षित करना चाहूंगा: ऑब्जेक्ट-फाइंडिंग-पर्सनल-असिस्टेंट-रोबोट-फीट-रास्पबेरी, जहां एक रास्पबेरी पाई और Google कोरल टीपीयू के संयोजन का उपयोग करके रोबोट खोजने वाली एक वस्तु का वर्णन किया गया है।
सिफारिश की:
जंपिंग-जैक काउंटर: ३ कदम
जंपिंग-जैक काउंटर: मैं अपने जंपिंग जैक को गिनने का एक तरीका चाहता था और जब मैं जंपिंग जैक करता था तो खुद को आगे बढ़ने के लिए प्रोत्साहित करता था, इसलिए मैंने एक जंपिंग जैक काउंटर बनाया जो सुपर मारियो ब्रदर्स से हर बार एक जंपिंग जैक पूरा करने पर घंटी बजती है।
सैमसंग एस८ आर्मबैंड ३डी प्रिंटेड टीपीयू: ५ कदम
सैमसंग S8 आर्मबैंड 3D प्रिंटेड TPU: एक छोटा और सरल निर्देश जो 3D प्रिंटिंग एक आर्मबैंड की यात्रा को दर्शाता है
एक श्रवण MeArm, Google कोरल TPU त्वरक संचालित: 3 चरण
ए हियरिंग मीआर्म, गूगल कोरल टीपीयू एक्सेलेरेटर ड्रिवेन: निम्नलिखित में मैं मीआर्म के एक आवाज-नियंत्रित संस्करण का वर्णन करना चाहूंगा, जो ग्रिपर के साथ एक छोटा xyz रोबोट आर्म है। मैंने MIME उद्योगों से MeArm Pi का उपयोग किया है, लेकिन सिस्टम MeArm, या इसी तरह के सर्वो-ड्राइव के किसी भी संस्करण पर लागू होना चाहिए
एक आवाज नियंत्रित जंपिंग जैक- Google Voice AIY संस्करण: 3 चरण
एक आवाज नियंत्रित जंपिंग जैक- Google Voice AIY संस्करण: तो आपको क्रिसमस के लिए AIY वॉयस किट मिल गई है, और निर्देशों का पालन करते हुए इसके साथ खेल रहे हैं। यह मजाकिया है, लेकिन अब? निम्नलिखित में वर्णित परियोजना एक सरल उपकरण प्रस्तुत करती है जिसे रास्पबे के लिए AIY आवाज HAT का उपयोग करके बनाया जा सकता है
जैक रिकग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर: 7 कदम
जैक रिकॉग्निशन और OLED के साथ Arduino गिटार जैक की होल्डर: इंट्रो: यह इंस्ट्रक्शनल मेरे Arduino आधारित गिटार जैक प्लगइन की होल्डर के निर्माण का विवरण देगा