विषयसूची:

रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन: 9 कदम (चित्रों के साथ)
रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन: 9 कदम (चित्रों के साथ)

वीडियो: रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन: 9 कदम (चित्रों के साथ)

वीडियो: रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन: 9 कदम (चित्रों के साथ)
वीडियो: क्यों गीला होता है पानी,,,,???#upscaspirents #science #shorta 2024, जुलाई
Anonim
रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन
रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन
रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन
रास्पबेरी पीआई के लिए सटीक वाईमोट लाइट गन

आम तौर पर, लाइट गन के रूप में उपयोग किया जाने वाला Wii रिमोट NES डक हंट जैसे रेट्रो गेम के लिए पर्याप्त सटीक नहीं है, क्योंकि Wii रिमोट वास्तव में उस टीवी पर उस बिंदु का चयन नहीं करता है जिस पर यह इंगित किया गया है। यह नहीं कर सकता! Wii रिमोट के सामने एक इन्फ्रारेड कैमरा है जो सेंसर बार में इन्फ्रारेड एल ई डी की लाइन देखता है, लेकिन यह नहीं जान सकता कि टीवी बार से कितनी दूर (या किस दिशा में) है या टीवी कितना बड़ा है। एमुलेटर और गेम क्रॉस-हेयर या अन्य लक्ष्यीकरण संकेतक दिखाकर इसके आसपास काम करते हैं, लेकिन यह सटीक लक्ष्य-शूटिंग अनुभव नहीं है।

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

इस परियोजना के लिए हार्डवेयर सरल है। साधारण 3डी-प्रिंटेड हाउसिंग में चार इंफ्रारेड एलईडी हैं जिन्हें टीवी हाउसिंग के ऊपर और नीचे चिपकाया जा सकता है और यूएसबी चार्जर में प्लग किया जा सकता है। इसके अलावा, यदि आपके पास Wii गन हाउसिंग नहीं है, तो मेरे पास एक साधारण 3D प्रिंटेड हैंडल और जगहें हैं जिन्हें आप Wii रिमोट से जोड़ सकते हैं (हालाँकि प्लास्टिक को बचाने के लिए, मैंने लकड़ी और 3D प्रिंटेड प्लास्टिक के बीच एक हाइब्रिड बनाया)।

अजगर आधारित सॉफ्टवेयर हार्डवेयर की तुलना में कठिन था और वर्तमान में केवल लिनक्स है। यह एल ई डी और वाईआई रिमोट को कैलिब्रेट करता है और फिर एक पूर्ण माउस का अनुकरण करने के लिए होमोग्राफी गणनाओं का उपयोग करता है जो मेरे रास्पबेरी पीआई 3 बी + पर रेट्रोआर्क के एफसीयूएम एनईएस एमुलेटर (और शायद कुछ अन्य अनुकरणकर्ताओं) में काफी अच्छी तरह से काम करता है।

आपूर्ति

  • Wii रिमोट
  • चार 940 एनएम 5 मिमी इन्फ्रारेड एल ई डी
  • कार्यशील प्रकार A प्लग के साथ पुराना USB केबल
  • रास्पबेरी पीआई 3 या ब्लूटूथ समर्थन के साथ अन्य लिनक्स कंप्यूटर
  • 3डी प्रिंटर और फिलामेंट (वैकल्पिक)

चरण 1: इन्फ्रारेड एलईडी श्रृंखला

इन्फ्रारेड एलईडी श्रृंखला
इन्फ्रारेड एलईडी श्रृंखला
इन्फ्रारेड एलईडी श्रृंखला
इन्फ्रारेड एलईडी श्रृंखला

वर्किंग टाइप ए मेल सॉकेट के साथ एक पुराना यूएसबी केबल प्राप्त करें (आमतौर पर मेरे फोन चार्जिंग केबल माइक्रो यूएसबी एंड पर टूट जाते हैं, इसलिए मेरे पास वर्किंग टाइप ए मेल सॉकेट के साथ बचे हुए केबल हैं).. वास्तव में, यह ठीक है अगर डेटा केबल हैं जब तक बिजली की लाइनें काम करती हैं तब तक टूट जाती हैं। दूसरे सिरे को काट लें। सिद्धांत रूप में लाल केबल +5V होना चाहिए और काला जमीन होना चाहिए, लेकिन इसे एक मल्टीमीटर से जांचें (इसे चार्जर में प्लग करें, और फिर लाल और काले तारों के बीच वोल्टेज की जांच करें)।

चूंकि इन्फ्रारेड एल ई डी में लगभग 1.2-1.3V वोल्टेज ड्रॉप होता है, इसलिए मैंने उनमें से चार को श्रृंखला लूप में USB केबल में मिला दिया। सुनिश्चित करें कि आपके द्वारा सोल्डर किए गए तार इतने लंबे हैं कि आप एलईडी को टीवी के नीचे और दो शीर्ष पर, एलईडी (लगभग 10 इंच या तो) के बीच क्षैतिज स्थान की एक सभ्य मात्रा के साथ लगा सकते हैं।

एलईडी लूप बनाने के लिए अधिक सटीक:

  • +5V यूएसबी वायर के लिए पहली एलईडी के माइनस साइड (कैथोड, छोटा पैर, फ्लैट किनारे के साथ) मिलाप करें
  • पहली एलईडी के प्लस साइड (एनोड, लंबा पैर, गोल किनारे के साथ) को दूसरी एलईडी के माइनस साइड से मिलाएं
  • दूसरी एलईडी को तीसरे और तीसरे से चौथे में मिलाने के लिए दोहराएं
  • फिर चौथी एलईडी के प्लस साइड को एक तार से ग्राउंड यूएसबी वायर से कनेक्ट करें।

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

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

चरण 2: टीवी से अटैच करें

टीवी से अटैच करें
टीवी से अटैच करें
टीवी से अटैच करें
टीवी से अटैच करें
टीवी से अटैच करें
टीवी से अटैच करें

अब, दो एलईडी को टीवी के नीचे और दो को ऊपर की तरफ लगाएं। क्षैतिज रिक्ति लगभग दस इंच होनी चाहिए। यदि यह बहुत अधिक है, तो आपको Wii रिमोट कैमरे के दृश्य क्षेत्र में उन सभी को कैप्चर करने में समस्या हो सकती है। लेकिन अगर वे बहुत करीब हैं, तो मेरा ज्यामितीय अंतर्ज्ञान कहता है कि आपके पास कम सटीकता होगी।

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

चरण 3: सॉफ़्टवेयर स्थापित करें

वर्तमान में सॉफ्टवेयर केवल लिनक्स है। निम्नलिखित सेटअप को रास्पबेरी पीआई 3 के लिए रास्पियन स्ट्रेच के साथ डिज़ाइन किया गया है। अन्य लिनक्स सिस्टम में कुछ बदलाव की आवश्यकता होगी। पहले के मॉडल पर आपको ब्लूटूथ डोंगल की आवश्यकता होगी और आपको इसे कमांडलाइन से भी चलाने की आवश्यकता होगी:

sudo get-apt install ब्लूटूथ

चरण ए: उदेव

इसके बाद /etc/udev/rules.d/wiimote.rules में एक फाइल बनाएं जिसमें सिंगल लाइन हो:

कर्नेल == "यूनपुट", मोड = "0666"

उदाहरण के लिए, आप टेक्स्ट एडिटर के साथ या कमांडलाइन पर निम्नलिखित टाइप करके ऐसा कर सकते हैं:

sudo sh -c 'गूंज कर्नेल ==\"uinput\", MODE=\"0666\" > /etc/udev/rules.d/wiimote.rules'

और फिर udev को पुनरारंभ करें:

sudo /etc/init.d/udev पुनरारंभ करें

चरण बी: cwiid

इसके बाद, आपको मेरे संशोधित cwiid पैकेज की आवश्यकता होगी। यहां यह थोड़ा बालों वाला हो जाता है क्योंकि आदर्श रूप से आपको इसे अपने रास्पबेरी पीआई पर बनाने की आवश्यकता होगी, लेकिन मुझे यह स्वीकार करना होगा कि मैंने इसे काम करने के लिए आपको कौन से पैकेज स्थापित करने की आवश्यकता है, इसका ट्रैक खो दिया है। ऐसा करने के लिए तीन विकल्प हैं।

विकल्प B1: स्वयं का निर्माण करें

सीडी ~

गिट क्लोन https://github.com/arpruss/cwiid-1 autoconf./configure make -C libcwiid sudo make -C libcwiid install make -C python sudo make -C python install

दुर्भाग्य से, एक बहुत अच्छा मौका है कि आप इसे बनाने के लिए आवश्यक सामानों का एक गुच्छा खो रहे हैं, और./configure शिकायत करेगा। आप उन सभी चीजों को देख सकते हैं जिनके बारे में यह शिकायत करता है और उन सभी पर sudo apt install चला सकते हैं।

विकल्प B2: मेरे बायनेरिज़ का उपयोग करें

सीडी ~

wget https://github.com/arpruss/cwiid-1/releases/download/0.0.1/cwiid-rpi.tar.gz tar zxvf cwiid-rpi.tar.gz सीडी cwiid sudo स्थापित करें

चरण सी: पायथन पुस्तकालय

अंत में, मेरी लाइटगन पायथन लिपि के लिए समर्थन सामग्री प्राप्त करें:

sudo pip3 uinput numpy pygame opencv-python स्थापित करें

sudo apt-libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get install libqtgui4 sudo apt-get install python3-pyqt5 प्राप्त करें

चरण डी: lightgun.py

अंत में, मेरी लाइटगन पायथन लिपि प्राप्त करें:

सीडी ~

गिट क्लोन

यदि सब ठीक हो गया है, तो अब आपके पास ~/lightgun.py है जिसका उपयोग आप लाइटगन को कैलिब्रेट करने के लिए कर सकते हैं।

चरण 4: अंशांकन भाग I: कैमरे को केंद्रित करना

अंशांकन भाग I: कैमरे को केंद्रित करना
अंशांकन भाग I: कैमरे को केंद्रित करना
अंशांकन भाग I: कैमरे को केंद्रित करना
अंशांकन भाग I: कैमरे को केंद्रित करना
अंशांकन भाग I: कैमरे को केंद्रित करना
अंशांकन भाग I: कैमरे को केंद्रित करना

अंशांकन के दो पहलू हैं। पहला प्रत्येक Wiimote पर कैमरे के केंद्र को कैलिब्रेट करना है। इसके लिए आपकी टीवी स्क्रीन के चारों ओर एलईडी की दो छवियां लेने के लिए कैमरे का उपयोग करने की आवश्यकता होती है, एक रिमोट राइट-साइड अप के साथ और दूसरा इसके साथ उल्टा।

जब आप Wii रिमोट को उसके सामने रखते हैं तो बटन दबाने से बचने के लिए, और Wii रिमोट को लगातार ऊंचाई देने के लिए, आप मेरे द्वारा शामिल किए गए अंशांकन टूल को 3D प्रिंट कर सकते हैं। आपको मूल रूप से उन चीजों की आवश्यकता होती है जो 10.5 मिमी मोटी होती हैं जिन्हें आप Wii रिमोट के नीचे रख सकते हैं जब यह इसके सामने होता है। मैंने वास्तव में प्लास्टिक को बचाने के लिए कुछ स्क्रैप प्लाईवुड का इस्तेमाल किया।

अपने एलईडी चालू करें और सुनिश्चित करें कि आपका रास्पबेरी पीआई या अन्य कंप्यूटर टीवी पर प्रदर्शित हो रहा है। कीबोर्ड कनेक्ट करें (यह ssh पर काम नहीं करेगा) या VNC का उपयोग करें। फिर भागो:

python3 ~/lightgun/lightgun.py -M

