সুচিপত্র:

রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান: 9 টি ধাপ (ছবি সহ)
রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান: 9 টি ধাপ (ছবি সহ)

ভিডিও: রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান: 9 টি ধাপ (ছবি সহ)

ভিডিও: রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান: 9 টি ধাপ (ছবি সহ)
ভিডিও: সবচেয়ে ছোট কম্পিউটার Raspberry Pi 3 Model B+ Full Setup 2024, জুলাই
Anonim
রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান
রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান
রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান
রাস্পবেরি পিআই এর জন্য সঠিক ওয়াইমোট লাইট গান

সাধারণত, হালকা বন্দুক হিসেবে ব্যবহৃত Wii রিমোট NES Duck Hunt- এর মতো বিপরীতমুখী গেমগুলির জন্য যথেষ্ট সঠিক নয়, কারণ Wii রিমোট আসলে টিভিতে যে পয়েন্টটি দেখানো হয়েছে তা নির্বাচন করে না। এটা পারে না! ওয়াই রিমোটের সামনে একটি ইনফ্রারেড ক্যামেরা রয়েছে যা সেন্সর বারে ইনফ্রারেড এলইডির লাইন দেখে, কিন্তু এটি বার থেকে টিভি কতদূর (বা কোন দিকে) বা টিভি কত বড় তা জানতে পারে না। এমুলেটর এবং গেমগুলি ক্রস-হেয়ার বা অন্যান্য টার্গেটিং ইন্ডিকেটর দেখিয়ে এর চারপাশে কাজ করে, কিন্তু এটি সঠিক টার্গেট-শুটিং অভিজ্ঞতা নয়।

ওয়াই রিমোটকে একটি সঠিক হালকা বন্দুক হিসাবে কাজ করার জন্য যা আপনি টিভিতে লক্ষ্য নির্বাচন করতে দেখতে পারেন, টিভির মতো একই সমতলে চারটি ইনফ্রারেড এলইডি একটি পরিচিত চতুর্ভুজ প্যাটার্ন (একটি সরলরেখা নয়) দিয়ে সাজানো প্রয়োজন। ওয়াই রিমোট তখন চারটি এলইডি দেখে এবং ক্যামেরা ইমেজটি একটি হোমোগ্রাফি গণনার জন্য ব্যবহার করা যেতে পারে যা আমাদের ক্যামেরাটি কোথায় নির্দেশ করছে তা বের করতে দেয়।

এই প্রকল্পের জন্য হার্ডওয়্যার সহজ। সাধারণ থ্রিডি-প্রিন্টেড হাউজিংয়ে চারটি ইনফ্রারেড এলইডি রয়েছে যা টিভি হাউজিংয়ের উপরের এবং নীচে আঠালো করা যায় এবং একটি ইউএসবি চার্জারে প্লাগ করা যায়। এছাড়াও, যদি আপনার Wii বন্দুকের আবাসন না থাকে, আমার কাছে একটি সহজ 3D মুদ্রিত হ্যান্ডেল এবং দর্শনীয় স্থান রয়েছে যা আপনি Wii রিমোটের সাথে সংযুক্ত করতে পারেন (যদিও প্লাস্টিক সংরক্ষণ করার জন্য, আমি কাঠ এবং 3D মুদ্রিত প্লাস্টিকের মধ্যে একটি সংকর তৈরি করেছি)।

পাইথন-ভিত্তিক সফটওয়্যারটি হার্ডওয়্যারের তুলনায় তৈরি করা কঠিন ছিল এবং বর্তমানে এটি শুধুমাত্র লিনাক্স-এ রয়েছে। এটি এলইডি এবং ওয়াই রিমোটকে ক্যালিব্রেট করে এবং তারপরে হোমোগ্রাফি গণনা ব্যবহার করে একটি পরম মাউস অনুকরণ করে যা আমার রাস্পবেরি পিআই 3 বি+তে রেট্রোআর্চের এনস এমুলেটর (এবং সম্ভবত কিছু অন্যান্য এমুলেটর) এ বেশ ভাল কাজ করে।

