جدول المحتويات:

بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI: 9 خطوات (بالصور)
بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI: 9 خطوات (بالصور)

فيديو: بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI: 9 خطوات (بالصور)

فيديو: بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI: 9 خطوات (بالصور)
فيديو: MAME AimTrak LightGuns and WiiMote LighGuns AT THE SAME TIME!! 2024, يوليو
Anonim
بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI
بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI
بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI
بندقية Wiimote الخفيفة الدقيقة لـ Raspberry PI

عادة ، جهاز Wii Remote المستخدم كمسدس خفيف ليس دقيقًا بما يكفي للألعاب القديمة مثل NES Duck Hunt ، لأن Wii Remote لا يحدد في الواقع النقطة التي يشير إليها التلفزيون. لا تستطيع! يحتوي جهاز Wii Remote على كاميرا تعمل بالأشعة تحت الحمراء في مقدمته والتي ترى خط مصابيح الأشعة تحت الحمراء في شريط المستشعر ، ولكن لا يمكنها معرفة مدى (أو في أي اتجاه) يبعد التلفزيون عن الشريط أو حجم التلفزيون. تعمل المحاكيات والألعاب على حل هذه المشكلة من خلال إظهار الخطوط المتقاطعة أو أي مؤشر استهداف آخر ، ولكن هذه ليست تجربة إطلاق نار دقيقة.

لجعل جهاز Wii Remote يعمل كمسدس ضوئي دقيق يمكنك رؤيته على طول لتحديد هدف على جهاز تلفزيون ، يتطلب الأمر أربعة مصابيح LED تعمل بالأشعة تحت الحمراء مرتبة في نمط رباعي معروف (وليس خطًا مستقيمًا) في نفس مستوى التلفزيون. ثم يرى جهاز التحكم عن بعد Wii LEDs الأربعة ويمكن استخدام صورة الكاميرا لحساب التماثل الذي يسمح لنا بمعرفة المكان الذي تشير إليه الكاميرا.

الأجهزة الخاصة بهذا المشروع بسيطة. توجد أربعة مصابيح LED تعمل بالأشعة تحت الحمراء في أغلفة بسيطة مطبوعة ثلاثية الأبعاد يمكن لصقها على الجزء العلوي والسفلي من غلاف التلفزيون وتوصيله بشاحن USB. بالإضافة إلى ذلك ، إذا لم يكن لديك غلاف Wii gun ، فلدي مقبض بسيط مطبوع ثلاثي الأبعاد ومشاهد يمكنك إرفاقها بجهاز Wii Remote (على الرغم من توفير البلاستيك ، فقد صنعت لي مزيجًا بين الخشب والبلاستيك المطبوع ثلاثي الأبعاد).

كان صنع البرنامج المستند إلى Python أصعب من الأجهزة وهو حاليًا Linux فقط. يقوم بمعايرة مصابيح LED وجهاز Wii Remote ثم يستخدم حسابات التماثل لمحاكاة الماوس المطلق الذي يعمل جيدًا في محاكي Retroarch's fceumm NES (وربما بعض المحاكيات الأخرى) على Raspberry PI 3B +.

اللوازم

  • Wii Remote
  • أربعة مصابيح LED تعمل بالأشعة تحت الحمراء 940nm 5mm
  • كبل USB قديم مع قابس من النوع A يعمل
  • Raspberry PI 3 أو كمبيوتر Linux آخر مع دعم Bluetooth
  • طابعة ثلاثية الأبعاد وفتيل (اختياري)

الخطوة 1: سلسلة LED بالأشعة تحت الحمراء

سلسلة الصمام الأشعة تحت الحمراء
سلسلة الصمام الأشعة تحت الحمراء
سلسلة الصمام الأشعة تحت الحمراء
سلسلة الصمام الأشعة تحت الحمراء

احصل على كبل USB قديم مع مقبس ذكر يعمل من النوع A (عادةً ما تنكسر كابلات شحن هاتفي على طرف micro USB ، لذلك لدي كبلات متبقية مع مقبس ذكر من النوع A).. في الواقع ، لا بأس إذا كانت كبلات البيانات مكسورة ما دامت خطوط الكهرباء تعمل. اقطع الطرف الآخر. نظريًا ، يجب أن يكون الكبل الأحمر + 5 فولت والأسود يجب أن يكون أرضيًا ، ولكن تحقق من ذلك بمقياس متعدد (قم بتوصيله بالشاحن ، ثم تحقق من الجهد بين الأسلاك الحمراء والسوداء).