यदि सब कुछ ठीक रहा, तो आपको एक पूर्ण-स्क्रीन डिस्प्ले मिलेगा जो आपको Wii रिमोट पर 1+2 दबाने के लिए कहेगा। वो करें। Wii रिमोट पर रोशनी चमकेगी, और फिर रोशनी 1 और 4 चालू रहेंगी। आपको स्क्रीन के शीर्ष पर थोड़ा हरा आयत भी दिखाई देगा, जिसमें Wii रिमोट कैमरा से दृश्य दिखाई देगा। एल ई डी पर वाईआई रिमोट को इंगित करें और यदि सब ठीक हो जाता है, तो आप चार एल ई डी देखेंगे, जिनकी संख्या 1 से 4 तक होगी।

अब आपको एक कॉफी टेबल की तरह एक तेज धार के साथ एक ठोस सतह खोजने की जरूरत है, जिसे आप टीवी स्क्रीन पर इंगित कर सकते हैं और यह Wii रिमोट को किनारे के खिलाफ संरेखित Wii रिमोट के साथ सभी एल ई डी देखने की अनुमति दे सकता है। Wii रिमोट को दाईं ओर ऊपर की ओर संरेखित करके शुरू करें, रिमोट के किनारे को सतह के किनारे के साथ संरेखित करें, यह सुनिश्चित करें कि सभी चार एलईडी दिखाई दे रहे हैं। फिर अपने कीबोर्ड पर SPACE दबाएं (या Nunchuck संलग्न करें और यदि यह अधिक सुविधाजनक हो तो C दबाएं)। फिर आपको Wii रिमोट को घुमाने के लिए कहा जाएगा। अब, सुनिश्चित करें कि यह आपकी सतह से 10.5 मिमी ऊपर, कैलिब्रेशन टूल या किसी अन्य चीज़ का उपयोग करके, और पहले के समान स्थान के करीब (जैसे, आपकी सतह के समान किनारे के विरुद्ध संरेखित) है। फिर से स्पेस दबाएं।

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

नोट: अगर मेरी तरह आपके पास टीवी के नीचे एक Wii है, तो Wii को दो कारणों से बंद करने की आवश्यकता है: पहला, यदि Wii चालू है, तो यह Wiimote से कनेक्ट हो जाएगा और दूसरा, सेंसर बार के इन्फ्रारेड LED हस्तक्षेप करेंगे यह परियोजना। इसी तरह के कारणों से, जब आप Wii का उपयोग करते हैं तो टीवी के चारों ओर एलईडी को अनप्लग करना एक अच्छा विचार है।

चरण 5: अंशांकन चरण II: एल ई डी

अंशांकन चरण II: एल ई डी
अंशांकन चरण II: एल ई डी
अंशांकन चरण II: एल ई डी
अंशांकन चरण II: एल ई डी

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

किनारे के चारों ओर चार तीरों में से प्रत्येक के लिए, यह करें:

  1. तीरों को तब तक घुमाने के लिए Wiimote पर बाएँ/दाएँ दबाएँ जब तक कि वे ठीक उसी तरह इंगित न करें जैसे आप संबंधित LED की ओर कर सकते हैं;
  2. तीर की लंबाई बदलने के लिए वाईमोट पर ऊपर/नीचे दबाएं जब तक कि तीर की लंबाई एलईडी और टीवी डिस्प्ले के किनारे के बीच की दूरी से मेल नहीं खाती; दूसरे शब्दों में, तीर की लंबाई तीर की नोक से एलईडी तक की दूरी के बराबर होनी चाहिए।

एक बार जब आपके चार तीर सही हो जाते हैं (और शायद पहले भी) तो जब आप स्क्रीन पर Wiimote को इंगित करते हैं तो आपको एक लाल क्रॉसहेयर दिखाई देगा। आप जाँच सकते हैं कि यह वह जगह है जहाँ यह होना चाहिए। (याद रखें कि आपको इतनी दूर रहने की आवश्यकता है कि वाईमोट सभी एल ई डी देख सके। यह भी महत्वपूर्ण है कि देखने के क्षेत्र में इन्फ्रारेड का कोई अन्य स्रोत न हो। मुझे एक बार सूर्य के प्रकाश के कारण एक स्क्रू हेड को प्रतिबिंबित करने में परेशानी हुई थी। दूरदर्शन तिपाई।)