সরবরাহ

  • Wii রিমোট
  • চার 940nm 5mm ইনফ্রারেড LEDs
  • একটি ওয়ার্কিং টাইপ A প্লাগ সহ পুরাতন USB কেবল
  • রাস্পবেরি পিআই 3 বা ব্লুটুথ সমর্থন সহ অন্যান্য লিনাক্স কম্পিউটার
  • 3D প্রিন্টার এবং ফিলামেন্ট (alচ্ছিক)

ধাপ 1: ইনফ্রারেড LED চেইন

ইনফ্রারেড LED চেইন
ইনফ্রারেড LED চেইন
ইনফ্রারেড LED চেইন
ইনফ্রারেড LED চেইন

একটি ওয়ার্কিং টাইপ একটি পুরুষ সকেট সহ একটি পুরানো ইউএসবি কেবল পান (সাধারণত আমার ফোনের চার্জিং তারগুলি মাইক্রো ইউএসবি প্রান্তে ভেঙে যায়, তাই আমার কাছে একটি ওয়ার্কিং টাইপের একটি পুরুষ সকেটের সাথে অবশিষ্ট ক্যাবল আছে).. প্রকৃতপক্ষে, ডেটা কেবলগুলি থাকলে এটি ঠিক আছে যতক্ষণ বিদ্যুতের লাইন কাজ করে ততক্ষণ পর্যন্ত ভাঙা। অন্য প্রান্তটি কেটে ফেলুন। তত্ত্ব অনুসারে লাল তারের +5V এবং কালোটি স্থল হওয়া উচিত, তবে এটি একটি মাল্টিমিটার দিয়ে পরীক্ষা করুন (এটি একটি চার্জারে প্লাগ করুন এবং তারপরে লাল এবং কালো তারের মধ্যে ভোল্টেজটি পরীক্ষা করুন)।

যেহেতু ইনফ্রারেড এলইডিগুলির প্রায় 1.2-1.3V ভোল্টেজ ড্রপ আছে, আমি কেবল চারটি সিরিজ লুপে ইউএসবি কেবলকে বিক্রি করেছি। নিশ্চিত করুন যে আপনি যে তারগুলি সোল্ডার করেন তা যথেষ্ট দীর্ঘ যে আপনি LEDs টিভির নীচে রাখতে পারেন এবং উপরে দুটি, LEDs (প্রায় 10 ইঞ্চি বা তারও বেশি) এর মধ্যে একটি ভাল পরিমাণে অনুভূমিক স্থান সহ।

আরো স্পষ্টভাবে LED লুপ তৈরি করতে:

  • +5V ইউএসবি তারের প্রথম LED এর মাইনাস সাইড (ক্যাথোড, ছোট পা, সমতল প্রান্ত)
  • প্রথম LED এর প্লাস সাইডে যোগ দিন (অ্যানোড, লম্বা পা, গোলাকার প্রান্ত সহ) দ্বিতীয় LED এর মাইনাস সাইডে
  • দ্বিতীয় LED কে তৃতীয় এবং তৃতীয় থেকে চতুর্থতে যোগ দিতে পুনরাবৃত্তি করুন
  • তারপর চতুর্থ এলইডি এর প্লাস সাইডকে তারের সাথে গ্রাউন্ড ইউএসবি তারের সাথে সংযুক্ত করুন।

জিনিসগুলিকে আরও সুন্দর করার জন্য, আপনি সংযোগগুলি করার সময় তাপ সঙ্কুচিত টিউবিং ব্যবহার করতে পারেন। অন্যথায়, শর্টস এড়াতে বৈদ্যুতিক টেপ ব্যবহার করুন।

নিশ্চিত করুন যে আপনার কোন শর্ট সার্কিট নেই। তারপরে এটি একটি ইউএসবি চার্জারে প্লাগ করুন এবং পরীক্ষা করুন যে এটি একটি ফোনের ক্যামেরা সহ এলইডি দেখে ইনফ্রারেড আলো নিmitসরণ করছে। (অনেক ফোনের ক্যামেরা ইনফ্রারেড সংবেদনশীল।)

ধাপ 2: টিভিতে সংযুক্ত করুন

টিভিতে সংযুক্ত করুন
টিভিতে সংযুক্ত করুন
টিভিতে সংযুক্ত করুন
টিভিতে সংযুক্ত করুন
টিভিতে সংযুক্ত করুন
টিভিতে সংযুক্ত করুন

এখন, দুটি LED টিভির নীচের অংশে এবং দুটি উপরের দিকে সংযুক্ত করুন। অনুভূমিক ব্যবধান প্রায় দশ ইঞ্চি হওয়া উচিত। যদি এটি খুব বেশি হয়, তাহলে Wii রিমোট ক্যামেরার দৃষ্টিভঙ্গির ক্ষেত্রে আপনার সমস্যা হতে পারে সেগুলি সব ক্যাপচার করে। কিন্তু যদি তারা খুব কাছাকাছি হয়, তাহলে আমার জ্যামিতিক অন্তর্দৃষ্টি বলছে আপনার কম স্পষ্টতা থাকবে।

পরীক্ষার জন্য, আমি বৈদ্যুতিক টেপ দিয়ে এলইডি টেপ করেছি, এবং তারপর একটি স্থায়ী সংযোগের জন্য, আমি চারটি ঝরঝরে ছোট এলইডি ক্লিপ ডিজাইন করেছি এবং মুদ্রণ করেছি (ফাইলগুলি এখানে) যা আমি টিভিতে গরম আঠালো। আপনি এলইডিগুলিকে টিভি ডিসপ্লের সমতলের যতটা কাছাকাছি রাখতে পারেন, বেজেলটি সেখান থেকে যেখানে আপনি শুটিং করবেন সেখান থেকে তাদের আড়াল না করে।

ধাপ 3: সফ্টওয়্যার ইনস্টল করুন

বর্তমানে সফটওয়্যারটি শুধুমাত্র লিনাক্স। নিম্নলিখিত সেটআপটি রাস্পবেরি স্ট্রেচ সহ রাস্পবেরি পিআই 3 এর জন্য ডিজাইন করা হয়েছে। অন্যান্য লিনাক্স সিস্টেমে কিছু পরিবর্তন প্রয়োজন। আগের মডেলগুলিতে আপনার একটি ব্লুটুথ ডংগলের প্রয়োজন হবে এবং আপনাকে এটি একটি কমান্ডলাইন থেকেও চালাতে হবে:

sudo get-apt ব্লুটুথ ইনস্টল করুন

ধাপ A: udev

পরবর্তী, /etc/udev/rules.d/wiimote.rules এ একটি ফাইল তৈরি করুন যাতে একক লাইন রয়েছে:

কার্নেল == "ইউইনপুট", মোড = "0666"

আপনি এটি করতে পারেন, উদাহরণস্বরূপ, একটি টেক্সট এডিটর দিয়ে অথবা কমান্ডলাইনে নিম্নলিখিতটি টাইপ করে:

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

এবং তারপর udev পুনরায় চালু করুন:

sudo /etc/init.d/udev পুনরায় চালু করুন

ধাপ B: cwiid

পরবর্তী, আপনার আমার পরিবর্তিত cwiid প্যাকেজ প্রয়োজন হবে। এখানে এটি কিছুটা লোমশ হয়ে ওঠে যেমন আদর্শভাবে আপনার রাস্পবেরি পিআই -তে এটি তৈরি করতে হবে, কিন্তু আমাকে স্বীকার করতে হবে যে এটি কাজ করার জন্য আপনাকে কোন প্যাকেজগুলি ইনস্টল করতে হবে তা আমি হারিয়ে ফেলেছি। এটি করার জন্য তিনটি বিকল্প রয়েছে।

বিকল্প 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 ইনস্টল করুন

ধাপ সি: পাইথন লাইব্রেরি

অবশেষে, আমার লাইটগান পাইথন স্ক্রিপ্টের জন্য সমর্থন উপাদান পান:

sudo pip3 uinput numpy pygame opencv-python ইনস্টল করুন

sudo apt-get libatlas-base-dev sudo apt-get libjasper-dev sudo apt-get install libqtgui4 sudo apt-get python3-pyqt5 ইনস্টল করুন

ধাপ D: lightgun.py

অবশেষে, আমার লাইটগান পাইথন স্ক্রিপ্টটি পান:

সিডি

গিট ক্লোন

যদি সব ঠিক হয়ে যায়, আপনার কাছে এখন light/lightgun.py আছে যা আপনি লাইটগানকে ক্যালিব্রেট করতে ব্যবহার করতে পারেন।

ধাপ 4: ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং

ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং
ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং
ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং
ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং
ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং
ক্যালিব্রেশন পার্ট I: ক্যামেরা সেন্টারিং

ক্রমাঙ্কনের দুটি দিক আছে। প্রথমটি হ'ল প্রতিটি ওয়াইমোটে ক্যামেরার কেন্দ্রটি ক্রমাঙ্কন করা। এর জন্য আপনার টিভি স্ক্রিনের চারপাশে এলইডি-র দুটি ছবি তোলার জন্য ক্যামেরা ব্যবহার করা প্রয়োজন, একটি রিমোট ডান দিকের উপরে এবং অন্যটি উল্টো দিকে।

যখন আপনি Wii রিমোটকে সামনে রাখবেন তখন বোতামগুলি টিপে এড়াতে এবং Wii রিমোটকে সামঞ্জস্যপূর্ণ উচ্চতা দেওয়ার জন্য, আপনি এখানে অন্তর্ভুক্ত ক্যালিব্রেশন টুলটি 3D মুদ্রণ করতে পারেন। আপনার মূলত 10.5 মিমি পুরু জিনিস প্রয়োজন যা আপনি Wii রিমোটের নিচে রাখতে পারেন যখন এটি সামনে থাকে। আমি আসলে প্লাস্টিকে সংরক্ষণ করার জন্য কিছু স্ক্র্যাপ প্লাইউড ব্যবহার করেছি।

আপনার LEDs চালু করুন এবং নিশ্চিত করুন যে আপনার রাস্পবেরি PI বা অন্য কম্পিউটার টিভিতে প্রদর্শিত হচ্ছে। একটি কীবোর্ড সংযুক্ত করুন (এটি ssh এর উপর কাজ করবে না) অথবা VNC ব্যবহার করুন। তারপর চালান:

python3 ~/lightgun/lightgun.py -M

সবকিছু ঠিকঠাক থাকলে, আপনি একটি পূর্ণ-স্ক্রিন ডিসপ্লে পাবেন যা আপনাকে Wii রিমোটে 1+2 টিপতে বলবে। কর এটা. Wii রিমোটে লাইট জ্বলবে, এবং তারপর 1 এবং 4 লাইট জ্বলে থাকবে। আপনি Wii রিমোট ক্যামেরা থেকে দৃশ্য সহ পর্দার শীর্ষে একটি ছোট সবুজ আয়তক্ষেত্রও দেখতে পাবেন। এলইডি -তে ওয়াই রিমোট নির্দেশ করুন এবং যদি সবকিছু ঠিক থাকে, তাহলে আপনি চারটি এলইডি দেখতে পাবেন, যার সংখ্যা 1 থেকে 4।

এখন আপনাকে একটি কফি টেবিলের মত একটি ধারালো প্রান্তের সাথে একটি শক্ত পৃষ্ঠ খুঁজে বের করতে হবে, যা আপনি টিভি স্ক্রিনে নির্দেশ করতে পারেন এবং এটি Wii রিমোটকে সমস্ত LEDs দেখতে দেয় যা Wii রিমোট প্রান্তের সাথে একত্রিত হয়। ওয়াই রিমোট ডান দিকে উপরের দিকে সারিবদ্ধ করে শুরু করুন, রিমোটের পাশটি পৃষ্ঠের প্রান্তের সাথে সংযুক্ত, নিশ্চিত করুন যে চারটি এলইডি দেখা যাচ্ছে। তারপরে আপনার কীবোর্ডে স্পেস টিপুন (অথবা একটি নানচাক সংযুক্ত করুন এবং যদি এটি আরও সুবিধাজনক হয় তবে সি টিপুন)। তারপরে আপনাকে Wii রিমোট ঘোরানোর জন্য অনুরোধ করা হবে। এখন, নিশ্চিত করুন যে এটি আপনার পৃষ্ঠ থেকে 10.5 মিমি উপরে, ক্রমাঙ্কন সরঞ্জাম বা অন্য কিছু ব্যবহার করে এবং আগের মতো একই অবস্থানের কাছাকাছি (যেমন, আপনার পৃষ্ঠের একই প্রান্তের সাথে সংযুক্ত)। আবার SPACE চাপুন।

যদি সবকিছু ঠিক থাকে, আপনি এখন LED ক্রমাঙ্কন ধাপে যাবেন। হ্যাঁ, এটি জটিল! কিন্তু আপনি একটি খুব সুনির্দিষ্ট লাইটগান করতে যাচ্ছেন। এটাই শুধু দাম।

দ্রষ্টব্য: আমার মত যদি আপনার টিভির নিচে একটি Wii থাকে, তাহলে Wii দুটি কারণে বন্ধ করা প্রয়োজন: প্রথমত, যদি Wii চালু থাকে তবে এটি Wiimote- এর সাথে সংযুক্ত হবে এবং দ্বিতীয়ত, সেন্সর বারের ইনফ্রারেড LEDs হস্তক্ষেপ করবে এই প্রকল্পের. অনুরূপ কারণে, যখন আপনি Wii ব্যবহার করেন তখন টিভির চারপাশে LEDs আনপ্লাগ করা একটি ভাল ধারণা।

ধাপ 5: ক্রমাঙ্কন ধাপ II: LEDs

ক্রমাঙ্কন ধাপ II: LEDs
ক্রমাঙ্কন ধাপ II: LEDs
ক্রমাঙ্কন ধাপ II: LEDs
ক্রমাঙ্কন ধাপ II: LEDs

এখন আপনাকে সফ্টওয়্যারটি বলতে হবে যে টিভির প্রান্তের চারপাশে এলইডি কোথায় অবস্থিত। আপনি দেখতে পাবেন একটি ক্যালিব্রেশন স্ক্রিন চারটি তীর দেখাচ্ছে, তাদের মধ্যে একটি টি নির্বাচিত (উজ্জ্বল) এবং তাদের মধ্যে তিনটি ধূসর, টিভির প্রান্তের চারপাশে। আপনি কোন তীরটি সামঞ্জস্য করছেন তা পরিবর্তন করতে আপনি +/- ব্যবহার করুন।

প্রান্তের চারটি চারটি তীরের জন্য, এটি করুন:

  1. তীরগুলি সরানোর জন্য ওয়াইমোটে বাম/ডান টিপুন যতক্ষণ না তারা সংশ্লিষ্ট LED এর দিকে যথাযথভাবে নির্দেশ করে;
  2. তীরের দৈর্ঘ্য পরিবর্তন করতে Wiimote- এ উপরে/নিচে চাপুন যতক্ষণ না তীরের দৈর্ঘ্য LED এবং টিভি ডিসপ্লের প্রান্তের মধ্যে দূরত্বের সাথে মেলে; অন্য কথায়, তীরের দৈর্ঘ্য তীরের অগ্রভাগ থেকে LED পর্যন্ত দূরত্বের সমান হওয়া প্রয়োজন।

একবার আপনার চারটি তীর ঠিক হয়ে গেলে (এবং সম্ভবত আরও আগে) আপনি যখন স্ক্রিনে ওয়াইমোট নির্দেশ করবেন তখন আপনি একটি লাল ক্রসহেয়ার দেখতে পাবেন। আপনি যাচাই করতে পারেন যে এটি কোথায় হওয়া উচিত। (মনে রাখবেন যে আপনাকে অনেক দূরে থাকতে হবে যে Wiimote সব LEDs দেখতে পারে টিভি স্ট্যান্ড.)

অবশেষে, একটি পঞ্চম তীর আছে, যা শুধুমাত্র দেখায় যখন আপনি চতুর্থ LED তীর থেকে বা - প্রথম থেকে (এবং এটি ডিফল্টভাবে শূন্য দৈর্ঘ্য আছে, তাই এটি মাত্র একটি পিক্সেল)। এই তীরটি সামঞ্জস্য করে যে Wii রিমোটের ক্যামেরার উপরে কতটা শট নিবন্ধিত হবে। সমস্যাটি হল: আপনি Wii রিমোটের উপরের পৃষ্ঠ বরাবর দেখতে পাবেন। কিন্তু ক্যামেরাটি আসলে সেই পৃষ্ঠের নিচে কিছু দূরত্বে অবস্থিত, ওয়াই রিমোটের সামনের কালো আয়তক্ষেত্রের মাঝখানে। যদি আমরা শটগুলি নিবন্ধিত করি যেখানে ক্যামেরা নির্দেশ করছে, সেগুলি Wii রিমোটের উপরের পৃষ্ঠের প্রায় 8 মিমি নীচে নিবন্ধিত হবে। আপনি এটি লক্ষ্য করে দেখতে পারেন যে আপনি উপরের পৃষ্ঠ বরাবর দেখতে পান, ক্রস-চুলের কেন্দ্র ক্যামেরা দ্বারা লুকানো থাকে।

আপনি এর সাথে বেঁচে থাকতে পারেন, অথবা আপনি এই পঞ্চম তীরটি সফটওয়্যারের জন্য Wii রিমোটের উপরের অংশে সারিবদ্ধ করতে পারেন, অথবা এর ক্ষতিপূরণ দিতে লোহার দর্শনীয় স্থানগুলির জন্য 3D মুদ্রণযোগ্য ফাইলগুলি সামঞ্জস্য করতে পারেন (কিন্তু ক্ষতিপূরণ শুধুমাত্র এর জন্য কাজ করবে টিভির একটি নির্দিষ্ট দূরত্ব)। আমি নিজে সফটওয়্যার অ্যালাইনমেন্টের জন্য গিয়েছিলাম।

ক্রমাঙ্কন থেকে বেরিয়ে আসার জন্য Wii রিমোটে হোম টিপুন এবং data/.wiilightgun ডিরেক্টরিতে সমস্ত ডেটা সংরক্ষণ করুন।

ধাপ 6: পরীক্ষা এবং ব্যবহার

পরীক্ষা এবং ব্যবহার
পরীক্ষা এবং ব্যবহার
পরীক্ষা এবং ব্যবহার
পরীক্ষা এবং ব্যবহার
পরীক্ষা এবং ব্যবহার
পরীক্ষা এবং ব্যবহার

আপনি সম্ভবত এখন আপনার হালকা বন্দুক চেষ্টা করতে চান। শুধু একটি টার্মিনাল এমুলেটর (বা একটি স্ক্রিপ্ট) চালান:

python3 ~/lightgun/lightgun.py -t

আপনাকে একই সময়ে 1+2 বোতাম টিপতে হবে, এবং তারপরে যদি সবকিছু ঠিক থাকে, যতক্ষণ lightgun.py চলছে, লাইটগান একটি দুই-বোতাম পরম মাউস অনুকরণ করবে। ট্রিগার বাটন হল মাউস বাটন 1, এবং A বাটন হল মাউস বাটন 2. প্রস্থান করতে ctrl-c চাপুন।

একটি নিখুঁত মাউস দিয়ে কাজ করার জন্য এখন আপনার এমুলেটর এবং/অথবা গেম কনফিগার করতে হবে। দুর্ভাগ্যক্রমে, এটি সর্বদা এত সহজ হবে না।

একটি মজাদার জিনিস যা আপনি চেষ্টা করতে পারেন তা হল আমার ইমিনুরনেমেজের হাঁস-হাঁস-অঙ্কুরের মোড:

সিডি

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

NES গেমের জন্য, আমি Retroarch এ libretro fceumm কোর ব্যবহার করি। বিকল্প মেনুতে যান, এবং Zapper টাচস্ক্রিন হতে কনফিগার করুন। (এটি একটি মাউস হিসাবে কনফিগার করা আসলে কাজ করে না, কারণ fceumm পরম-অবস্থানের মাউসের পরিবর্তে একটি আপেক্ষিক-আন্দোলন আশা করে।)

যদি আপনি একটি স্ক্রিপ্ট দিয়ে আপনার গেমস শুরু করেন, তাহলে আপনি গেম বা এমুলেটর শুরু করা অংশটি সম্পাদনা করতে পারেন:

python3 light/lightgun/lightgun.py -t -B 30 "গেম শুরু করার কমান্ড"

তারপরে গেমটি চালানোর প্রথম 30 সেকেন্ডের সময় (অতএব -B 30 বিকল্প), আপনি 1+2 চেপে আপনার লাইটগানটি সংযুক্ত করতে পারেন।

যাইহোক, lightgun.py স্ক্রিপ্টটি Retroarch এর সাথে সাধারণ Wii রিমোট গেমিংয়ের জন্যও ব্যবহার করা যেতে পারে। শুধু -o বিকল্পটি যোগ করুন এবং লাইটগান ফাংশন বন্ধ হয়ে যাবে, এবং পরিবর্তে Wii রিমোট অনুভূমিকভাবে কাজ করবে, তিনটি বোতাম যথাক্রমে 1, 2 এবং B। Lightgun.py- এর ম্যাপিং-এ অন্যান্য Retroarch- সম্পর্কিত ফাংশন রয়েছে যা আপনি কোড পড়ে আবিষ্কার করবেন। উদাহরণস্বরূপ, বিয়োগ কী একটি শিফট হিসাবে কাজ করে, এবং dpad নিয়ন্ত্রণের সাথে সঞ্চয় এবং লোডিং নিয়ন্ত্রণ করে (আপ/ডাউন = পরিবর্তন নম্বর সংরক্ষণ; বাম = পুনরুদ্ধার; ডান = সংরক্ষণ)।

ধাপ 7: বন্দুক হ্যান্ডেল এবং লক্ষ্য

বন্দুক হ্যান্ডেল এবং লক্ষ্য
বন্দুক হ্যান্ডেল এবং লক্ষ্য
বন্দুক হ্যান্ডেল এবং লক্ষ্য
বন্দুক হ্যান্ডেল এবং লক্ষ্য
বন্দুক হ্যান্ডেল এবং লক্ষ্য
বন্দুক হ্যান্ডেল এবং লক্ষ্য

আপনি ওয়াই রিমোটকে নিজেই বন্দুক হিসাবে ব্যবহার করতে পারেন, উপরে বরাবর দেখতে পারেন। আপনি এর জন্য বাণিজ্যিক বন্দুকের একটি কিনতে পারেন। কিন্তু যেহেতু আসল Wii রিমোট একটি দৃষ্টিনন্দন বন্দুক হিসাবে ব্যবহার করতে সক্ষম ছিল না, তাই ক্যাসিংগুলি লোহার দর্শনগুলির সাথে আসে না এবং লোহার দর্শনগুলি নির্ভুলতার উন্নতি করে।

আমি একটি সাধারণ তিন-অংশ 3D- মুদ্রণযোগ্য সিস্টেম ডিজাইন করেছি: একটি স্লাইড-অন হ্যান্ডেল যা ট্রিগারের ঠিক পিছনে বসে আছে (তাই এটি দেখতে কিছুটা স্টার ট্রেক অরিজিনাল সিরিজ ফেজারের মত), এবং স্লাইড-অন দর্শনীয় স্থান। মুদ্রণযোগ্য ফাইলগুলি এখানে। যদি আপনি স্ক্র্যাপ কাঠের খরচে প্লাস্টিকে সঞ্চয় করতে চান, তাহলে আপনি যা করতে পারেন তা করতে পারেন এবং পুরো হ্যান্ডেলটি মুদ্রণ করার পরিবর্তে, ওয়াইমোট ধারণকারী অংশটি মুদ্রণ করুন এবং একটি কাঠের টুকরো কেটে তাতে স্ক্রু করুন।

দেখার জন্য, দর্শনীয় স্থানে আপনার চোখ ফোকাস করুন। সামনের দৃষ্টির ধাক্কাটি পিছনের দৃষ্টির ধাক্কাগুলির মধ্যে সারিবদ্ধ করুন যাতে উভয়টির বায়ু স্থান সমান হয় এবং তিনটি ধাক্কা সমানভাবে উঁচু থাকে। তারপরে লক্ষ্যগুলির মাঝখানে বাধাগুলির শীর্ষে সারিবদ্ধ করুন।

দ্রষ্টব্য: ধাক্কাগুলির উচ্চতা কিছুটা অসম, সামনের দৃষ্টির ধাক্কা কিছুটা কম, যাতে আপনি 2.5 মিটার (টিভি থেকে আমার দূরত্ব) এ তাদের সাথে দেখা হলে দৃষ্টিশক্তির উচ্চতার ক্ষতিপূরণ দিতে পারেন। যদি আপনার টিভিতে উল্লেখযোগ্যভাবে ভিন্ন দূরত্ব থাকে, তাহলে আপনি ওপেনস্যাড ফাইলগুলিতে এটি রাখতে পারেন। এই সমন্বয় প্রিন্টার সহনশীলতার নিচে হতে পারে, যাইহোক। এছাড়াও, যদি আপনি সফ্টওয়্যারে উল্লম্ব সমন্বয় না করেন তবে আপনি -8 (মিলিমিটারে) এর কাছাকাছি কিছুতে extraSightAdjust সেট করে সফটওয়্যারের দর্শনীয় স্থানে আরো কিছু সমন্বয় যোগ করতে পারেন।

ধাপ 8: ক্রমাঙ্কন III (alচ্ছিক): সূক্ষ্ম সমন্বয়

আপনি যদি আরো স্পষ্টতা চান, আপনি চালাতে পারেন:

python3 ~/lightgun/lightgun.py -d

(ডেমোর জন্য) এবং দর্শনীয় স্থানগুলি ক্রস-হেয়ারের সাথে সামঞ্জস্যপূর্ণ কিনা তা সাবধানে দেখুন। যদি তারা তা না করে, প্রস্থান করুন এবং ম্যানুয়ালি সম্পাদনা করুন উদাহরণস্বরূপ, আমার বন্দুকটি সামান্য ডানদিকে গুলি করছিল, তাই আমি x এর স্থানাঙ্কটি 529 থেকে 525 এ পরিবর্তন করেছি। প্রত্যেকের সংখ্যা সম্ভবত ভিন্ন হবে।

ধাপ 9: পরিশিষ্ট: অ্যালগরিদম

পরিশিষ্ট: অ্যালগরিদম
পরিশিষ্ট: অ্যালগরিদম

মাউস এমুলেশন কোড মোটামুটি নিম্নরূপ কাজ করে।

  • প্রক্রিয়া বোতাম টিপুন।
  • ক্যামেরা থেকে তথ্য পান এবং ক্যামেরা কেন্দ্রিক ক্রমাঙ্কনের জন্য সামঞ্জস্য করুন।
  • যদি ক্যামেরায় তিনটি LED এর কম দেখা যায়:

    শেষ মাউস অবস্থান রাখুন।

  • যদি তিন বা চারটি এলইডি দৃশ্যমান হয়:

    • Wiimote অ্যাক্সিলারোমিটার ডেটা ব্যবহার করুন Wiimote ওরিয়েন্টেশন পেতে এবং কোন LED ক্যামেরা ইমেজ কোন ভৌত LED এর সাথে মিলে যায় তা শনাক্ত করুন।
    • যদি চারটি এলইডি দৃশ্যমান হয়:

      • এলইডি ক্যামেরা ইমেজ এবং এলইডি লোকেশন (স্ক্রিন কোঅর্ডিনেটে) এর মধ্যে হোমোগ্রাফি গণনা করুন।
      • ক্যামেরার দৃশ্যের কেন্দ্রের সাথে কোন পর্দার অবস্থান মিলে যায় তা গণনা করতে হোমোগ্রাফি ব্যবহার করুন।
      • দৃষ্টি-রেখার নিচে ভার্চুয়াল বন্দুক ব্যারেলের কেন্দ্রের জন্য সামঞ্জস্য করতে Y- সমন্বয় করুন। এটি কিছুটা কুৎসিত অ্যালগরিদম কিন্তু এটি কাজ করে।
      • অ্যাডজাস্ট করা স্ক্রিন লোকেশনে মাউস পজিশন সেট করুন।
    • যদি তিনটি LED দেখা যায়:

      • LED ক্যামেরা ইমেজ এবং ভৌত LED অবস্থানের মধ্যে P3P সমস্যা সমাধানের জন্য OpenCV ব্যবহার করুন। এটি চারটি সমাধান তৈরি করে।
      • সফল হলে:

        • যদি আমাদের পূর্বের সফল লোকেশন হিসাব থাকে, তাহলে সেই সমাধানটি বেছে নিন যা অনুপস্থিত LED কে সেই LED এর শেষ পর্যবেক্ষণ বা গণিত অবস্থানের সবচেয়ে কাছাকাছি করে।
        • যদি আমাদের পূর্বের সফল লোকেশন হিসাব না থাকে, তাহলে এক্সেলরোমিটারের শিরোনামটি ভালভাবে ভবিষ্যদ্বাণী করা সমাধানটি বেছে নিন।
        • চতুর্থ এলইডি কোথায় যেতে হবে তা গণনা করার জন্য সর্বোত্তম সমাধানটি ব্যবহার করুন।
        • বাকি চারটি LED কেসের মতো করুন।
      • সফল না হলে:

        শেষ মাউস অবস্থান রাখুন।

প্রস্তাবিত: