Բովանդակություն:
- Պարագաներ
- Քայլ 1: Ինֆրակարմիր LED շղթա
- Քայլ 2: Կցեք հեռուստացույցին
- Քայլ 3: Տեղադրեք ծրագրակազմ
- Քայլ 4. Կալիբրացում Մաս I. Տեսախցիկի կենտրոնացում
- Քայլ 5. Կալիբրացում Քայլ II. LED- ներ
- Քայլ 6: Փորձարկեք և օգտագործեք
- Քայլ 7: ատրճանակի բռնակ և նպատակ
- Քայլ 8. Կալիբրացում III (ըստ ցանկության). Նուրբ ճշգրտում
- Քայլ 9. Հավելված. Ալգորիթմ
Video: Wiշգրիտ Wiimote Light Gun for Raspberry PI: 9 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:46
Սովորաբար, որպես թեթև ատրճանակ օգտագործվող Wii Remote- ը բավական ճշգրիտ չէ NES Duck Hunt- ի նման ռետրո խաղերի համար, քանի որ Wii Remote- ն իրականում չի ընտրում այն հեռուստացույցի այն կետը, որի վրա այն ուղղված է: Չի կարող! Wii Remote- ն ունի իր առջևի ինֆրակարմիր տեսախցիկ, որը տեսնում է ինֆրակարմիր LED- ների շարանը սենսորների սանդղակում, բայց չի կարող իմանալ, թե որքան հեռու է հեռուստացույցը (կամ որ ուղղությամբ) կամ որքան մեծ է հեռուստացույցը: Էմուլյատորներն ու խաղերն աշխատում են դրա շուրջ ՝ ցույց տալով խաչաձև կամ թիրախավորման այլ ցուցիչ, սակայն դա թիրախի կրակելու ճշգրիտ փորձ չէ:
Որպեսզի Wii Remote- ը աշխատի որպես ճշգրիտ թեթև ատրճանակ, որը կարող եք դիտել հեռուստացույցով թիրախ ընտրելու համար, պահանջվում է չորս ինֆրակարմիր LED լուսադիոդներ, որոնք դասավորված են հայտնի քառանկյուն ձևով (ոչ ուղիղ գիծ) նույն հարթության վրա, ինչ հեռուստացույցը: Wii Remote- ն այնուհետև տեսնում է չորս LED- ները, և տեսախցիկի պատկերը կարող է օգտագործվել homograph- ի հաշվարկման համար, որը թույլ է տալիս մեզ պարզել, թե ուր է ցույց տալիս տեսախցիկը:
Այս նախագծի սարքավորումները պարզ են: Գոյություն ունեն չորս ինֆրակարմիր լուսադիոդային լուսադիոդներ ՝ 3D տպված պարզ պատյաններում, որոնք կարելի է սոսնձել հեռուստացույցի պատյանի վերևից և ներքևից և միացնել USB լիցքավորիչին: Բացի այդ, եթե դուք չունեք Wii ատրճանակի պատյան, ես ունեմ պարզ տպված 3D բռնակ և տեսարժան վայրեր, որոնք կարող եք ամրացնել Wii Remote- ին (չնայած պլաստիկը խնայելու համար ես իմը հիբրիդ եմ դարձրել փայտի և 3D տպված պլաստիկի միջև):
Պիթոնի վրա հիմնված ծրագրակազմը ավելի դժվար էր սարքավորումների համեմատ պատրաստվել և ներկայումս միայն Linux- ի համար է: Այն չափաբերում է LED- ները և Wii Remote- ը, այնուհետև օգտագործում է հոմոգրաֆիայի հաշվարկներ ՝ ընդօրինակելու բացարձակ մկնիկը, որը բավականին լավ է աշխատում Retroarch- ի fceumm NES emulator- ում (և, հավանաբար, որոշ այլ էմուլյատորների դեպքում) իմ Raspberry PI 3B+ - ում:
Պարագաներ
- Wii հեռակառավարիչ
- Չորս 940 նմ 5 մմ ինֆրակարմիր LED
- Հին USB մալուխ `աշխատանքային տիպի A խրոցակով
- Raspberry PI 3 կամ այլ Linux համակարգիչ ՝ Bluetooth աջակցությամբ
- 3D տպիչ և թել (ըստ ցանկության)
Քայլ 1: Ինֆրակարմիր LED շղթա
Ստացեք հին USB մալուխ ՝ աշխատանքային տիպի արական վարդակով (սովորաբար իմ հեռախոսի լիցքավորման մալուխները խափանում են միկրո USB ծայրը, այնպես որ ես մնացել եմ աշխատանքային տիպի արական վարդակով մալուխներ): Իրականում, նույնիսկ նորմալ է, եթե տվյալների մալուխները կոտրված, քանի դեռ էլեկտրահաղորդման գծերը աշխատում են: Կտրեք մյուս ծայրը: Տեսականորեն կարմիր մալուխը պետք է լինի +5V, իսկ սևը ՝ հիմնավորված, բայց ստուգեք այն մուլտիմետրով (միացրեք այն լիցքավորիչին, այնուհետև ստուգեք լարումը կարմիր և սև լարերի միջև):
Քանի որ ինֆրակարմիր LED- ները ունեն 1,2-1,3 Վ լարման անկում, ես դրանցից 4-ը սերիալային հանգույցով միացրեցի USB մալուխին: Համոզվեք, որ լարերը, որոնք դուք կպցրել եք, բավական երկար են, որպեսզի կարողանաք LED- ները տեղադրել հեռուստացույցի ներքևում, իսկ երկուսը ՝ վերևում, լուսադիոդների միջև հորիզոնական տարածությամբ (մոտ 10 դյույմ կամ ավելի):
Ավելի ճշգրիտ ՝ LED հանգույց պատրաստելու համար.
- ամրացրեք առաջին LED- ի մինուս կողմը (կաթոդ, կարճ ոտք, հարթ եզրով) +5V USB լարին
- միացրեք առաջին LED- ի դրական կողմը (անոդ, ավելի երկար ոտք, կլոր եզրով) երկրորդ LED- ի մինուս կողմին
- կրկնել `երկրորդ LED- ին միացնել երրորդին և երրորդին` չորրորդին
- ապա միացրեք չորրորդ LED- ի գումարած կողմը մետաղալարով գետնին USB լարին:
Իրերն ավելի կոկիկ դարձնելու համար միացումներն անելիս կարող եք օգտագործել ջերմության նվազեցման խողովակներ: Հակառակ դեպքում շորտերից խուսափելու համար օգտագործեք էլեկտրական ժապավեն:
Համոզվեք, որ կարճ միացում չունեք: Այնուհետև միացրեք այն USB լիցքավորիչին և ստուգեք, որ այն ինֆրակարմիր լույս է արձակում ՝ հեռախոսի տեսախցիկով դիտելով LED- ները: (Շատ հեռախոսի տեսախցիկները ինֆրակարմիր զգայուն են):
Քայլ 2: Կցեք հեռուստացույցին
Այժմ, LED- ներից երկուսը կցեք հեռուստացույցի ներքևի մասում, իսկ երկուսը `վերին: Հորիզոնական տարածությունը պետք է լինի մոտ տասը մատնաչափ: Եթե դա չափազանց շատ է, կարող եք խնդիրներ ունենալ Wii Remote տեսախցիկի տեսադաշտի հետ ՝ դրանք բոլորը գրավելու համար: Բայց եթե դրանք չափազանց մոտ են, ապա իմ երկրաչափական ինտուիցիան ասում է, որ դուք կունենաք ավելի ցածր ճշգրտություն:
Փորձարկման համար ես LED- ները կպցրի էլեկտրական ժապավենով, այնուհետև մշտական միացման համար ես նախագծեցի և տպեցի չորս կոկիկ փոքրիկ LED տեսահոլովակներ (ֆայլերն այստեղ են), որոնք ես տաք սոսնձեցի հեռուստացույցին: Դուք պետք է այնպես անեք, որ LED- ները հնարավորինս մոտ լինեն հեռուստացույցի հարթությանը, առանց այն եզրագծի, որը դրանք թաքցնում է այն վայրից, որտեղ նկարահանվելու եք:
Քայլ 3: Տեղադրեք ծրագրակազմ
Ներկայումս ծրագրակազմը միայն Linux- ի համար է: Հետևյալ կարգավորումը նախատեսված է Raspberry PI 3 -ի համար Raspbian Stretch- ով: Linux- ի այլ համակարգեր կպահանջեն որոշակի փոփոխություններ: Նախկին մոդելներում ձեզ հարկավոր է Bluetooth դոնգ, և այն պետք է գործարկվի նաև հրամանի տողից.
sudo get-apt տեղադրել bluetooth
Քայլ Ա. Udev
Հաջորդը, ստեղծեք ֆայլ /etc/udev/rules.d/wiimote.rules- ում, որը պարունակում է մեկ տող.
KERNEL == "uinput", MODE = "0666"
Դուք կարող եք դա անել, օրինակ ՝ տեքստային խմբագրիչով կամ հրամանի տողում մուտքագրելով հետևյալը.
sudo sh -c 'echo KERNEL == / "uinput \", MODE = / "0666 \"> /etc/udev/rules.d/wiimote.rules'
Եվ ապա վերագործարկեք udev:
sudo /etc/init.d/udev վերագործարկեք
Քայլ B: cwiid
Հաջորդը, ձեզ հարկավոր կլինի իմ փոփոխված cwiid փաթեթը: Այստեղ այն մի փոքր մազոտ է դառնում, քանի որ իդեալականորեն անհրաժեշտ է այն կառուցել ձեր Raspberry PI- ի վրա, բայց ես պետք է խոստովանեմ, որ ես կորցրել եմ հետքերը, թե ինչ փաթեթներ են պետք տեղադրել, որպեսզի այն աշխատի: Դա անելու երեք տարբերակ կա:
Տարբերակ B1. Կառուցեք ինքներդ
cd
git clone https://github.com/arpruss/cwiid-1 autoconf./configure make -C libcwiid sudo make -C libcwiid install make -C python sudo make -C python install
Unfortunatelyավոք, բավականին լավ հնարավորություն կա, որ դուք բաց եք թողնում մի շարք իրեր, որոնք անհրաժեշտ են դրա կառուցման համար, և./configure- ը կբողոքի: Դուք կարող եք նայել այն ամենին, ինչից բողոքում է, և բոլորի վրա գործարկել sudo apt install:
Տարբերակ B2. Օգտագործեք իմ երկուական ֆայլերը
cd
wget https://github.com/arpruss/cwiid-1/releases/download/0.0.1/cwiid-rpi.tar.gz tar zxvf cwiid-rpi.tar.gz cd cwiid sudo make install
Քայլ Գ. Պիթոնի գրադարաններ
Վերջապես, ստացեք աջակցող նյութեր իմ հրացանի պիթոնի սցենարի համար.
sudo pip3 տեղադրել uinput numpy pygame opencv-python
sudo apt-get տեղադրել libatlas-base-dev sudo apt-get տեղադրել libjasper-dev sudo apt-get տեղադրել libqtgui4 sudo apt-get տեղադրել python3-pyqt5
Քայլ D: lightgun.py
Վերջապես, ստացեք իմ հրացանի պիթոնի սցենարը.
cd
git կլոն
Եթե ամեն ինչ լավ է ընթանում, այժմ ունեք ~/lightgun.py, որը կարող եք օգտագործել թեթև հրացանը չափաբերելու համար:
Քայլ 4. Կալիբրացում Մաս I. Տեսախցիկի կենտրոնացում
Կալիբրացիայի երկու ասպեկտ կա. Առաջինը `յուրաքանչյուր Wiimote- ում տեսախցիկի կենտրոնի չափագրումն է: Սա պահանջում է տեսախցիկի միջոցով ձեր հեռուստացույցի էկրանի շուրջ LED- ների երկու պատկեր վերցնել, մեկը `հեռավոր աջ կողմը վերև, իսկ մյուսը` գլխիվայր:
Wii հեռակառավարման վահանակի առջևի մասում կոճակները սեղմելուց խուսափելու համար, և որպեսզի Wii հեռակառավարիչը ունենա հետևողական բարձրություն, կարող եք 3D տպել այն չափագրման գործիքը, որը ես ներառել եմ այստեղ: Ձեզ հիմնականում անհրաժեշտ են 10,5 մմ հաստությամբ իրեր, որոնք կարող եք տեղադրել Wii Remote- ի տակ, երբ այն գտնվում է իր առջևի մասում: Իրականում ես պլաստիկի վրա խնայելու համար օգտագործեցի մի քանի նրբատախտակ:
Միացրեք ձեր LED- ները և համոզվեք, որ ձեր Raspberry PI- ն կամ այլ համակարգիչը ցուցադրվում է հեռուստացույցով: Միացրեք ստեղնաշարը (սա ssh- ով չի աշխատի) կամ օգտագործեք VNC: Այնուհետեւ գործարկեք.
python3 ~/lightgun/lightgun.py -M
Եթե ամեն ինչ լավ ընթանա, դուք կստանաք ամբողջական էկրանով ցուցադրում ՝ խնդրելով Wii Remote- ի վրա սեղմել 1+2: Արա դա: Wii հեռակառավարման վահանակի լույսերը կթափվեն, այնուհետև 1 և 4 լույսերը կմնան միացված: Էկրանի վերևում կտեսնեք նաև մի փոքրիկ կանաչ ուղղանկյուն ՝ Wii Remote տեսախցիկից տեսարանով: Ուղղեք Wii հեռակառավարիչը LED- ների վրա և եթե ամեն ինչ կարգին լինի, կտեսնեք չորս LED- ները ՝ համարակալված 1 -ից 4 -ը:
Այժմ դուք պետք է գտնեք սուր եզր ունեցող ամուր մակերես, ինչպես սուրճի սեղանը, որը կարող եք մատնանշել հեռուստացույցի էկրանին և որը թույլ կտա Wii Remote- ին տեսնել բոլոր LED- ները ՝ Wii Remote- ով եզրին հավասարեցված: Սկսեք ՝ Wii Remote- ի աջ կողմը հավասարեցնելով, հեռակառավարման կողմը հավասարեցնելով մակերևույթի եզրին ՝ համոզվելով, որ բոլոր չորս LED- ները երևում են: Այնուհետև սեղմեք SPACE ձեր ստեղնաշարի վրա (կամ կցեք Nunchuck և սեղմեք C, եթե դա ավելի հարմար է): Այնուհետև ձեզ կառաջարկվի պտտել Wii Remote- ը: Այժմ, համոզվեք, որ այն ձեր մակերևույթից բարձր է 10.5 մմ բարձրության վրա ՝ օգտագործելով չափաբերման գործիքը կամ այլ բան, և նույն տեղում, ինչպես նախկինում (օրինակ ՝ հավասարեցված ձեր մակերեսի նույն եզրին): Կրկին սեղմեք SPACE:
Եթե ամեն ինչ կարգին լինի, ապա այժմ կանցնեք LED- ի ստուգաչափման փուլին: Այո, սա բարդ է: Բայց դուք կունենաք շատ ճշգրիտ հրացան: Դա պարզապես գինն է:
Նշում. Եթե ինձ պես Wii ունեք հեռուստացույցի տակ, ապա Wii- ն պետք է անջատել երկու պատճառով. Նախ, եթե Wii- ն միացված է, այն միանում է Wiimote- ին, և երկրորդ `սենսորային սանդղակի ինֆրակարմիր LED- ները կխանգարեն այս նախագիծը: Նմանատիպ պատճառներով, մինչ Wii- ն եք օգտագործում, լավ գաղափար է անջատել LED- ները հեռուստացույցի շուրջը:
Քայլ 5. Կալիբրացում Քայլ II. LED- ներ
Այժմ դուք պետք է տեղեկացնեք ծրագրակազմին, թե որտեղ են LED- ները տեղադրված հեռուստացույցի եզրին: Հեռուստատեսության եզրին կտեսնեք ստուգաչափման էկրան, որը ցույց է տալիս չորս սլաք, որոնցից մեկն ընտրված է (լուսավոր) և երեքը մոխրագույն: Դուք օգտագործում եք +/- ՝ սլաքը կարգավորելու համար փոխելու համար:
Եզրին չորս սլաքներից յուրաքանչյուրի համար արեք սա.
- սեղմեք ձախ/աջ Wiimote- ի վրա ՝ սլաքները տեղափոխելու համար, մինչև դրանք հնարավորինս ճշգրիտ չդիմեն դեպի համապատասխան LED- ը;
- սեղմել Wiimote- ի վերև/ներքև ՝ սլաքի երկարությունը փոխելու համար, մինչև սլաքի երկարությունը համապատասխանի LED- ի և հեռուստացույցի եզրագծի միջև եղած հեռավորությանը. այլ կերպ ասած, սլաքի երկարությունը պետք է հավասար լինի սլաքի ծայրից մինչև LED լուսավորությանը:
Երբ ձեր չորս սլաքները ճիշտ են (և գուցե նույնիսկ ավելի վաղ), Wiimote- ը էկրանին ցույց տալով կարմիր խաչ կտեսնեք: Կարող եք ստուգել, որ սա այն վայրն է, որտեղ պետք է լինի: (Հիշեք, որ դուք պետք է այնքան հեռու լինեք, որ Wiimote- ը կարողանա տեսնել բոլոր LED- ները: Կարևոր է նաև, որ տեսադաշտում ինֆրակարմիր այլ աղբյուրներ չլինեն: Ես մի անգամ դժվարություն ունեցա, քանի որ արևի ճառագայթը անդրադարձնում էր պտուտակով գլուխը Հեռուստացույցի տակդիր)
Վերջապես, կա հինգերորդ սլաքը, որը երևում է միայն այն դեպքում, երբ սեղմում եք + չորրորդ LED սլաքից կամ - առաջինից (և այն լռելյայն ունի զրոյական երկարություն, այնպես որ դա ընդամենը պիքսել է): Այս սլաքը կարգավորում է, թե որքան հեռու է Wii Remote- ի տեսախցիկից կադրը գրանցվելու: Հարցը հետևյալն է. Դուք կտեսնեք Wii Remote- ի վերին մակերևույթը: Բայց տեսախցիկն իրականում գտնվում է այդ մակերևույթից որոշ հեռավորության վրա ՝ Wii Remote- ի առջևի սև ուղղանկյունի մեջտեղում: Եթե մենք գրանցեինք այն կադրերը, որտեղ տեսախցիկն է ցույց տալիս, դրանք գրանցված կլինեին Wii Remote- ի վերին մակերևույթից մոտ 8 մմ ներքևում: Դուք կարող եք դա ստուգել ՝ նշելով, որ վերևի մակերեսի երկայնքով դիտելիս խաչաձև մազերի կենտրոնը թաքնված է տեսախցիկի կողմից:
Դուք կարող եք ապրել դրանով, կամ կարող եք աճեցնել այս հինգերորդ սլաքը `ծրագրերը հարթեցնելու համար նկարները Wii Remote- ի վերևի մասով, կամ կարող եք հարմարեցնել եռաչափ տպագրվող ֆայլերը երկաթե տեսարանների համար` դա փոխհատուցելու համար (բայց փոխհատուցումը կգործի միայն հեռուստացույցից մեկ հատուկ հեռավորություն): Ես ինքս գնացի ծրագրակազմի հավասարեցման:
Սեղմեք HOME- ը Wii Remote- ի վրա ՝ ստուգաչափումից դուրս գալու և բոլոր տվյալները պահելու համար ~/.wiilightgun գրացուցակում:
Քայլ 6: Փորձարկեք և օգտագործեք
Դուք հավանաբար հիմա ցանկանում եք փորձել ձեր թեթև ատրճանակը: Պարզապես գործարկեք տերմինալի էմուլատոր (կամ սցենար).
python3 ~/lightgun/lightgun.py -t
Ձեզ հարկավոր կլինի միաժամանակ սեղմել 1+2 կոճակները, և դրանից հետո, եթե ամեն ինչ կարգին լինի, քանի դեռ lightgun.py- ն աշխատում է, թեթև հրացանը կրկնօրինակելու է երկու կոճակով բացարձակ մկնիկը: Գործարկման կոճակը մկնիկի կոճակն է 1, իսկ A կոճակը `մկնիկը: 2. Դուրս գալու համար սեղմեք ctrl-c:
Այժմ ձեզ անհրաժեշտ է միայն կարգավորել ձեր էմուլյատորները և/կամ խաղերը `բացարձակ մկնիկով աշխատելու համար: Unfortunatelyավոք, դա միշտ չէ, որ այդքան հեշտ կլինի:
Մի զվարճալի բան, որը դուք կարող եք փորձել, իմ իմիննամազի բադ-բադ-կրակոցի իմ ռեժիմն է.
cd
git clone https://github.com/arpruss/duck-duck-shoot cd duck-duck-shoot python play_game.py
NES խաղերի համար ես օգտագործում եմ libretro fceumm միջուկը Retroarch- ում: Գնացեք «Ընտրանքներ» ընտրացանկ և կազմաձևեք Zapper- ը սենսորային էկրան լինելու համար: (Այն որպես մուկ կազմաձևելը իրականում չի աշխատում, քանի որ fceumm- ն ակնկալում է հարաբերական, այլ ոչ թե բացարձակ դիրքի մուկ):
Եթե ձեր խաղերը սկսում եք սցենարով, կարող եք խմբագրել խաղը սկսող հատվածը կամ էմուլյատորը ՝ ասելով.
python3 ~/lightgun/lightgun.py -t -B 30 "խաղ սկսելու հրաման"
Այնուհետև խաղի կատարման առաջին 30 վայրկյանների ընթացքում (հետևաբար ՝ -B 30 տարբերակը), կարող եք միացնել թեթև հրացանը ՝ սեղմելով 1+2:
Ի դեպ, lightgun.py սցենարը կարող է օգտագործվել նաև Retroarch- ի հետ ընդհանուր Wii Remote խաղերի համար: Պարզապես ավելացրեք -o տարբերակը, և թեթև հրացանի գործառույթները կանջատվեն, իսկ դրա փոխարեն Wii Remote- ը կաշխատի հորիզոնական ՝ երեք կոճակները համապատասխանաբար 1, 2 և B: Lightgun.py- ի քարտեզագրման մեջ կան Retroarch- ի հետ կապված այլ գործառույթներ, որոնք դուք կհայտնաբերեք ՝ կարդալով կոդը: Օրինակ ՝ մինուս ստեղնը գործում է որպես տեղաշարժ, և dpad- ի հետ միասին վերահսկում է խնայողությունն ու բեռնումը (վեր/վար = փոխել պահպանման համարը, ձախ = վերականգնել, աջը = պահել):
Քայլ 7: ատրճանակի բռնակ և նպատակ
Դուք կարող եք օգտագործել Wii Remote- ն ինքնին որպես ատրճանակ ՝ տեսնելով վերևի երկայնքով: Դրա համար կարող եք գնել նաև առևտրային զենքի պատյաններից մեկը: Բայց քանի որ բնօրինակ Wii Remote- ը ի վիճակի չէր օգտագործել որպես տեսանելի ատրճանակ, պատյանները հակված չեն երկաթե տեսարանների, իսկ երկաթե տեսարանները մեծապես բարձրացնում են ճշգրտությունը:
Ես նախագծեցի երեք մասից բաղկացած 3D տպագրման պարզ համակարգ ՝ սահող բռնակ, որը նստած է ձգանի հետևում (ուստի այն մի փոքր նման է Star Trek Original Series ֆազերի) և սահող տեսարաններ: Տպելի ֆայլերը այստեղ են: Եթե ցանկանում եք խնայել պլաստիկի վրա փայտի ջարդոնի հաշվին, կարող եք նաև անել այն, ինչ ես արել եմ, և ամբողջ բռնակը տպելու փոխարեն տպել Wiimote- ի միայն այն հատվածը, կտրել փայտե կտոր և պտուտակել այն:
Տեսողության համար ձեր աչքերը կենտրոնացրեք տեսարժան վայրերի վրա: Հավասարեցրեք առջևի տեսողության թեքությունը հետևի տեսողության ցնցումների միջև այնպես, որ երկուսից երկուսը հավասար լինեն, և երեք հարվածներն էլ հավասարապես բարձր դուրս գան: Այնուհետև թիրախի կեսը հավասարեցրեք հարվածների վերևին:
Նշում. Հարվածների բարձրությունը փոքր -ինչ անհավասար է, իսկ առջևի թեքությունը փոքր -ինչ ցածր է, որպեսզի փոխհատուցեն տեսողության հարվածների բարձրությունը, երբ տեսնում եք նրանց երկայնքով 2,5 մետր հեռավորության վրա (իմ հեռավորությունը հեռուստատեսությունից): Եթե հեռուստատեսությունից զգալիորեն տարբերվում եք, կարող եք այն տեղադրել OpenSCAD ֆայլերի մեջ: Այնուամենայնիվ, այս ճշգրտումը կարող է լինել տպիչի թույլատրելիությունից ցածր: Բացի այդ, եթե ծրագրային ապահովման մեջ չեք կատարել ուղղահայաց ճշգրտում, կարող եք ևս մի ճշգրտում ավելացնել ծրագրաշարի տեսարժան վայրերին `լրացուցիչSightAdjust- ը սահմանելով -8 (միլիմետր):
Քայլ 8. Կալիբրացում III (ըստ ցանկության). Նուրբ ճշգրտում
Եթե ցանկանում եք նույնիսկ ավելի ճշգրիտ, կարող եք գործարկել.
python3 ~/lightgun/lightgun.py -d
(ցուցադրման համար) և ուշադիր նայեք, արդյոք տեսարժան վայրերը համընկնում են խաչաձև մազերի հետ: Եթե դա այդպես չէ, դուրս եկեք և ձեռքով խմբագրեք ~/.wiilightgun/wiimotecalibration և փոքր -ինչ շտկեք տեսախցիկի կենտրոնի x և y կոորդինատները `տեսողությունը դիտելու համար: Օրինակ, իմ հրացանը փոքր -ինչ աջ էր կրակում, ուստի ես փոխեցի x կոորդինատը 529 -ից 525 -ի: Ամեն մեկի թվերը, հավանաբար, տարբեր կլինեն:
Քայլ 9. Հավելված. Ալգորիթմ
Մկնիկի նմանակման կոդն աշխատում է մոտավորապես հետևյալ կերպ.
- Գործընթաց կոճակների սեղմումներ:
- Ստացեք տվյալներ տեսախցիկից և հարմարեցրեք տեսախցիկի կենտրոնացման տրամաչափման համար:
-
Եթե տեսախցիկում երևում է երեքից պակաս LED:
Պահպանեք մկնիկի վերջին դիրքը:
-
Եթե տեսանելի են երեք կամ չորս լուսադիոդային լուսադիոդներ.
- Օգտագործեք Wiimote արագացուցիչի տվյալները `Wiimote- ի կողմնորոշումը ստանալու համար և որոշեք, թե որ LED տեսախցիկի պատկերն է համապատասխանում որ ֆիզիկական LED- ին:
-
Եթե չորս LED- եր տեսանելի են.
- Հաշվիր հոմոգրաֆիա LED ֆոտոխցիկի պատկերների և LED վայրերի միջև (էկրանի կոորդինատներով):
- Օգտագործեք հոմոգրաֆիա `հաշվարկելու, թե որ էկրանի տեղն է համապատասխանում տեսախցիկի տեսադաշտի կենտրոնին:
- Կատարեք Y- ճշգրտում `տեսողության գծից ներքև գտնվող վիրտուալ ատրճանակի տակառի կենտրոնը կարգավորելու համար: Սա ինչ -որ չափով kludgy ալգորիթմ է, բայց այն աշխատում է:
- Մկնիկի դիրքը կարգավորեք էկրանի ճշգրտված վայրին:
-
Եթե տեսանելի է երեք LED
- Օգտագործեք OpenCV ՝ LED ֆոտոխցիկի պատկերների և ֆիզիկական LED տեղադրությունների միջև P3P խնդիրը լուծելու համար: Սա առաջացնում է մինչև չորս լուծում:
-
Հաջողության դեպքում.
- Եթե մենք ունենք նախորդ հաջող տեղադրության հաշվարկ, ընտրեք այն լուծումը, որը ստիպում է բացակայող LED- ն ամենամոտ լինել այդ LED- ի վերջին դիտված կամ հաշվարկված դիրքին:
- Եթե մենք չունենք նախկին հաջող տեղադրության հաշվարկ, ընտրեք այն լուծումը, որը լավագույնս կանխատեսում է արագացուցիչի վերնագիրը:
- Օգտագործեք լավագույն լուծումը `հաշվարկելու, թե ուր պետք է գնա չորրորդ LED- ը:
- Մնացեք մնացածը, ինչպես չորս LED պատյանում:
-
Եթե հաջողակ չէ.
Պահպանեք մկնիկի վերջին դիրքը:
Խորհուրդ ենք տալիս:
Ray Gun ձայնային էֆեկտներով V2: 17 քայլ (նկարներով)
Ray Gun ձայնային էֆեկտներով V2. Վերջերս աղբի խանութում հանդիպեցի մի հին վարժանքի, և այն ակնթարթին, երբ տեսա, հասկացավ, որ պետք է դրանից ճառագայթային ատրճանակ պատրաստել: Ես հիմա մի քանի ատրճանակ եմ պատրաստել, և դրանք միշտ սկսում են ոգեշնչված գտնված առարկայից: Դուք կարող եք ծանոթանալ իմ մյուս շինություններին
Ray Gun լազերային ձայնային էֆեկտներով. 19 քայլ (նկարներով)
Ray Gun ՝ լազերային ձայնային էֆեկտներով. Ես իսկապես սիրում եմ նախագծեր կառուցել հին մասերից, որոնք ես մաքրեցի: Սա 2 -րդ ճառագայթով ատրճանակի կառուցումն է, որը ես փաստաթղթավորել էի (սա իմ առաջինն է): Rayառագայթային ատրճանակների հետ մեկտեղ ես կառուցել եմ junkbots - (ստուգեք դրանք այստեղ) և մի շարք այլ նախագծեր
Microbit Gun Light Sound Thing Խաղալիք ՝ 5 քայլ
Microbit Gun Light Sound Thing Խաղալիք. Սա պարզապես մի պարզ խաղալիք է, որը պատրաստված է իմ բաղադրիչներն ու նյութը օգտագործելու և ինչ -որ բան պատրաստելու քորոցիս մեջ քերծելու համար: Լինելով խաղալիք ՝ ես նրան չէի դարձրել իրատեսական տեսք, այլ այն, որ ունեի ընդհանուր
WiiMote Candy Light !: 4 քայլ
WiiMote Candy Light. (1 $ dolorama- ում) ընդհանուր 15 $ (5 $ կրկին
Առաստաղի վրա տեղադրված Wiimote գրատախտակ. 7 քայլ (նկարներով)
Առաստաղի վրա տեղադրված Wiimote գրատախտակ. Այս հրահանգը ձեզ կտա քայլ առ քայլ հրահանգներ wiimote- ի համար շատ էժան առաստաղ պատրաստելու համար `առաստաղով տեղադրված պրոյեկտորով օգտագործելու համար: Սա հիանալի է աշխատում դասասենյակներում կամ սեղանի սենյակներում, որտեղ պրոյեկտորը մշտապես տեղադրված է ք