अंत में, एक पाँचवाँ तीर है, जो केवल तब दिखाई देता है जब आप चौथे एलईडी तीर से + दबाते हैं या - पहले से (और डिफ़ॉल्ट रूप से इसकी लंबाई शून्य होती है, इसलिए यह सिर्फ एक पिक्सेल है)। यह तीर समायोजित करता है कि Wii रिमोट के कैमरे से कितनी दूर शॉट को पंजीकृत किया जाएगा। मुद्दा यह है: आप Wii रिमोट की ऊपरी सतह के साथ देख रहे होंगे। लेकिन कैमरा वास्तव में उस सतह से कुछ दूरी नीचे, Wii रिमोट के सामने काले आयत के बीच में स्थित होता है। यदि हम उन शॉट्स को पंजीकृत करते हैं जहां कैमरा इंगित कर रहा है, तो वे Wii रिमोट की ऊपरी सतह से लगभग 8 मिमी नीचे पंजीकृत होंगे। आप इसकी जांच यह नोट करके कर सकते हैं कि जैसा कि आप शीर्ष सतह पर देखते हैं, क्रॉस-हेयर का केंद्र कैमरे द्वारा छिपा हुआ है।

आप इसके साथ रह सकते हैं, या आप Wii रिमोट के शीर्ष के साथ शॉट्स को संरेखित करने के लिए इस पांचवें तीर को विकसित कर सकते हैं, या आप इसकी भरपाई के लिए लोहे की जगहों के लिए 3D प्रिंट करने योग्य फ़ाइलों को समायोजित कर सकते हैं (लेकिन मुआवजा केवल इसके लिए काम करेगा टीवी से एक विशेष दूरी)। मैं खुद सॉफ्टवेयर संरेखण के लिए गया था।

अंशांकन से बाहर निकलने के लिए Wii रिमोट पर होम दबाएं और ~/.wiilightgun निर्देशिका में सभी डेटा सहेजें।

चरण 6: परीक्षण और उपयोग

परीक्षण और उपयोग
परीक्षण और उपयोग
परीक्षण और उपयोग
परीक्षण और उपयोग
परीक्षण और उपयोग
परीक्षण और उपयोग

आप शायद अब अपनी लाइट गन आज़माना चाहते हैं। बस टर्मिनल एमुलेटर (या एक स्क्रिप्ट) में चलाएं:

python3 ~/lightgun/lightgun.py -t

आपको एक ही समय में 1+2 बटन दबाने की आवश्यकता होगी, और उसके बाद यदि सब ठीक हो जाता है, जब तक कि lightgun.py चल रहा है, लाइटगन दो-बटन वाले पूर्ण माउस का अनुकरण करेगा। ट्रिगर बटन माउस बटन 1 है, और A बटन माउस बटन 2 है। बाहर निकलने के लिए ctrl-c दबाएं।

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

एक मज़ेदार चीज़ जो आप आज़मा सकते हैं, वह है इमिनुरनामेज़ के डक-डक-शूट का मेरा तरीका:

सीडी ~

गिट क्लोन https://github.com/arpruss/duck-duck-shoot सीडी डक-डक-शूट अजगर play_game.py

एनईएस खेलों के लिए, मैं रेट्रोआर्क में लिब्रेट्रो fceumm कोर का उपयोग करता हूं। विकल्प मेनू पर जाएं, और जैपर को टचस्क्रीन के रूप में कॉन्फ़िगर करें। (इसे माउस के रूप में कॉन्फ़िगर करना वास्तव में काम नहीं करता है, क्योंकि fceumm पूर्ण-स्थिति वाले माउस के बजाय एक सापेक्ष-आंदोलन की अपेक्षा करता है।)

यदि आप अपने गेम को स्क्रिप्ट के साथ शुरू करते हैं, तो आप उस भाग को संपादित कर सकते हैं जो गेम या एमुलेटर को यह कहने के लिए शुरू करता है:

python3 ~/lightgun/lightgun.py -t -B 30 "खेल शुरू करने की आज्ञा"

फिर खेल के निष्पादन के पहले ३० सेकंड के दौरान (इसलिए -बी ३० विकल्प), आप १+२ दबाकर अपने लाइटगन को कनेक्ट कर सकते हैं।

वैसे, lightgun.py स्क्रिप्ट का उपयोग रेट्रोआर्क के साथ सामान्य Wii रिमोट गेमिंग के लिए भी किया जा सकता है। बस -o विकल्प जोड़ें और लाइटगन फ़ंक्शन बंद हो जाएंगे, और इसके बजाय Wii रिमोट क्षैतिज रूप से काम करेगा, जिसमें तीन बटन क्रमशः 1, 2 और B होंगे। lightgun.py की मैपिंग में अन्य रेट्रोआर्क-संबंधित कार्य हैं जिन्हें आप कोड को पढ़कर खोज लेंगे। उदाहरण के लिए, माइनस कुंजी एक शिफ्ट के रूप में कार्य करती है, और साथ में dpad नियंत्रण बचत और लोडिंग (अप/डाउन = चेंज सेव नंबर; लेफ्ट = रिस्टोर; राइट = सेव) को नियंत्रित करता है।

चरण 7: गन हैंडल और लक्ष्य

गन हैंडल और निशाना
गन हैंडल और निशाना
गन हैंडल और निशाना
गन हैंडल और निशाना
गन हैंडल और निशाना
गन हैंडल और निशाना

आप Wii रिमोट का उपयोग बंदूक के रूप में कर सकते हैं, ऊपर से देख सकते हैं। आप इसके लिए कमर्शियल गन केसिंग में से एक भी खरीद सकते हैं। लेकिन चूंकि मूल Wii रिमोट एक दर्शनीय बंदूक के रूप में उपयोग करने में सक्षम नहीं था, इसलिए केसिंग लोहे की जगहों के साथ नहीं आते हैं, और लोहे की जगहें सटीकता में काफी सुधार करती हैं।

मैंने एक साधारण तीन-भाग 3डी-प्रिंट करने योग्य प्रणाली तैयार की: एक स्लाइड-ऑन हैंडल जो ट्रिगर के ठीक पीछे बैठता है (इसलिए यह स्टार ट्रेक मूल श्रृंखला फेजर जैसा दिखता है), और स्लाइड-ऑन जगहें। प्रिंट करने योग्य फ़ाइलें यहाँ हैं। यदि आप स्क्रैप लकड़ी की कीमत पर प्लास्टिक पर बचत करना चाहते हैं, तो आप वह भी कर सकते हैं जो मैंने किया था और पूरे हैंडल को प्रिंट करने के बजाय, केवल उस हिस्से को प्रिंट करें जो वाईमोट रखता है, और लकड़ी के टुकड़े को काटकर उस पर स्क्रू करें।

देखने के लिए, अपनी आंखों को स्थलों पर केंद्रित करें। पीछे की दृष्टि के धक्कों के बीच सामने की दृष्टि की टक्कर को संरेखित करें ताकि दोनों में से हवा का स्थान समान हो और तीनों धक्कों को समान रूप से ऊंचा किया जाए। फिर लक्ष्य के मध्य को धक्कों के शीर्ष के साथ संरेखित करें।

ध्यान दें: धक्कों की ऊंचाई थोड़ी असमान होती है, सामने की दृष्टि की टक्कर थोड़ी कम होती है, ताकि दृष्टि की ऊंचाई की भरपाई करने के लिए जब आप उनके साथ 2.5 मीटर (टीवी से मेरी दूरी) की दूरी पर देखते हैं तो खुद को टक्कर मारते हैं। यदि आपके पास टीवी से काफी भिन्न दूरी है, तो आप उसे OpenSCAD फ़ाइलों में डाल सकते हैं। हालांकि, यह समायोजन प्रिंटर की सहनशीलता से कम हो सकता है। इसके अलावा, यदि आपने सॉफ़्टवेयर में वर्टिकल एडजस्टमेंट नहीं किया है, तो आप -8 (मिलीमीटर में) के आसपास कुछ अतिरिक्त साइट एडजस्ट करके सॉफ़्टवेयर में दर्शनीय स्थलों में कुछ और समायोजन जोड़ सकते हैं।

चरण 8: अंशांकन III (वैकल्पिक): ठीक समायोजन

यदि आप और भी अधिक सटीकता चाहते हैं, तो आप चला सकते हैं:

python3 ~/lightgun/lightgun.py -d

(डेमो के लिए) और ध्यान से देखें कि क्या जगहें क्रॉस-हेयर के साथ संरेखित होती हैं। यदि वे नहीं करते हैं, तो बाहर निकलें और मैन्युअल रूप से ~/.wiilightgun/wiimotecalibration संपादित करें, और दृष्टि को समायोजित करने के लिए कैमरा केंद्र के x और y निर्देशांक को थोड़ा मोड़ें। उदाहरण के लिए, मेरी बंदूक थोड़ी दाईं ओर गोली मार रही थी, इसलिए मैंने x निर्देशांक को 529 से बदलकर 525 कर दिया। सभी की संख्या शायद अलग होगी।

चरण 9: परिशिष्ट: एल्गोरिथम

परिशिष्ट: एल्गोरिथम
परिशिष्ट: एल्गोरिथम

माउस इम्यूलेशन कोड मोटे तौर पर निम्नानुसार काम करता है।

  • प्रक्रिया बटन दबाता है।
  • कैमरे से डेटा प्राप्त करें और कैमरा केंद्रित अंशांकन के लिए समायोजित करें।
  • अगर कैमरे में तीन से कम LED दिखाई दे रही हैं:

    अंतिम माउस स्थिति रखें।

  • यदि तीन या चार एल ई डी दिखाई दे रहे हैं:

    • Wiimote उन्मुखीकरण प्राप्त करने के लिए Wiimote एक्सेलेरोमीटर डेटा का उपयोग करें और पहचानें कि कौन सी एलईडी कैमरा छवि किस भौतिक एलईडी से मेल खाती है।
    • यदि चार एल ई डी दिखाई दे रहे हैं:

      • एलईडी कैमरा छवियों और एलईडी स्थानों (स्क्रीन निर्देशांक में) के बीच समरूपता की गणना करें।
      • यह गणना करने के लिए होमोग्राफी का उपयोग करें कि कौन सा स्क्रीन स्थान कैमरे के देखने के क्षेत्र के केंद्र से मेल खाता है।
      • दृष्टि-रेखा के नीचे आभासी बंदूक बैरल के केंद्र के लिए समायोजित करने के लिए वाई-समायोजन करें। यह कुछ हद तक क्लूडी एल्गोरिदम है लेकिन यह काम करता है।
      • माउस की स्थिति को समायोजित स्क्रीन स्थान पर सेट करें।
    • यदि तीन एल ई डी दिखाई दे रहे हैं:

      • एलईडी कैमरा छवियों और भौतिक एलईडी स्थानों के बीच P3P समस्या को हल करने के लिए OpenCV का उपयोग करें। यह चार समाधान तक उत्पन्न करता है।
      • यदि सफल हो:

        • यदि हमारे पास पिछली सफल स्थान गणना है, तो उस समाधान का चयन करें जो लापता एलईडी को उस एलईडी की अंतिम देखी गई या गणना की गई स्थिति के सबसे करीब बनाता है।
        • यदि हमारे पास पिछली सफल स्थान गणना नहीं है, तो वह समाधान चुनें जो एक्सेलेरोमीटर शीर्षक की सबसे अच्छी भविष्यवाणी करता है।
        • चौथी एलईडी को कहां जाना चाहिए, इसकी गणना करने के लिए सर्वोत्तम समाधान का उपयोग करें।
        • बाकी चार एलईडी केस की तरह करें।
      • सफल नहीं होने पर:

        अंतिम माउस स्थिति रखें।

सिफारिश की: