পাঠ ৩: লক্ষ্যে একটি ডিস্ক স্থাপনের জন্য সেন্সর এবং তড়িৎচুম্বক ব্যবহার করা
প্রকল্পে দূরত্ব সেন্সর যুক্ত করা হচ্ছে
দ্বিতীয় পাঠে, ভিআর রোবটটি ডিস্ক থেকে নামানোর জন্য উল্টো দিকে গাড়ি চালিয়ে শুরুর দিকে ফিরে গিয়েছিল। এর জন্য ব্যবহারকারীকে ভিআর রোবটটির ভ্রমণের সঠিক দূরত্ব গণনা করতে হয়েছিল। এটা সবসময় সম্ভব নাও হতে পারে। পরিবর্তে, ভিআর রোবট রিপোর্ট করা সেন্সর মান ব্যবহার করে ধারাবাহিক নির্ভুলতার সাথে ডিস্কগুলি তুলে এবং ফেলে দিতে পারে।
এই পাঠে, দূরত্ব সেন্সর ব্যবহার করে লক্ষ্যে ফিরে আসার সময় VR রোবট কোথায় গাড়ি চালানো বন্ধ করবে তা নির্ধারণ করা হবে। এই সেন্সরটিget_distance কমান্ড ব্যবহার করে VR রোবটের সামনের দিক থেকে নিকটতম বস্তুর দূরত্ব রিপোর্ট করে। ভিআর রোবটকে লক্ষ্যে ফিরিয়ে আনার জন্য দূরত্ব সেন্সর ব্যবহার করতে নিম্নলিখিতগুলি ঘটতে হবে:
- ভিআর রোবটটিকে ১৮০ ডিগ্রি ঘুরতে হবে যাতে দূরত্ব সেন্সর লক্ষ্যের দিকে মুখ করে থাকে। VR রোবট সঠিক শিরোনামে ঘুরছে কিনা তা নিশ্চিত করতে turn_to_heading কমান্ড ব্যবহার করা যেতে পারে।
- ভিআর রোবটটি খেলার মাঠের পিছনের দেয়ালের সাথে দূরত্ব সেন্সর ব্যবহার করবে যাতে ডিস্কটি কোথায় ফেলতে হবে তা নির্ধারণ করা যায়।
- ভিআর রোবট লক্ষ্যে গাড়ি চালাবে।

আপনার তথ্যের জন্য
turn_to_heading কমান্ডটি Gyro সেন্সর ব্যবহার করে VR রোবটকে একটি নির্দিষ্ট শিরোনামে পরিণত করে। VR রোবট যে দিকে ঘুরবে (বাম বা ডানে) তা জাইরো সেন্সরের বর্তমান শিরোনামের উপর ভিত্তি করে নির্ধারিত হয়। 
turn_to_headingকমান্ডটি VR রোবটকে একটি নির্দিষ্ট শিরোনামে নির্দেশ করতে ব্যবহৃত হয়, VR রোবটের অবস্থান নির্বিশেষে। আপনি একটি ডিস্ক বাছাই বা ফেলে দেওয়ার সাথে সাথে VR রোবটটি অবশ্যই ছিটকে যেতে পারে। turn_to_heading কমান্ড ব্যবহার করলে নিশ্চিত হয় যে VR রোবট পূর্ববর্তী শিরোনামের তুলনায় কোনও অবস্থানের পরিবর্তে পরম অবস্থানে ঘুরবে।

প্রকল্পটি নির্মাণ চালিয়ে যান
- Unit8Lesson3প্রকল্পে কাজ চালিয়ে যান।
-
তৃতীয় মন্তব্যের পরে একটি turn_to_heading কমান্ড যোগ করুন। প্যারামিটারটি ১৮০ ডিগ্রিতে সেট করুন, যাতে প্রকল্পটি এখন এরকম দেখায়:
ডিফল্ট মেইন(): #১. প্রথম ডিস্কে ড্রাইভ করুন যখন down_eye.near_object() নয়: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() # 2। প্রথম ডিস্ক magnet.energize(BOOST) # 3 তুলে নাও। লক্ষ্যে গাড়ি চালান ড্রাইভট্রেন। টার্ন_টু_হেডিং(১৮০, ডিগ্রি) # ৪। গোলের মধ্যে ডিস্কটি ফেলে দাও। -
এখন যেহেতু VR রোবট লক্ষ্যের দিকে স্থির হয়েছে, VR রোবটকে লক্ষ্যে ফিরে যেতে হবে। turn_to_heading কমান্ডের নিচে একটিwhile লুপ যোগ করুন, তাহলে প্রকল্পের তৃতীয় অংশটি এরকম দেখাবে:
# 3। লক্ষ্যে গাড়ি চালান ড্রাইভট্রেন। টার্ন_টু_হেডিং(১৮০, ডিগ্রি) while শর্ত: অপেক্ষা (৫, MSEC) - লক্ষ্যে ফিরে যাওয়ার জন্য, VR রোবট দূরত্ব সেন্সর থেকে ডেটা ব্যবহার করবে কখন VR রোবট লক্ষ্যের ভিতরে আছে। আগের পাঠে আলোচনা করা হয়েছে, ডিস্ক মুভার প্লেগ্রাউন্ড এর প্রতিটি গ্রিড বর্গক্ষেত্রের পরিমাপ 200 মিলিমিটার (মিমি) বাই 200 মিলিমিটার (মিমি)।

-
এই পরিমাপগুলি ব্যবহার করে, লক্ষ্যের কেন্দ্রটি খেলার মাঠের প্রাচীর থেকে প্রায় 200 মিলিমিটার (মিমি) হতে নির্ধারণ করা যেতে পারে।

-
VR রোবটটি ড্রাইভ করবে যখন দূরত্ব সেন্সররিপোর্ট করবে যে VR রোবটটি খেলার মাঠের দেয়াল থেকে 200 মিলিমিটার (মিমি) এর বেশি দূরে অবস্থিত। মিলিমিটার (মিমি) প্যারামিটার সহ get_distance কমান্ডে while লুপের শর্ত সেট করুন। তারপর তুলনা অপারেটরটিকে (>) 200 এর চেয়ে বড় করে যোগ করুন। প্রকল্পের তৃতীয় অংশটি এখন এইরকম দেখাবে:
# 3। লক্ষ্যে গাড়ি চালান ড্রাইভট্রেন.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: অপেক্ষা করুন(5, MSEC) -
এই while লুপে একটি ড্রাইভকমান্ড যোগ করুন, তাহলে প্রকল্পের তৃতীয় অংশটি এরকম দেখাবে। এটি VR রোবটকে এগিয়ে যাওয়ার নির্দেশ দেবে যখন দূরত্ব সেন্সর 200 মিলিমিটার (মিমি) এর বেশি দূরত্বের প্রতিবেদন করবে।
# 3। লক্ষ্যে গাড়ি চালান ড্রাইভট্রেন.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: ড্রাইভট্রেন.drive(FORWARD) wait(5, MSEC) -
একবার VR রোবট লক্ষ্যে পৌঁছে গেলে (দেয়াল থেকে 200 মিমি), VR রোবটটিকে গাড়ি চালানো বন্ধ করতে হবে। while লুপের বাইরে একটি stopকমান্ড যোগ করুন, তাহলে প্রকল্পের তৃতীয় অংশটি এরকম দেখাবে:
# 3। লক্ষ্যে গাড়ি চালান drivetrain.turn_to_heading(180, DEGREES) while front_distance.get_distance(MM) > 200: drivetrain.drive(FORWARD) wait(5, MSEC) drivetrain.stop() -
এখন যে VR রোবট গোলে থেমে গেছে, এটি ডিস্ক ফেলে দিতে পারে। চতুর্থ মন্তব্যের নিচে একটি energize কমান্ড যোগ করুন এবং প্যারামিটারটি 'DROP' এ সেট করুন। প্রকল্পের চতুর্থ অংশটি এখন এইরকম দেখাবে:
# 4। গোল magnet.energize(DROP) এ ডিস্কটি ফেলে দিন। -
ভিআর রোবটটিকে কোনো ডিস্কের সাথে ছিটকে যাওয়া বা সংঘর্ষ এড়াতে অল্প দূরত্বের বিপরীতে গাড়ি চালাতে হবে। একটি ডিস্কের সাথে সংঘর্ষের ফলে VR রোবটটি অবশ্যই বন্ধ হয়ে যেতে পারে। VR রোবটটিকে তখন ঘুরতে হবে যাতে এটি আবার ডিস্কের মুখোমুখি হয়। দেখানো হিসাবে চূড়ান্ত energize কমান্ডের পরে নিম্নলিখিত কমান্ডগুলি যোগ করুন, যাতে VR রোবটটি 100 মিলিমিটার (মিমি) বিপরীত দিকে গাড়ি চালাতে এবং 0 ডিগ্রি শিরোনামে ফিরে যেতে পারে। আপনার প্রকল্পে কমান্ডগুলি সঠিকভাবে ইন্ডেন্ট করা আছে কিনা তা নিশ্চিত করুন।
# 4। গোল magnet.energize(DROP) drivetrain.drive_for(REVERSE, 100, MM) drivetrain.turn_to_heading(0, DEGREES) এ ডিস্কটি ফেলে দিন - ডিস্ক মুভার প্লেগ্রাউন্ড খুলুন যদি এটি ইতিমধ্যে খোলা না থাকে এবং প্রকল্পটি চালান।
-
ভিআর রোবটটি এগিয়ে যায়, প্রথম ডিস্কটি তুলে নেয়, তারপর লক্ষ্যের মুখোমুখি হতে 180 ডিগ্রির শিরোনামে ঘুরে। VR রোবট তখন দূরত্ব সেন্সর থেকে মানগুলি ব্যবহার করে কখন ড্রাইভিং বন্ধ করতে হবে এবং ডিস্ক ফেলে দেবে তা নির্ধারণ করতে।

লক্ষ্যে প্রথম ডিস্ক ড্রপ করার জন্য প্রজেক্ট ফ্লো
লক্ষ্য করুন কিভাবে প্রকল্পের এই অংশে দূরত্ব সেন্সরের সাথে while লুপ কাজ করে।
- ভিআর রোবটটি এগিয়ে যাবেদূরত্বদেয়াল থেকে ২০০ মিলিমিটারের বেশি দূরে থাকবে।
- যখন দূরত্ব সেন্সর সনাক্ত করে যে খেলার মাঠের দেয়াল ২০০ মিলিমিটার (মিমি) এর কম দূরে, তখন প্রকল্পটি ওয়াইল্ডলুপের বাইরে পরবর্তী কমান্ডে চলে যাবে এবং ভিআর রোবটটি গাড়ি চালানো বন্ধ করে দেবে।
- প্রকল্পটি অব্যাহত থাকবে, লক্ষ্যে ডিস্কটি ফেলে দেওয়ার জন্য ইলেক্ট্রোম্যাগনেটকে শক্তি যোগানো।
- তারপরে ভিআর রোবটটি বিপরীত হবে এবং পরবর্তী ডিস্কের মুখোমুখি হওয়ার জন্য 180 ডিগ্রি ঘুরবে।
এই পাঠের বাকি অংশটি চালিয়ে যেতে পরবর্তী বোতামটি নির্বাচন করুন।