نظرًا لأن مصابيح LED التي تعمل بالأشعة تحت الحمراء تحتوي على انخفاض جهد 1.2-1.3 فولت ، فقد قمت للتو بلحام أربعة منها في حلقة متسلسلة بكابل USB. تأكد من أن الأسلاك التي قمت بتلحيمها طويلة بما يكفي بحيث يمكنك وضع مصابيح LED في الجزء السفلي من التلفزيون واثنين في الجزء العلوي ، مع وجود مساحة أفقية مناسبة بين مصابيح LED (حوالي 10 بوصات أو نحو ذلك).

بتعبير أدق لجعل حلقة LED:

  • لحام الجانب الناقص (كاثود ، ساق أقصر ، بحافة مسطحة) من أول LED بسلك USB + 5V
  • قم بربط الجانب الإيجابي لمصباح LED الأول (الأنود ، ساق أطول ، بحافة مستديرة) بالجانب الناقص من مؤشر LED الثاني
  • كرر الانضمام إلى المصباح الثاني بالثالث والثالث إلى الرابع
  • ثم قم بتوصيل الجانب الإيجابي لمصباح LED الرابع بسلك بسلك USB الأرضي.

لجعل الأشياء أكثر إتقانًا ، يمكنك استخدام أنابيب الانكماش الحراري عند القيام بالتوصيلات. خلاف ذلك ، استخدم شريطًا كهربائيًا لتجنب السراويل القصيرة.

تأكد من عدم وجود دوائر قصيرة. ثم قم بتوصيله بشاحن USB وتحقق من أنه ينبعث منه ضوء الأشعة تحت الحمراء من خلال النظر إلى مصابيح LED بكاميرا الهاتف. (العديد من كاميرات الهاتف حساسة للأشعة تحت الحمراء.)

الخطوة 2: قم بتوصيله بالتلفزيون

نعلق على التلفزيون
نعلق على التلفزيون
نعلق على التلفزيون
نعلق على التلفزيون
نعلق على التلفزيون
نعلق على التلفزيون

الآن ، قم بتوصيل اثنين من مصابيح LED بالجانب السفلي من التلفزيون واثنين في الجانب العلوي. يجب أن يكون التباعد الأفقي حوالي عشر بوصات. إذا كان كثيرًا ، فقد تواجه مشكلات في مجال رؤية كاميرا Wii Remote التي تلتقطها جميعًا. ولكن إذا كانتا متقاربة جدًا ، فإن حدسي الهندسي يقول إنك ستكون أقل دقة.

للاختبار ، قمت بتسجيل مصابيح LED بشريط كهربائي ، ثم من أجل الاتصال الدائم ، قمت بتصميم وطباعة أربعة مقاطع LED صغيرة وأنيقة (الملفات هنا) والتي قمت بلصقها على التلفزيون. يجب أن تجعل مصابيح LED قريبة من مستوى شاشة التلفزيون قدر الإمكان ، دون أن يحجبها الإطار عن المكان الذي ستلتقط فيه الصور.

الخطوة الثالثة: تثبيت البرنامج

حاليًا البرنامج يعمل بنظام Linux فقط. تم تصميم الإعداد التالي لـ Raspberry PI 3 مع Raspbian Stretch. ستتطلب أنظمة Linux الأخرى بعض التغييرات. في الطرز السابقة ، ستحتاج إلى دونجل Bluetooth وستحتاج إلى تشغيل هذا من سطر الأوامر أيضًا:

sudo get-apt تثبيت البلوتوث

الخطوة أ: udev

بعد ذلك ، أنشئ ملفًا في /etc/udev/rules.d/wiimote.rules يحتوي على سطر واحد:

KERNEL == "uinput" ، الوضع = "0666"

يمكنك القيام بذلك ، على سبيل المثال ، باستخدام محرر نصوص أو عن طريق كتابة ما يلي في سطر الأوامر:

sudo sh -c 'echo KERNEL == / "uinput \"، MODE = / "0666 \"> /etc/udev/rules.d/wiimote.rules'

ثم أعد تشغيل udev:

إعادة تشغيل sudo /etc/init.d/udev

الخطوة ب: cwiid

بعد ذلك ، ستحتاج إلى حزمة cwiid المعدلة الخاصة بي. هنا يصبح الشعر مشعرًا بعض الشيء كما تحتاج بشكل مثالي إلى بنائه على Raspberry PI الخاص بك ، لكن يجب أن أعترف بأنني فقدت مسار الحزم التي تحتاج إلى تثبيتها لجعلها تعمل. هناك ثلاثة خيارات للقيام بذلك.

الخيار B1: بناء نفسك

مؤتمر نزع السلاح ~

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: استخدام ثنائياتي

مؤتمر نزع السلاح ~

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 قم بالتثبيت

الخطوة ج: مكتبات بيثون

أخيرًا ، احصل على عناصر دعم لبرنامج lightgun 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

الخطوة د: lightgun.py

أخيرًا ، احصل على نصي lightgun python النصي:

مؤتمر نزع السلاح ~

استنساخ بوابة

إذا سارت الأمور على ما يرام ، فلديك الآن ~ / lightgun.py والتي يمكنك استخدامها لمعايرة بندقية الإضاءة.

الخطوة 4: المعايرة الجزء الأول: توسيط الكاميرا

معايرة الجزء الأول: توسيط الكاميرا
معايرة الجزء الأول: توسيط الكاميرا
معايرة الجزء الأول: توسيط الكاميرا
معايرة الجزء الأول: توسيط الكاميرا
معايرة الجزء الأول: توسيط الكاميرا
معايرة الجزء الأول: توسيط الكاميرا

هناك جانبان للمعايرة. الأول هو معايرة مركز الكاميرا في كل Wiimote. يتطلب ذلك استخدام الكاميرا لالتقاط صورتين لمصابيح LED حول شاشة التلفزيون ، إحداهما مع الجانب الأيمن البعيد لأعلى والأخرى مقلوبة رأسًا على عقب.

لتجنب الضغط على الأزرار عند وضع جهاز Wii Remote على مقدمته ، ولجعل Wii Remote يتمتع بارتفاع ثابت ، يمكنك طباعة أداة المعايرة ثلاثية الأبعاد التي قمت بتضمينها هنا. أنت بحاجة بشكل أساسي إلى أشياء بسمك 10.5 ملم يمكنك وضعها تحت جهاز تحكم Wii عندما يكون في المقدمة. لقد استخدمت بالفعل بعض الخشب الرقائقي الخردة لتوفير البلاستيك.

قم بتشغيل مصابيح LED الخاصة بك وتأكد من عرض Raspberry PI أو جهاز كمبيوتر آخر على التلفزيون. قم بتوصيل لوحة مفاتيح (لن يعمل هذا عبر ssh) أو استخدم VNC. ثم اركض:

python3 ~ / lightgun / lightgun.py -M

إذا سارت الأمور على ما يرام ، فستحصل على شاشة بملء الشاشة تطلب منك الضغط على 1 + 2 على جهاز تحكم Wii Remote. إفعل ذلك. ستومض الأضواء على جهاز تحكم Wii Remote ، ثم تظل الأضواء 1 و 4 مضاءة. سترى أيضًا مستطيلًا أخضر صغيرًا في الجزء العلوي من الشاشة ، مع المنظر من كاميرا Wii Remote. قم بتوجيه Wii Remote إلى مصابيح LED وإذا سارت الأمور على ما يرام ، فسترى مصابيح LED الأربعة ، مرقمة من 1 إلى 4.

أنت الآن بحاجة إلى العثور على سطح صلب بحافة حادة ، مثل طاولة القهوة ، بحيث يمكنك الإشارة إلى شاشة التلفزيون والتي يمكن أن تسمح لجهاز Wii Remote برؤية جميع مصابيح LED مع جهاز Wii Remote المحاذي للحافة. ابدأ بمحاذاة جانب Wii Remote الأيمن لأعلى ، مع محاذاة جانب جهاز التحكم عن بعد مع حافة السطح ، وتأكد من رؤية جميع مصابيح LED الأربعة. ثم اضغط على مفتاح المسافة على لوحة المفاتيح (أو قم بإرفاق Nunchuck واضغط على C إذا كان ذلك أكثر ملاءمة). سيُطلب منك بعد ذلك تدوير Wii Remote. الآن ، تأكد من ارتفاعه بمقدار 10.5 مم عن سطحك ، باستخدام أداة المعايرة أو أي شيء آخر ، وعلى مقربة من نفس الموقع كما كان من قبل (على سبيل المثال ، محاذاة ضد نفس حافة السطح). اضغط على مفتاح المسافة مرة أخرى.

إذا سارت الأمور على ما يرام ، فستنتقل الآن إلى خطوة معايرة LED. نعم ، هذا معقد! لكنك ستحصل على بندقية ضوئية دقيقة للغاية. هذا هو السعر فقط.

ملاحظة: إذا كان لديك جهاز Wii تحت التلفزيون مثلي ، فيجب إيقاف تشغيل Wii لسببين: أولاً ، إذا كان Wii قيد التشغيل ، فسيتم توصيله بـ Wiimote ، وثانيًا ، ستتداخل مصابيح الأشعة تحت الحمراء الخاصة بشريط الاستشعار مع هذا المشروع. لأسباب مماثلة ، أثناء استخدام Wii ، من الجيد فصل مصابيح LED الموجودة حول التلفزيون.

الخطوة 5: المعايرة الخطوة الثانية: المصابيح

خطوة المعايرة الثانية: المصابيح
خطوة المعايرة الثانية: المصابيح
خطوة المعايرة الثانية: المصابيح
خطوة المعايرة الثانية: المصابيح

أنت الآن بحاجة إلى إخبار البرنامج بمكان وجود مصابيح LED حول حافة التلفزيون. سترى شاشة معايرة تظهر أربعة أسهم ، أحدها محدد (ساطع) وثلاثة منها رمادية اللون ، حول حافة التلفزيون. يمكنك استخدام +/- للتبديل لتغيير السهم الذي تقوم بضبطه.

لكل سهم من الأسهم الأربعة حول الحافة ، افعل هذا:

  1. اضغط يسارًا / يمينًا على Wiimote لتحريك الأسهم حتى تشير بأكبر قدر ممكن من الدقة نحو مؤشر LED المقابل ؛
  2. اضغط لأعلى / لأسفل على Wiimote لتغيير طول السهم حتى يطابق طول السهم المسافة بين LED وحافة شاشة التلفزيون ؛ بمعنى آخر ، يجب أن يكون طول السهم مساويًا للمسافة من طرف السهم إلى مؤشر LED.

بمجرد أن تكون أسهمك الأربعة صحيحة (وربما حتى قبل ذلك) ، سترى علامة متصالبة حمراء عندما توجه Wiimote إلى الشاشة. يمكنك التحقق من أن هذا هو المكان الذي يجب أن يكون فيه. (تذكر أنك بحاجة إلى أن تكون بعيدًا بما يكفي حتى يتمكن Wiimote من رؤية جميع مصابيح LED. ومن المهم أيضًا عدم وجود مصادر أخرى للأشعة تحت الحمراء في مجال الرؤية. لقد واجهت مشكلة ذات مرة بسبب انعكاس ضوء الشمس عن رأس المسمار على حامل تلفاز.)

أخيرًا ، يوجد سهم خامس ، يظهر فقط عند الضغط على + من سهم LED الرابع أو - من الأول (ويكون طوله افتراضيًا صفرًا ، لذا فهو مجرد بكسل). يقوم هذا السهم بضبط المسافة التي سيتم تسجيل اللقطة فوقها فوق كاميرا جهاز تحكم Wii. المشكلة هي كالتالي: سوف تشاهد على طول السطح العلوي لجهاز تحكم Wii Remote. لكن الكاميرا تقع في الواقع على مسافة ما أسفل هذا السطح ، في منتصف المستطيل الأسود في الجزء الأمامي من جهاز تحكم Wii. إذا سجلنا اللقطات التي تشير إليها الكاميرا ، فسيتم تسجيلها على بعد حوالي 8 مم تحت السطح العلوي لجهاز Wii Remote. يمكنك التحقق من ذلك من خلال ملاحظة أنه أثناء رؤيتك على طول السطح العلوي ، يتم إخفاء مركز الخطوط المتقاطعة بواسطة الكاميرا.

يمكنك التعايش مع هذا ، أو يمكنك تطوير هذا السهم الخامس لمحاذاة البرنامج اللقطات مع الجزء العلوي من Wii Remote ، أو يمكنك ضبط الملفات ثلاثية الأبعاد القابلة للطباعة لمشاهد الحديد للتعويض عن ذلك (ولكن التعويض لن يعمل إلا من أجل مسافة واحدة معينة إلى التلفزيون). ذهبت لمحاذاة البرنامج بنفسي.

اضغط على HOME على Wii Remote للخروج من المعايرة وحفظ جميع البيانات في دليل ~ /.wiilightgun.

الخطوة 6: الاختبار والاستخدام

الاختبار والاستخدام
الاختبار والاستخدام
الاختبار والاستخدام
الاختبار والاستخدام
الاختبار والاستخدام
الاختبار والاستخدام

ربما تريد تجربة مسدسك الخفيف الآن. فقط قم بتشغيل محاكي طرفي (أو برنامج نصي):

python3 ~ / lightgun / lightgun.py -t

ستحتاج إلى الضغط على الأزرار 1 + 2 في نفس الوقت ، وبعد ذلك إذا سارت الأمور على ما يرام ، طالما أن lightgun.py قيد التشغيل ، فإن البندقية الضوئية ستحاكي الماوس المطلق المكون من زرين. زر التشغيل هو زر الماوس 1 ، والزر A هو زر الماوس 2. اضغط على ctrl-c للخروج.

تحتاج الآن فقط إلى تكوين المحاكيات و / أو الألعاب للعمل باستخدام الماوس المطلق. لسوء الحظ ، لن يكون ذلك دائمًا بهذه السهولة.

أحد الأشياء الممتعة التي قد تجربها هو طريقة تصوير البطة في iminnamez:

مؤتمر نزع السلاح ~

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

بالنسبة لألعاب NES ، أستخدم libretro fceumm core في Retroarch. انتقل إلى قائمة الخيارات ، وقم بتكوين Zapper ليكون شاشة تعمل باللمس. (تكوينه على هيئة ماوس لا يعمل في الواقع ، حيث يتوقع fceumm حركة نسبية بدلاً من الماوس ذي الموضع المطلق.)

إذا بدأت ألعابك بنص ، يمكنك تعديل الجزء الذي يبدأ اللعبة أو المحاكي ليقول:

python3 ~ / lightgun / lightgun.py -t -B 30 "أمر بدء اللعبة"

ثم خلال أول 30 ثانية من تنفيذ اللعبة (ومن هنا جاء الخيار -B 30) ، يمكنك توصيل بندقيتك المضيئة بالضغط باستمرار على 1 + 2.

بالمناسبة ، يمكن أيضًا استخدام البرنامج النصي lightgun.py في ألعاب Wii Remote العامة مع Retroarch. ما عليك سوى إضافة الخيار -o وسيتم إيقاف تشغيل وظائف lightgun ، وبدلاً من ذلك ، سيعمل Wii Remote بشكل أفقي ، حيث تكون الأزرار الثلاثة 1 و 2 و B على التوالي. هناك وظائف أخرى ذات صلة بـ Retroarch في تعيينات lightgun.py والتي ستكتشفها من خلال قراءة الكود. على سبيل المثال ، يعمل مفتاح الطرح بمثابة تحول ، ومع عناصر تحكم dpad في الحفظ والتحميل (أعلى / لأسفل = تغيير رقم الحفظ ؛ يسار = استعادة ؛ يمين = حفظ).

الخطوة 7: مقبض البندقية والتصويب

مقبض البندقية والتصويب
مقبض البندقية والتصويب
مقبض البندقية والتصويب
مقبض البندقية والتصويب
مقبض البندقية والتصويب
مقبض البندقية والتصويب

يمكنك استخدام Wii Remote بمفرده كمسدس ، ومشاهدة على طول الجزء العلوي. يمكنك أيضًا شراء أحد أغلفة البندقية التجارية. ولكن نظرًا لأن جهاز Wii Remote الأصلي لم يكن قادرًا على استخدامه كمسدس يمكن رؤيته ، فإن الأغلفة لا تأتي بمشاهد حديدية ، كما تعمل المشاهد الحديدية على تحسين الدقة بشكل كبير.

لقد صممت نظامًا بسيطًا ثلاثي الأبعاد قابل للطباعة: مقبض منزلق يقع خلف المشغل مباشرة (لذلك يبدو قليلاً مثل جهاز عرض Star Trek Original Series) ، ومشاهد الانزلاق. الملفات القابلة للطباعة هنا. إذا كنت تريد التوفير على البلاستيك على حساب الخشب الخردة ، فيمكنك أيضًا القيام بما قمت به وبدلاً من طباعة المقبض بالكامل ، قم بطباعة الجزء الذي يحمل Wiimote فقط ، وقم بقطع قطعة خشبية وقم بلفها.

للرؤية ، ركز عينيك على المشاهد. قم بمحاذاة نتوء المنظر الأمامي بين مطبات الرؤية الخلفية بحيث يكون الفضاء الجوي على أي منهما متساويًا وتبرز جميع المطبات الثلاثة بشكل متساوٍ. ثم قم بمحاذاة منتصف الهدف مع الجزء العلوي من النتوءات.

ملحوظة: ارتفاع النتوءات غير متكافئ بعض الشيء ، حيث يكون نتوء الرؤية الأمامية أقل قليلاً ، من أجل التعويض عن ارتفاع النتوءات نفسها عندما تشاهدها على مسافة 2.5 متر (المسافة إلى التلفزيون). إذا كانت لديك مسافة مختلفة تمامًا عن التلفزيون ، فيمكنك وضعها في ملفات OpenSCAD. قد يكون هذا التعديل أقل من تفاوتات الطابعة ، على أي حال. أيضًا ، إذا لم تقم بإجراء الضبط الرأسي في البرنامج ، فيمكنك إضافة المزيد من الضبط إلى المشاهد في البرنامج عن طريق ضبط extraSightAdjust لشيء حول -8 (بالمليمترات).

الخطوة 8: المعايرة III (اختياري): الضبط الدقيق

إذا كنت تريد المزيد من الدقة ، يمكنك تشغيل:

python3 ~ / lightgun / lightgun.py -d

(للعرض التوضيحي) وانظر بعناية ما إذا كانت المشاهد تتماشى مع الخطوط المتقاطعة. إذا لم يفعلوا ذلك ، فاخرج وحرر يدويًا ~ /.wiilightgun / wiimotecalibration ، وقم بتعديل إحداثيات x و y لمركز الكاميرا قليلاً لضبط الرؤية. على سبيل المثال ، كان مسدسي يطلق النار قليلاً إلى اليمين ، لذلك انتهى بي الأمر بتغيير إحداثي x من 529 إلى 525. من المحتمل أن تكون أرقام كل شخص مختلفة.

الخطوة 9: الملحق: الخوارزمية

الملحق: الخوارزمية
الملحق: الخوارزمية

يعمل رمز محاكاة الماوس تقريبًا على النحو التالي.

  • يضغط زر العملية.
  • احصل على البيانات من الكاميرا واضبطها لمعايرة تمركز الكاميرا.
  • إذا كان أقل من ثلاثة مصابيح LED مرئية في الكاميرا:

    احتفظ بآخر موضع للماوس

  • إذا كانت ثلاثة أو أربعة مصابيح LED مرئية:

    • استخدم بيانات مقياس تسارع Wiimote للحصول على اتجاه Wiimote وتحديد صورة كاميرا LED التي تتوافق مع مؤشر LED المادي.
    • إذا كانت أربعة مصابيح LED مرئية:

      • احسب التجانس بين صور كاميرا LED ومواقع LED (في إحداثيات الشاشة).
      • استخدم homography لحساب موقع الشاشة الذي يتوافق مع مركز مجال رؤية الكاميرا.
      • قم بضبط Y لضبط مركز ماسورة البندقية الافتراضية أسفل خط الرؤية. هذه خوارزمية كلودجي إلى حد ما لكنها تعمل.
      • اضبط موضع الماوس على موقع الشاشة المعدل.
    • إذا كانت ثلاثة مصابيح LED مرئية:

      • استخدم OpenCV لحل مشكلة P3P بين صور كاميرا LED ومواقع LED الفعلية. هذا يولد ما يصل إلى أربعة حلول.
      • في حالة النجاح:

        • إذا كان لدينا حساب موقع ناجح سابقًا ، فاختر الحل الذي يجعل مؤشر LED المفقود أقرب إلى آخر موضع تمت ملاحظته أو محسوبًا لمؤشر LED هذا.
        • إذا لم يكن لدينا حساب سابق ناجح للموقع ، فاختر الحل الأفضل لتوقع عنوان مقياس التسارع.
        • استخدم أفضل حل لحساب المكان الذي يجب أن يتجه فيه مؤشر LED الرابع.
        • افعل الباقي كما في علبة LED الأربعة.
      • إذا لم تنجح:

        احتفظ بآخر موضع للماوس

موصى به: