Агуулгын хүснэгт:

Raspberry PI -д зориулсан Wiimote гэрлийн буу: 9 алхам (зурагтай)
Raspberry PI -д зориулсан Wiimote гэрлийн буу: 9 алхам (зурагтай)

Видео: Raspberry PI -д зориулсан Wiimote гэрлийн буу: 9 алхам (зурагтай)

Видео: Raspberry PI -д зориулсан Wiimote гэрлийн буу: 9 алхам (зурагтай)
Видео: SMART GLOVE (Хэл ярианы бэрхшээлтэй иргэдэд зориулсан ухаалаг бээлийн) 2024, Долдугаар сарын
Anonim
Raspberry PI -ийн нарийвчлалтай Wiimote гэрлийн буу
Raspberry PI -ийн нарийвчлалтай Wiimote гэрлийн буу
Raspberry PI -ийн нарийвчлалтай Wiimote гэрлийн буу
Raspberry PI -ийн нарийвчлалтай Wiimote гэрлийн буу

Ихэвчлэн хөнгөн буу болгон ашигладаг Wii Remote нь NES Duck Hunt гэх мэт чимэг тоглоомуудад хангалттай нарийвчлалтай байдаггүй, учир нь Wii Remote нь зааж өгсөн зурагтаа цэгийг сонгодоггүй. Энэ чадахгүй! Wii Remote нь урд талд нь хэт ягаан туяаны камертай бөгөөд мэдрэгч самбар дахь хэт улаан туяаны LED шугамыг хардаг боловч ТВ нь баарнаас хэр хол (эсвэл ямар чиглэлд), ТВ хэр том болохыг мэдэхгүй. Эмуляторууд болон тоглоомууд нь хөндлөн үс эсвэл бусад зорилтот үзүүлэлтийг харуулах замаар үүнийг шийддэг боловч энэ нь оновчтой буудлагын туршлага биш юм.

Wii Remote -ийг нарийвчлалтай гэрлийн буу болгон ажиллуулахын тулд зурагт дээрх зорилтот объектыг сонгохын тулд зурагтаар ижил хавтгайд байрлуулсан дөрвөн хэт улаан туяаны LED шаардлагатай болно. Дараа нь Wii Remote нь дөрвөн LED -ийг хардаг бөгөөд камерын зургийг ашиглан homography -ийг тооцоолох боломжтой бөгөөд энэ нь камер хаана зааж байгааг тодорхойлох боломжийг олгодог.

Энэ төслийн тоног төхөөрөмж нь энгийн. ТВ-ийн дээд ба доод хэсэгт нааж, USB цэнэглэгч рүү залгах боломжтой энгийн 3D хэвлэсэн орон сууцанд хэт улаан туяаны дөрвөн LED байдаг. Нэмж хэлэхэд, хэрэв танд Wii бууны орон сууц байхгүй бол би 3D хэвлэсэн энгийн бариултай бөгөөд Wii алсын удирдлагад бэхлэх боломжтой (хуванцар хэмнэхийн тулд би мод, 3D хэвлэсэн хуванцар хоёрын хооронд эрлийз хийсэн).

Питон дээр суурилсан програм хангамж нь техник хангамжаас илүү хэцүү байсан бөгөөд одоогоор зөвхөн Линукс дээр ажилладаг. Энэ нь LED болон Wii Remote -ийг тохируулж, дараа нь homography -ийн тооцооллыг ашиглан Raspberry PI 3B+дээрх Retroarch -ийн fceumm NES эмулятор (магадгүй бусад эмуляторууд) дээр маш сайн ажилладаг үнэмлэхүй хулганыг дуурайдаг.

Хангамж

  • Wii Remote
  • Дөрвөн 940nm 5 мм хэт улаан туяаны LED
  • А төрлийн залгууртай хуучин USB кабель
  • Raspberry PI 3 эсвэл Bluetooth дэмждэг бусад Линукс компьютер
  • 3D принтер ба судалтай (заавал биш)

Алхам 1: Хэт улаан туяаны LED гинж

Хэт улаан туяаны LED гинж
Хэт улаан туяаны LED гинж
Хэт улаан туяаны LED гинж
Хэт улаан туяаны LED гинж

Ажиллаж буй эрэгтэй залгууртай хуучин USB кабелийг аваарай (ихэвчлэн миний утасны цэнэглэгч кабель микро USB -ийн төгсгөлд тасардаг, тиймээс надад ажлын төрлийн эрэгтэй залгууртай үлдсэн кабелиуд байдаг).. Үнэндээ өгөгдлийн кабелиуд байвал зүгээр цахилгааны шугам ажиллаж байх үед эвдэрсэн. Нөгөө үзүүрийг нь хайчилж ав. Онолын хувьд улаан кабель нь +5V, хар нь газардуулгатай байх ёстой, гэхдээ мултиметрээр шалгана уу (цэнэглэгч рүү залгаарай, дараа нь улаан ба хар утасны хоорондох хүчдэлийг шалгана уу).

Хэт улаан туяаны LED нь ойролцоогоор 1.2-1.3 В хүчдэлийн уналттай байдаг тул би дөнгөж дөрөвийг нь USB кабелиар гагнасан. Гагнуурын утаснууд нь урт байх ёстой бөгөөд та LED -ийг зурагтын доод талд, хоёрыг дээд талд байрлуулж, LED -ийн хооронд зохих хэмжээний хэвтээ зайтай (ойролцоогоор 10 инч орчим) байлгах хэрэгтэй.

LED гогцоо хийхийн тулд илүү нарийвчлалтай:

  • Эхний LED -ийн хасах талыг (катод, богино хөл, хавтгай ирмэгээр) +5V USB утас руу гагнах
  • Эхний LED -ийн давуу талыг (анод, урт хөл, дугуй ирмэг) хоёр дахь LED -ийн хасах тал руу холбоно уу.
  • хоёр дахь LED -ийг гуравдахь, гурав дахь нь дөрөв рүү холбохын тулд давтан хийнэ үү
  • Дараа нь дөрөв дэх LED -ийн давуу талыг утастай холбож, газардуулгын USB утастай холбоно уу.

Аливаа зүйлийг илүү цэгцтэй болгохын тулд та холболт хийхдээ дулаан агшаагч хоолой ашиглаж болно. Үгүй бол богино өмднөөс зайлсхийхийн тулд цахилгаан соронзон хальс ашиглана уу.

Богино холболт байхгүй эсэхийг шалгаарай. Дараа нь USB цэнэглэгч рүү залгаарай, утасны камертай LED -ийг хараад хэт улаан туяа ялгаруулж байгаа эсэхийг шалгаарай. (Олон утасны камер хэт улаан туяаны мэдрэмтгий байдаг.)

Алхам 2: ТВ рүү холбоно уу

ТВ -д хавсаргана уу
ТВ -д хавсаргана уу
ТВ -д хавсаргана уу
ТВ -д хавсаргана уу
ТВ -д хавсаргана уу
ТВ -д хавсаргана уу

Одоо хоёр LED -ийг зурагтын доод талд, хоёрыг дээд талд нь холбоно уу. Хэвтээ зай нь арван инч орчим байх ёстой. Хэрэв энэ нь хэтэрхий их байвал Wii Remote камерын харах талбарт бүгдийг нь авахад асуудал үүсч магадгүй юм. Гэхдээ хэрэв тэд хэт ойрхон байвал миний геометрийн зөн совин танд илүү нарийвчлалтай байх болно гэж хэлдэг.

Туршилт хийхийн тулд би LED -ийг цахилгаан соронзон хальсаар наагаад дараа нь байнгын холболт хийхийн тулд зурагт дээр нааж хийсэн дөрвөн жижиг LED хавчаарыг (файлууд энд байна) зохион бүтээж хэвлэв. Та LED -ийг зураг авалтынхаа хавтгайд аль болох ойрхон байрлуулах ёстой.

Алхам 3: Програм хангамжийг суулгана уу

Одоогийн байдлаар програм хангамж нь зөвхөн Линукс дээр ажилладаг. Дараах тохиргоо нь Raspbian Stretch бүхий Raspberry PI 3 -т зориулагдсан болно. Бусад Линукс системүүд зарим өөрчлөлт оруулах шаардлагатай болно. Өмнөх загваруудад танд Bluetooth гогцоо хэрэгтэй бөгөөд үүнийг тушаалын мөрөөс ажиллуулах шаардлагатай болно.

sudo get-apt bluetooth суулгана уу

Алхам A: 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 багц хэрэгтэй болно. Энд бөөрөлзгөнө 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

Харамсалтай нь үүнийг бүтээхэд шаардлагатай олон зүйлийг алдах магадлал өндөр байгаа бөгөөд./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

Алхам C: python номын сангууд

Эцэст нь миний хөнгөн бууны питон скриптийг дэмжих зүйлүүдийг аваарай.

sudo pip3 uinput numpy pygame opencv-python суулгана уу

sudo apt-get install libatlas-base-dev sudo apt-get install libjasper-dev sudo apt-get install libqtgui4 sudo apt-get install python3-pyqt5

Алхам D: lightgun.py

Эцэст нь миний хөнгөн бууны питон скриптийг аваарай.

cd ~

git clone

Хэрэв бүх зүйл сайн болсон бол одоо танд бууг тохируулахын тулд ~/lightgun.py байна.

Алхам 4: шалгалт тохируулга I хэсэг: Камерыг төвд байрлуулах

Тохируулга I хэсэг: Камерыг төвд байрлуулах
Тохируулга I хэсэг: Камерыг төвд байрлуулах
Тохируулга I хэсэг: Камерыг төвд байрлуулах
Тохируулга I хэсэг: Камерыг төвд байрлуулах
Тохируулга I хэсэг: Камерыг төвд байрлуулах
Тохируулга I хэсэг: Камерыг төвд байрлуулах

Калибровк хийх хоёр тал бий. Эхнийх нь Wiimote бүр дээр камерын төвийг тохируулах явдал юм. Үүнийг хийхийн тулд камер ашиглан телевизийн дэлгэцийн эргэн тойронд байгаа LED-ийн хоёр зургийг авах шаардлагатай бөгөөд нэгийг нь баруун тийш дээш харуулсан, нөгөө нь дээрээс нь доош харуулсан байна.

Wii Remote -ийг урд талд нь байрлуулахдаа товчлуурыг дарахаас зайлсхийхийн тулд Wii Remote -ийг тогтмол өндөрт байлгахын тулд энд оруулсан тохируулгын хэрэгслийг 3D хэвлэх боломжтой. Танд үндсэндээ 10.5 мм зузаантай зүйл хэрэгтэй бөгөөд үүнийг урд талд нь байрлуулахдаа Wii алсын удирдлага дор байрлуулж болно. Би хуванцар хэмнэхийн тулд хэдэн фанер хаягдал ашигласан.

LED -аа асаагаад Raspberry PI эсвэл бусад компьютерийг ТВ дээр харуулж байгаа эсэхийг шалгаарай. Гар холбох (энэ нь ssh дээр ажиллахгүй) эсвэл VNC ашиглана уу. Дараа нь гүйх:

python3 ~/lightgun/lightgun.py -М

Хэрэв бүх зүйл сайн байвал та Wii Remote дээр 1+2 товчлуурыг дарахыг хүссэн бүтэн дэлгэцтэй дэлгэцтэй болно. Үүнийг хийх. Wii Remote дээр гэрэл анивчиж, дараа нь 1, 4 -р гэрэл асах болно. Та мөн дэлгэцийн дээд талд Wii Remote камераас харсан жижигхэн ногоон тэгш өнцөгтийг харах болно. Wii Remote -ийг LED руу чиглүүлээрэй, хэрэв бүх зүйл сайн байвал та 1 -ээс 4 хүртэл дугаарласан дөрвөн LED -ийг харах болно.

Телевизийн дэлгэц рүү заадаг, Wii Remote нь бүх LED -ийг ирмэг дээр нь зэрэгцүүлсэн байдлаар харах боломжийг олгодог ширээний гадаргуу шиг хурц ирмэг бүхий хатуу гадаргууг олох хэрэгтэй. Эхлээд Wii Remote -ийг баруун тийш, алсын талыг гадаргуугийн ирмэг дээр тэгшлээд, бүх дөрвөн LED харагдаж байгаа эсэхийг шалгаарай. Дараа нь гар дээрээ SPACE товчийг дарна уу (эсвэл илүү тохиромжтой бол Nunchuck хавсаргаад C дарна уу). Дараа нь Wii Remote -ийг эргүүлэхийг танаас хүсэх болно. Калибровк хийх хэрэгсэл эсвэл өөр ямар нэгэн зүйлийг ашиглан таны гадаргуугаас 10.5 мм дээш өргөгдсөн эсэхийг, мөн өмнөх байршилтай ойролцоо (жишээлбэл, таны гадаргуугийн ижил ирмэг дээр зэрэгцүүлсэн) байгаа эсэхийг шалгаарай. SPACE товчийг дахин дарна уу.

Хэрэв бүх зүйл сайн байвал та LED тохируулгын алхам руу орно. Тийм ээ, энэ бол төвөгтэй зүйл! Гэхдээ та маш нарийн буутай болно. Энэ бол зөвхөн үнэ.

Анхаарна уу: Хэрэв над шиг танд зурагтын доор Wii байгаа бол Wii -ийг хоёр шалтгаанаар унтраах шаардлагатай: нэгдүгээрт, хэрэв Wii асаалттай байвал Wiimote -тэй холбогдоно, хоёрдугаарт, мэдрэгчийн баарны хэт улаан туяа нь саад болно. энэ төсөл. Үүнтэй ижил төстэй шалтгаанаар та Wii -ийг ашиглаж байхдаа ТВ -ийн эргэн тойрон дахь LED -ийг салгах нь зүйтэй юм.

Алхам 5: Калибровк хийх II алхам: LED

Тохируулгын II алхам: LED
Тохируулгын II алхам: LED
Тохируулгын II алхам: LED
Тохируулгын II алхам: LED

Одоо та ТВ -ийн ирмэг дээр LED хаана байрладаг талаар програм хангамжид хэлэх хэрэгтэй. ТВ -ийн ирмэг дээр нэг сумыг сонгосон (тод), гурав нь саарал өнгөтэй дөрвөн сумыг харуулсан шалгалт тохируулгын дэлгэц гарч ирнэ. Та тохируулж буй сумаа өөрчлөхийн тулд +/- товчийг ашиглана уу.

Ирмэгийг тойрсон дөрвөн сум тус бүрийн хувьд үүнийг хий:

  1. Wiimote дээр зүүн/баруун товчийг дарж сумыг харгалзах LED рүү аль болох нарийвчлалтай чиглүүлэх хүртэл шилжүүлэх;
  2. сумны урт нь LED ба ТВ дэлгэцийн ирмэгийн хоорондох зайтай таарах хүртэл сумны уртыг өөрчлөхийн тулд Wiimote дээр дээш/доош дарна уу; өөрөөр хэлбэл, сумны урт нь сумны үзүүрээс LED хүртэлх зайтай тэнцүү байх шаардлагатай.

Дөрвөн сумаа зөв болгосны дараа (магадгүй бүр эрт) та Wiimote -ийг дэлгэц рүү чиглүүлэхэд улаан хөндлөн зураас харах болно. Энэ нь байх ёстой газар гэдгийг та шалгаж болно. (Wiimote бүх LED -ийг харж чаддаг байхын тулд та хол байх ёстой гэдгийг санаарай. Харах талбарт хэт улаан туяаны өөр эх үүсвэр байхгүй байх нь чухал юм. Нарны гэрлийн тусгал дээр шураг толгойг тусгахад би нэг удаа асуудалтай байсан. ТВ зогсоол.)

Эцэст нь тав дахь сум байдаг бөгөөд энэ нь зөвхөн дөрөв дэх LED сумнаас + эсвэл эхнийхээс нь дарахад л харагддаг (мөн анхдагчаар тэг урттай байдаг тул энэ нь зүгээр л пиксел юм). Энэ сум нь Wii Remote -ийн камераас хэр өндөрт зураг авахыг тохируулна. Асуудал нь энэ юм: та Wii Remote -ийн дээд гадаргуу дээр харж болно. Гэхдээ камер нь уг гадаргуугаас нэлээд хол зайд, Wii Remote -ийн урд талын хар тэгш өнцөгтийн дунд байрладаг. Хэрэв бид камерын зааж буй буудлуудыг бүртгэсэн бол тэдгээр нь Wii Remote -ийн дээд гадаргуугаас 8 мм орчим зайд бүртгэгдэх байсан. Үүнийг шалгахын тулд та дээд гадаргууг харахад хөндлөн үсний төв хэсгийг камер нуудаг болохыг тэмдэглэж болно.

Та үүгээр амьдарч болно, эсвэл энэ тав дахь сумыг өргөж, Wii Remote -ийн дээд хэсэгт зураг авалтыг тохируулах, эсвэл үүнийг нөхөхийн тулд төмрийн үзэмжээр 3D хэвлэх боломжтой файлуудыг тохируулах боломжтой (гэхдээ нөхөн төлбөр нь зөвхөн ТВ хүртэлх тодорхой зай). Би өөрөө програм хангамжийн тохируулга хийхээр явсан.

Wii Remote дээрх HOME товчийг дарж шалгалт тохируулгаас гараад бүх өгөгдлийг ~/.wiilightgun директорт хадгална уу.

Алхам 6: Туршилт ба хэрэглээ

Туршилт ба хэрэглээ
Туршилт ба хэрэглээ
Туршилт ба хэрэглээ
Туршилт ба хэрэглээ
Туршилт ба хэрэглээ
Туршилт ба хэрэглээ

Та одоо хөнгөн буугаа туршиж үзэхийг хүсч байгаа байх. Терминал эмулятор (эсвэл скрипт) дээр ажиллуулна уу:

python3 ~/lightgun/lightgun.py -t

Та 1+2 товчлуурыг нэгэн зэрэг дарах хэрэгтэй бөгөөд үүний дараа хэрэв бүх зүйл сайн болвол lightgun.py ажиллаж байх үед гэрлийн буу нь хоёр товчлууртай үнэмлэхүй хулганыг дуурайх болно. Гох товчлуур нь хулганы 1 товч, А товчлуур нь хулганы 2 товч юм. Гарахын тулд ctrl-c дарна уу.

Үнэмлэхүй хулганаар ажиллахын тулд танд зөвхөн эмулятор болон тоглоомоо тохируулах хэрэгтэй. Харамсалтай нь энэ нь үргэлж тийм амар байдаггүй.

Таны оролдож болох нэг хөгжилтэй зүйл бол миний иминурнамезийн нугас-нугасны зураг юм.

cd ~

git clone https://github.com/arpruss/duck-duck-shoot cd duck-duck-shoot python play_game.py

NES тоглоомуудын хувьд би Retroarch дахь libretro fceumm цөмийг ашигладаг. Options цэс рүү ороод 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-ийн анхны цувралын фазер шиг харагдаж байна), мөн слайдыг үзэх боломжтой. Хэвлэх боломжтой файлууд энд байна. Хэрэв та хаягдал модны зардлаар хуванцар хэмнэхийг хүсч байвал миний хийсэн зүйлийг хийж, бариулыг бүхэлд нь хэвлэхийн оронд зөвхөн Wiimote -ийг хадгалдаг хэсгийг хэвлээд, модон хэсгийг хайчилж, шургуул.

Алсын харааг харахын тулд нүдийг үзэсгэлэнт газруудад төвлөрүүл. Урд талын овойлтыг хойд харааны овойлтуудын хооронд тэгшлээрэй, ингэснээр агаарын зай тэнцүү бөгөөд гурван овойлт ижил өндөр байх болно. Дараа нь зорилтот хэсгийн дунд хэсгийг овойлтын дээд хэсэгт тэгшлээрэй.

Анхаарна уу: Өндөр нь бага зэрэг тэгш бус бөгөөд урд талын харааны овойлт бага зэрэг доогуур байдаг тул та тэдгээрийг 2.5 метр (миний зурагт хүртэлх зай) харах үед нүдний цохилтын өндрийг нөхөх болно. Хэрэв танд ТВ -ээс хамаагүй өөр зай байгаа бол үүнийг OpenSCAD файлд оруулах боломжтой. Гэсэн хэдий ч энэ тохируулга нь хэвлэгчийн хүлцэлээс доогуур байж магадгүй юм. Түүнчлэн, хэрэв та програм хангамжийн босоо тохируулгыг хийгээгүй бол -8 -ийн ойролцоо (миллиметрээр) extraSightAdjust -ийг тохируулснаар програмын үзмэрт нэмэлт өөрчлөлт оруулах боломжтой.

Алхам 8: III шалгалт тохируулга (заавал биш): Нарийн тохируулга

Хэрэв та илүү нарийвчлалтай байхыг хүсч байвал дараахыг ажиллуулж болно.

python3 ~/lightgun/lightgun.py -d

(Демогийн хувьд), үзэмж нь хөндлөн үстэй нийцэж байгаа эсэхийг анхааралтай ажиглаарай. Хэрэв тийм биш бол ~/.wiilightgun/wiimotecalibration гараар гараар засварлаж, камерын төвийн x ба y координатыг бага зэрэг өөрчилж хараагаа тохируулна уу. Жишээлбэл, миний буу бага зэрэг баруун тийш харваж байсан тул би x координатыг 529 болгон 525 болгон өөрчилсөн. Хүн бүрийн тоо өөр байж магадгүй.

Алхам 9: Хавсралт: Алгоритм

Хавсралт: Алгоритм
Хавсралт: Алгоритм

Хулганы эмуляцийн код ойролцоогоор дараах байдлаар ажилладаг.

  • Процессийн товчлуурыг дардаг.
  • Камераас өгөгдөл авч, камер төвлөрүүлэх шалгалт тохируулгыг тохируулна уу.
  • Хэрэв камер дээр гурваас цөөн тооны LED харагдаж байвал:

    Хулганы сүүлчийн байрлалыг хадгална уу

  • Хэрэв гурван эсвэл дөрвөн LED харагдаж байвал:

    • Wiimote -ийн хурдатгал хэмжигчийн өгөгдлийг ашиглан Wiimote -ийн чиглэлийг тодорхойлж, аль LED камерын зураг нь ямар физик LED -тэй тохирч байгааг олж мэдээрэй.
    • Хэрэв дөрвөн LED харагдаж байвал:

      • LED камерын зураг ба LED байршлын хоорондох гомографийг тооцоолох (дэлгэцийн координатаар).
      • Гомограф ашиглан камерын харах талбайн төвд ямар дэлгэцийн байршил тохирч байгааг тооцоолно уу.
      • Виртуал бууны голын харааны шугамаас доогуур тохируулахын тулд Y тохируулга хий. Энэ бол бага зэрэг алгоритм боловч энэ нь ажилладаг.
      • Хулганы байрлалыг дэлгэцийн тохируулсан байрлалд тохируулна уу.
    • Хэрэв гурван LED харагдаж байвал:

      • LED камерын дүрс болон физик LED байршлын хоорондох P3P асуудлыг шийдвэрлэхийн тулд OpenCV ашиглана уу. Энэ нь дөрвөн хүртэлх шийдлийг бий болгодог.
      • Хэрэв амжилттай бол:

        • Хэрэв бид өмнө нь амжилттай байршлын тооцоо хийсэн бол алга болсон LED нь тухайн LED -ийн сүүлчийн ажиглагдсан эсвэл тооцоолсон байрлалд хамгийн ойр байх шийдлийг сонго.
        • Хэрэв бид өмнө нь байршлын тооцооллыг амжилттай хийж чадаагүй бол акселерометрийн гарчгийг хамгийн сайн таамаглаж буй шийдлийг сонгоорой.
        • Дөрөв дэх LED хаашаа явах ёстойг тооцоолохын тулд хамгийн сайн шийдлийг ашиглана уу.
        • Үлдсэнийг нь дөрвөн LED гэртэй адил хий.
      • Хэрэв амжилтанд хүрээгүй бол:

        Хулганы сүүлчийн байрлалыг хадгална уу

Зөвлөмж болгож буй: