অধ্যায় 4: প্রতিযোগিতার প্রস্তুতি
পাঠ ২: ব্লক প্রতিযোগিতার টেমপ্লেট ব্যবহার করা
নমস্কার এবং VEX ক্লাসরুমে স্বাগতম। আমার নাম লরেন, এবং এই পাঠে, আমরা ব্লক প্রতিযোগিতার টেমপ্লেট ব্যবহার করে আলোচনা করব। আগের পাঠে, আমরা প্রতিযোগিতার টেমপ্লেট সম্পর্কে আরও সাধারণভাবে কথা বলেছিলাম এবং কেন VEX রোবোটিক্স প্রতিযোগিতার সময় এটি ব্যবহার করা উচিত তা নিয়ে আলোচনা করেছি। আপনি কোন প্রোগ্রামিং ভাষা ব্যবহার করছেন তার উপর নির্ভর করে প্রতিযোগিতা টেমপ্লেটের বিভিন্ন সংস্করণ রয়েছে, ব্লক কিনা বা টেক্সট কিনা। এই নির্দিষ্ট ভিডিওতে, যেহেতু এই কোর্সে আমরা ব্লকের উপর ফোকাস করছি, আমি VEXcode V5-এ ব্লক প্রতিযোগিতার টেমপ্লেটটি নিয়ে আলোচনা করব।
এখন, সবকিছুতে ডুব দেওয়ার আগে, প্রথমে উপকরণগুলি সম্পর্কে কথা বলা যাক। আমি এখানে অ্যাডভান্সড ট্রেনিংবট ব্যবহার করব যাতে আমি আর্ম অ্যান্ড ক্ল এর কিছু কার্যকারিতা দেখাতে পারি। এই প্রতিযোগিতার টেমপ্লেটটি দেখানোর জন্য আমি একটি কন্ট্রোলার, একটি গেম অবজেক্ট পিস এবং VEXcode V5 ব্যবহার করব। এই ভিডিওটির জন্য আপনার কোনও উপকরণের প্রয়োজন নেই। আমি শুধু তোমার জন্য কিছু বিক্ষোভ দেখাবো। তাহলে আবারও বলছি, এই বিশেষ পাঠের জন্য আপনার আর কিছুর প্রয়োজন নেই।
এই পাঠের উদ্দেশ্য সম্পর্কে কথা বলা যাক। আমরা ব্লক প্রতিযোগিতা টেমপ্লেটের বিভিন্ন অংশ, আরও সুনির্দিষ্টভাবে, তিনটি অংশ নিয়ে আলোচনা করব: কখন শুরু হয়েছিল, যা আমাদের প্রাক-স্বায়ত্তশাসিত, স্বায়ত্তশাসিত অংশ এবং ড্রাইভার নিয়ন্ত্রণ অংশ। আমি এখানে যে উদাহরণ কোডটি ব্যবহার করেছি সেগুলি সম্পর্কে কথা বলব, এবং তারপর আমরা এটি পরীক্ষা করব এবং আমাদের কন্ট্রোলার ব্যবহার করে আমাদের রোবটের কার্যকারিতা দেখব, প্রতিযোগিতা টেমপ্লেটটি কীভাবে কাজ করে তা দেখতে।
তা বলে, চলুন এগিয়ে যাই এবং আমাদের প্রকল্পের উদাহরণে ডুব দেই।
[সঙ্গীত সংকেত]
ঠিক আছে, প্রতিযোগিতার টেমপ্লেট দেখতে, আমি ফাইল, উদাহরণ খুলুন, টেমপ্লেট এবং তারপর প্রতিযোগিতার টেমপ্লেট-এ যাব। এখানে কয়েকটা জিনিস। এক নম্বর, আবার, এই তিনটি বিভাগ। আমার বিশেষ উদাহরণ দিয়ে এই বিষয়গুলো আলোচনা করার আগে আমি একটি বিষয় লক্ষ্য করতে চাই, এগুলো পূরণ করার আগে আমাদের প্রথমেই যা করতে হবে তা হলো এখানে আমাদের ডিভাইস কনফিগারেশন যোগ করা। তাহলে আবার, যদি আপনি ২-মোটর ড্রাইভট্রেন ব্যবহার করেন অথবা আপনার আর্ম বা ক্ল মোটর বা এই জাতীয় কিছু থাকে, তাহলে প্রথমে আপনাকে নিশ্চিত করতে হবে যে আপনি সেগুলি যোগ করেছেন যাতে ব্লকগুলি বাম দিকে জমা হয়। এটি আপনাকে আবার এই বিভাগগুলি পূরণ করতে দেবে।
প্রতিযোগিতার টেমপ্লেটটি খোলার সাথে সাথেই আমাকে নিশ্চিত করতে হবে যে আমি আমার ডিভাইসের কনফিগারেশন যোগ করেছি। এরপর, আমি যে জিনিসটি উল্লেখ করতে চাই তা হল এই ড্রাইভার কন্ট্রোল অংশে, আপনি দেখতে পাচ্ছেন যে ফরএভার ব্লকটি সেখানে রয়েছে। এর কারণ হলো, বেশিরভাগ সময় ড্রাইভার কন্ট্রোল অংশে, যখন আমরা কন্ট্রোলার ব্যবহার করি, তখন আমরা ক্রমাগত পরীক্ষা করে দেখতে চাই যে বোতাম টিপানো হচ্ছে কিনা বা জয়স্টিক সরানো হচ্ছে কিনা। তাই ডিফল্টরূপে সেখানে ফরএভার ব্লক থাকে। যদি আপনি কোনও বিশেষ কারণে এটি অপসারণ করতে চান, তাহলে আপনি তা করতে পারেন, অথবা যদি আপনি সেই স্ট্যাকটি ব্যবহার না করেন এবং আপনি কেবল ডিভাইস কনফিগারেশন ব্যবহার করেন, তাহলে আপনি এটিকে যেমন আছে তেমনই রেখে দিতে পারেন।
ঠিক আছে। আসুন আমি যে উদাহরণটি তৈরি করেছি তার সাহায্যে এই তিনটি বিভাগের প্রতিটি এবং তাদের প্রকৃত অর্থ কী তা একবার দেখে নেওয়া যাক।
[সঙ্গীত সংকেত]
শুরুতেই, আমি উল্লেখ করতে চাই যে আমাদের প্রতিযোগিতার টেমপ্লেটের তিনটি প্রধান অংশ রয়েছে। প্রথমটি হল কখন শুরু হয়েছিল অথবা প্রাক-স্বায়ত্তশাসিত। দ্বিতীয়টি হল When autonomous বা স্বায়ত্তশাসিত অংশ, এবং তৃতীয়টি হল When Driver Control বা ড্রাইভার নিয়ন্ত্রণ অংশ। এই তিনটি ইভেন্ট বা হ্যাট ব্লকই আবার এই প্রতিযোগিতার টেমপ্লেটের বিভিন্ন অংশ সম্পাদন করে।
আসুন প্রতিটি বিভাগ সম্পর্কে কথা বলি। প্রতিযোগিতা টেমপ্লেট প্রকল্পটি চালানোর সাথে সাথে প্রাক-স্বায়ত্তশাসিত অংশ বা কখন শুরু হবে তা কার্যকর হবে। যেকোনো ইনিশিয়ালাইজেশন সেট করার জন্য এটি সবচেয়ে ভালোভাবে ব্যবহার করা হয়।
এই পাঠে আমার সাথে যোগ দেওয়ার জন্য আপনাকে ধন্যবাদ। আশা করি তুমি এটি সহায়ক এবং তথ্যবহুল বলে মনে করেছ। যদি আপনার কোন প্রশ্ন থাকে, তাহলে নির্দ্বিধায় যোগাযোগ করুন। আপনার VEX রোবোটিক্স প্রকল্পগুলির জন্য শুভ কোডিং এবং শুভকামনা!
তাই যদি আমার স্বায়ত্তশাসিত অংশ শুরু হওয়ার আগে মস্তিষ্কের পর্দায় কিছু প্রিন্ট করার প্রয়োজন হয়, যদি আমাকে একটি গাইরো ক্যালিব্রেট করতে হয়, যদি আমি এই নির্দিষ্ট উদাহরণে ডেটা প্রিন্ট করতে চাই, যেহেতু আমি বাহু এবং নখর ব্যবহার করছি, তাই আমি তাদের মোটরগুলিকে ধরে রাখার জন্য সেট করব। এর মানে হল, যদি আমি আমার হাত উপরে তুলি অথবা আমার নখর খুলি, তাহলে মোটরগুলি সেই নির্দিষ্ট অবস্থানেই থাকবে এবং মাধ্যাকর্ষণ শক্তির কারণে নীচে নামবে না, উদাহরণস্বরূপ। তাই আমি আমার মোটরগুলির জন্য এই প্রাক-স্বায়ত্তশাসিত ধারণাগুলি সেট করছি। এই নির্দিষ্ট উদাহরণে, আমরা দেখব যে যখন আমরা প্রদর্শনটি দেখব তখন এটি কেমন দেখাবে।
সঙ্গীত সংকেত
এখন যেহেতু আমার কাছে ওটা আছে, সেটা হলো "কখন শুরু হয়েছিল" আমাদের প্রাক-স্বায়ত্তশাসিত অংশ। এরপর আমাদের স্বায়ত্তশাসিত অংশ। ম্যাচের অটোনোমাস অংশটি ১৫ সেকেন্ড দীর্ঘ হবে এবং কোডের এই নির্দিষ্ট অংশটি ম্যাচের অটোনোমাস অংশের জন্য চলবে। প্রতিযোগিতার টেমপ্লেটটি চালানোর সাথে সাথেই, প্রাক-স্বায়ত্তশাসিত "যখন শুরু হবে" অংশটি যাই হোক না কেন শুরু হবে। তারপর ১৫ সেকেন্ডের অটোনোমাস চলবে। আমরা ফিল্ড কন্ট্রোল সিস্টেম সম্পর্কে কথা বলেছি এবং কীভাবে এটি নিয়ন্ত্রণ করবে যখন সমস্ত রোবট শুরু হবে এবং যখন এই নির্দিষ্ট অংশটি খেলায় চলবে তখন থামবে, এই কোডের লাইনটি চলবে।
এখন, আমার এখানে দেওয়া নির্দিষ্ট উদাহরণের জন্য, আমাদের রোবটটি নখর মধ্যে একটি গেম অবজেক্ট দিয়ে শুরু করবে। এরপর এটি বস্তুটির চারপাশে ঘোরে, বাতাসে উপরে উঠে, ২০০ মিলিমিটার এগিয়ে যাবে, হাতটি নীচে নামিয়ে দেবে এবং আমাদের খেলার বস্তুটিকে নীচে নামিয়ে দেবে। উদাহরণস্বরূপ, এটি ম্যাচের শুরুতে একটি টুকরো স্কোর করার অনুকরণ করতে পারে। তাহলে আমার স্বায়ত্তশাসিত অংশের সময় এটাই ঘটবে। আবার, স্বায়ত্তশাসিত অংশের অর্থ হল আমার রোবটের উপর কন্ট্রোলার প্রভাবের কারণে আমার কোনও ড্রাইভার নিয়ন্ত্রণ থাকতে পারে না। এই সময়কালে, সবকিছুই স্বায়ত্তশাসিত। সবকিছু কোডের মাধ্যমে করা হয়।
এই তৃতীয় অংশটা দেখে নিলে, আমার ড্রাইভার কন্ট্রোল আছে। এখন, আমি একটি বিষয় উল্লেখ করতে চাই যে আমাদের ডিভাইস কনফিগারেশনে, আমি স্পষ্টতই আমার ড্রাইভট্রেন কনফিগার করতে পারি এবং একটি কন্ট্রোলার কনফিগার করতে পারি, যার অর্থ হল আমি আমার জয়স্টিকগুলিতে বিভিন্ন ড্রাইভট্রেন কনফিগারেশন বরাদ্দ করতে পারি এবং বিভিন্ন মোটর নিয়ন্ত্রণ করার জন্য আমি বিভিন্ন বোতামও বরাদ্দ করতে পারি। যাইহোক, ধরা যাক আমার কন্ট্রোলারের বোতাম ফুরিয়ে গেছে অথবা আমার কাছে বিভিন্ন জিনিস আছে যা আমি ম্যানিপুলেট করতে চাই। আমি এই "When Driver Control" ইভেন্টে কিছু জিনিস ব্লক করতে পারি যা আমি করতে চাই, হয়তো ডিভাইস কনফিগারেশনে আমার অ্যাক্সেস নেই, অথবা হয়তো আমি আমার ড্রাইভট্রেনের গতি সেট করতে চাই, অথবা এই জাতীয় জিনিস।
তাই এখানে আবার আমার নির্দিষ্ট কোড উদাহরণ, ড্রাইভার কন্ট্রোল অংশের জন্য, এটি আমাকে আমার কন্ট্রোলারের একটি বোতাম দিয়ে আমার ক্ল নিয়ন্ত্রণ করতে দেবে। আমরা দেখব এটা কেমন দেখাচ্ছে। তাই আবার, যখন আমি ড্রাইভার কন্ট্রোল অংশ ব্যবহার করি, তখন আমি একই সাথে কন্ট্রোলারের সাথে ডিভাইস কনফিগারেশন এবং ড্রাইভার কন্ট্রোল অংশ উভয়ই ব্যবহার করতে পারি। অথবা আমি যেকোনো একটি ব্যবহার করতে পারি। যদি আপনি এই তিনটি স্ট্যাকের কোনটিই ব্যবহার না করেন, প্রাক-স্বায়ত্তশাসিত "শুরু হওয়ার সময়", স্বায়ত্তশাসিত, অথবা ড্রাইভার নিয়ন্ত্রণ, আপনি এগুলি খালি রাখতে পারেন।
সঙ্গীত সংকেত
ঠিক আছে। এখন সব বলা হয়েছে, আসুন একবার দেখে নেওয়া যাক যখন আমি আসলে এটি আমার রোবটে চালাবো তখন এটি কেমন দেখাবে। ঠিক আছে। আসলে, আমার কন্ট্রোলারে এটি একবার দেখে নেওয়া যাক। আমি প্রোগ্রামগুলিতে নেভিগেট করতে পারি এবং সেখানে আমার কম্পিটিশন টেমপ্লেট প্রকল্পটি দেখতে পাই যা আমি ইতিমধ্যেই আমার মস্তিষ্কে ডাউনলোড করেছি। আর যদি আমি একটার উপর স্ক্রল করি, তাহলে টাইমড রানের জন্য একটা অপশন আছে। এটি সেই ক্ষেত্র নিয়ন্ত্রণ ব্যবস্থার অনুকরণ করবে যার কথা আমি আগে বলেছিলাম, কীভাবে সবকিছু সেই ক্ষেত্র নিয়ন্ত্রণ ব্যবস্থা দ্বারা নিয়ন্ত্রিত হয়। তাই যখন প্রতিযোগিতা প্রকল্পটি আসলে শুরু হয় তখন এটি দ্বারা নিয়ন্ত্রিত হয়, যখন ম্যাচের স্বায়ত্তশাসিত অংশটি এটি দ্বারা নিয়ন্ত্রিত হয়, এবং যখন ড্রাইভার নিয়ন্ত্রণ অংশটি এটি দ্বারা নিয়ন্ত্রিত হয়, তখন আমি কন্ট্রোলারের এই টাইমড রান ব্যবহার করে এটি অনুকরণ করতে পারি।
ধন্যবাদ নোট
আমার সাথে এই প্রক্রিয়াটি অন্বেষণ করার জন্য সময় দেওয়ার জন্য আপনাকে ধন্যবাদ। আমি আশা করি এই প্রদর্শনীটি সহায়ক হয়েছে।
চূড়ান্ত বার্তা
আপনার যদি কোনও প্রশ্ন থাকে বা আরও স্পষ্টীকরণের প্রয়োজন হয় তবে নির্দ্বিধায় যোগাযোগ করুন। তোমার রোবোটিক্স প্রকল্পের জন্য শুভকামনা এবং শুভকামনা!
তাহলে যদি আমি এটি নির্বাচন করি এবং এটি আমাকে এখানে স্বায়ত্তশাসিত অংশের জন্য 15 সেকেন্ড, ড্রাইভার কন্ট্রোলের জন্য এক মিনিট, 45 সেকেন্ড বলবে। আর যখন আমি আবার এই বোতামটি টিপবো, তখন এটি আসলে শুরু হবে। যখন আমি এটা শুরু করবো, তখন এটা ৩-২-১ গণনা করবে, ঠিক যেমনটা তুমি একটা ম্যাচে করো। আর তারপর আমরা শুরু করতে যাচ্ছি।
তাই আমি যখনই start এ ক্লিক করবো, তখনই autonomous অংশটি চালু হবে, অথবা pre-autonomous অংশটি প্রথমে শুরু হবে, যাই হোক না কেন। তারপর এটি অবিলম্বে সেই স্বায়ত্তশাসিত অংশটি শুরু করবে। তাই আমি আপনাকে দেখাবো যখনই এটি স্বায়ত্তশাসিত অংশটি করা শুরু করবে। এমনকি যদি আমি আমার কন্ট্রোলারটি রোবটটি সরানোর জন্য সরিয়ে ফেলি, তবুও এটি নড়বে না কারণ আবার, স্বায়ত্তশাসিত অংশের সময়, আমি কন্ট্রোলার ব্যবহার করে আমার রোবটটি নিয়ন্ত্রণ করতে পারি না।
[সঙ্গীত সংকেত]
তাহলে আসুন দেখি সেই নির্দিষ্ট অংশটি আসলে কী ঘটে। ঠিক আছে, এবার চলুন। ঠিক আছে। এখন, স্বায়ত্তশাসিত অংশে আমার এখনও কয়েক সেকেন্ড বাকি আছে। তুমি দেখতে পাচ্ছো যখন আমি আমার কন্ট্রোলারটি সরাচ্ছি, তখনও কিছুই হচ্ছে না কারণ আমি অটোনোমাস অংশের সময় কন্ট্রোলার ব্যবহার করে আমার রোবটটি নিয়ন্ত্রণ করতে পারছি না। কিন্তু যখনই এটি ড্রাইভার কন্ট্রোলে চলে যাবে, এখন আমি আসলে আমার রোবটটি নিয়ন্ত্রণ করতে পারব।
তাই আমি এখানে এগিয়ে যাব কারণ মনে রাখবেন আমাদের ড্রাইভার কন্ট্রোল অংশের জন্য প্রকল্পে আসার সময়, আমি এই বিভিন্ন অংশগুলি নিয়ন্ত্রণ করতে পারি। তাহলে আমার কাছে এক মিনিট ২৫ সেকেন্ড বাকি আছে। আমি এখন গাড়ি চালাতে যাচ্ছি, ড্রাইভার কনফিগারেশনের উপর ভিত্তি করে, এটি ড্রাইভট্রেন নিয়ন্ত্রণ করে, এটি বাহু নিয়ন্ত্রণ করে, এই বোতামটি ক্ল নিয়ন্ত্রণ করে। এক বোতাম টিপলেই আমি জিনিসপত্র ধরতে পারব। আমি এখানে দুটি বোতাম টিপে হাত উঁচু করতে এবং নামাতে পারি। নখর নিয়ন্ত্রণ করার জন্য একটি বোতাম। বন্ধ, খোলা।
এখন, ডিভাইস কনফিগারেশনে এটি একটি বিকল্প নয়, তাই আমাকে সেই কোডটি কাস্টম তৈরি করতে হয়েছিল, ঠিক এই কারণেই আমি সেখানে ড্রাইভার কন্ট্রোল ইভেন্ট ব্লক ব্যবহার করেছি যা আপনি সেই নির্দিষ্ট স্ট্যাকে দেখতে পাচ্ছেন। আমার ড্রাইভার কন্ট্রোল অংশের বাকি অংশের জন্য এটি কাউন্ট ডাউন হতে থাকবে। কিন্তু তুমি সেখানে দেখতে পাচ্ছ, আমি এটা বন্ধ করব। ড্রাইভার কন্ট্রোল অংশটি শেষ হয়ে গেলে, সবকিছু বন্ধ হয়ে যায় এবং ম্যাচের জন্য এখানেই শেষ।
আপনি টেমপ্লেটের তিনটি ভিন্ন অংশ দেখতে পাবেন। আবারও, আমরা প্রাক-স্বায়ত্তশাসিত অংশের শুরু অংশটি দেখি, এটি যে অংশেই থাকুক না কেন, চলবে না। যদি আমরা স্বায়ত্তশাসিত বা ড্রাইভার নিয়ন্ত্রণ করি, তাহলে আমরা স্বায়ত্তশাসিত অংশে প্রবেশ করি। যখন এটি ঘটছে তখন আমি আমার কন্ট্রোলার ব্যবহার করতে পারছি না। একবার এটি শেষ হয়ে গেলে, এটি ড্রাইভার কন্ট্রোল অংশে চলে যাবে যেখানে আমি আসলে কন্ট্রোলার ব্যবহার করে আমার রোবটটি নিয়ন্ত্রণ করতে পারব এবং এটি শেষ না হওয়া পর্যন্ত এক মিনিট ৪৫ সেকেন্ড চলবে। তারপর, যেমনটি আমি আগে উল্লেখ করেছি, ফিল্ড কন্ট্রোল সিস্টেম ব্যবহার করে, সমস্ত রোবট একই সময়ে শুরু হবে এবং বন্ধ হবে।
[সঙ্গীত সংকেত]
ঠিক আছে। এই ভিডিওতে আমরা যা যা আলোচনা করেছি, তার সংক্ষিপ্তসার দেওয়া যাক। আমরা ব্লক প্রতিযোগিতার টেমপ্লেটটি দেখেছি। তিনটি ভিন্ন অংশ আছে। যখন শুরু হবে, প্রাক-স্বায়ত্তশাসিত, যা নির্বিশেষে চলবে। এটি ভেরিয়েবল শুরু করার জন্য, হয়তো একটি গাইরো সেট আপ এবং ক্যালিব্রেট করার জন্য, মস্তিষ্কের পর্দার জন্য ধন্যবাদ প্রিন্ট করার জন্য, মোটর অবস্থান সেট করার জন্য যেমন ধরে রাখা বা এমনকি একটি নির্দিষ্ট অবস্থানে বাড়ানো। এই সবই ম্যাচের স্বায়ত্তশাসিত অংশের আগে করা হয়।
তারপর আমরা স্বায়ত্তশাসিত অংশে প্রবেশ করি, স্বায়ত্তশাসিত স্ট্যাক যা আমরা সেখানে দেখেছি, যেখানে ১৫ সেকেন্ডের জন্য রোবটটি সম্পূর্ণরূপে কোড অনুসারে চলে, কন্ট্রোলার বা ড্রাইভারের সাথে কোনও মিথস্ক্রিয়া হয় না। একবার সেই অংশটি সম্পন্ন হয়ে গেলে, আমরা ড্রাইভার কন্ট্রোল অংশে চলে যাই, যা ডিভাইস কনফিগারেশনের মাধ্যমে নিয়ন্ত্রণ করা যেতে পারে যা আমরা জয়স্টিক বোতামগুলিতে নির্দিষ্ট মোটর এবং জিনিসপত্র এবং কন্ট্রোলারের অনুরূপ জিনিসগুলি বরাদ্দ করার আগে দেখেছি এবং সেই নির্দিষ্ট স্ট্যাকের মাধ্যমেও নিয়ন্ত্রণ করা যেতে পারে যেখানে আমি আমার রোবটের জন্য আরও কিছুটা কাস্টম কোড করতে পারি। আপনি একটি অথবা অন্যটি অথবা উভয়ই ব্যবহার করতে পারেন।
এবং যেমনটি আমি আগে উল্লেখ করেছি, যদি আপনি আপনার প্রোগ্রাম জুড়ে এই তিনটি বিভাগের কোনওটি ব্যবহার না করেন, তাহলে আপনি ইভেন্ট ব্লকের স্ট্যাকগুলিও ফাঁকা রাখতে পারেন।
দেখার জন্য ধন্যবাদ এবং আশা করি এটি আপনাকে প্রতিযোগিতার টেমপ্লেটটি আরও ভালোভাবে বুঝতে সাহায্য করবে।
আবার, এই টেমপ্লেটটি ব্যবহারের কারণ হল একটি ম্যাচ চলাকালীন সমস্ত রোবট একই সময়ে শুরু এবং থামবে তা নিশ্চিত করা। কারণ মাঠে চারটি রোবট থাকবে, এবং আমরা আবারও নিশ্চিত করতে চাই যে, সমস্ত রোবট একই সময়ে শুরু হবে এবং থামবে।
আমি আশা করি প্রতিযোগিতার টেমপ্লেট সম্পর্কে জানতে এবং VEX রোবোটিক্স প্রতিযোগিতার ম্যাচে অংশগ্রহণের জন্য প্রস্তুত হতে এই সমস্ত তথ্য আপনার জন্য সহায়ক হবে। আমি খুব উত্তেজিত।
অভিনন্দন, তুমি চতুর্থ অধ্যায় শেষ করেছ, আর তোমার সাথে অন্য একটি ভিডিওতে দেখা হবে।
এখন, সবকিছুতে ডুব দেওয়ার আগে, প্রথমে উপকরণগুলি সম্পর্কে কথা বলা যাক। আমি এখানে অ্যাডভান্সড ট্রেনিংবট ব্যবহার করব যাতে আমি আর্ম অ্যান্ড ক্ল এর কিছু কার্যকারিতা দেখাতে পারি। এই প্রতিযোগিতার টেমপ্লেটটি দেখানোর জন্য আমি একটি কন্ট্রোলার, একটি গেম অবজেক্ট পিস এবং VEXcode V5 ব্যবহার করব। এই ভিডিওটির জন্য আপনার কোনও উপকরণের প্রয়োজন নেই। আমি শুধু তোমার জন্য কিছু বিক্ষোভ দেখাবো। তাহলে আবারও বলছি, এই বিশেষ পাঠের জন্য আপনার আর কিছুর প্রয়োজন নেই।
এই পাঠের উদ্দেশ্য সম্পর্কে কথা বলা যাক। আমরা ব্লক প্রতিযোগিতা টেমপ্লেটের বিভিন্ন অংশ, আরও সুনির্দিষ্টভাবে, তিনটি অংশ নিয়ে আলোচনা করব: কখন শুরু হয়েছিল, যা আমাদের প্রাক-স্বায়ত্তশাসিত, স্বায়ত্তশাসিত অংশ এবং ড্রাইভার নিয়ন্ত্রণ অংশ। আমি এখানে যে উদাহরণ কোডটি ব্যবহার করেছি সেগুলি সম্পর্কে কথা বলব, এবং তারপর আমরা এটি পরীক্ষা করব এবং আমাদের কন্ট্রোলার ব্যবহার করে আমাদের রোবটের কার্যকারিতা দেখব, প্রতিযোগিতা টেমপ্লেটটি কীভাবে কাজ করে তা দেখতে।
তা বলে, চলুন এগিয়ে যাই এবং আমাদের প্রকল্পের উদাহরণে ডুব দেই।
[সঙ্গীত সংকেত]
ঠিক আছে, প্রতিযোগিতার টেমপ্লেট দেখতে, আমি ফাইল, উদাহরণ খুলুন, টেমপ্লেট এবং তারপর প্রতিযোগিতার টেমপ্লেট-এ যাব। এখানে কয়েকটা জিনিস। এক নম্বর, আবার, এই তিনটি বিভাগ। আমার বিশেষ উদাহরণ দিয়ে এই বিষয়গুলো আলোচনা করার আগে আমি একটি বিষয় লক্ষ্য করতে চাই, এগুলো পূরণ করার আগে আমাদের প্রথমেই যা করতে হবে তা হলো এখানে আমাদের ডিভাইস কনফিগারেশন যোগ করা। তাহলে আবার, যদি আপনি ২-মোটর ড্রাইভট্রেন ব্যবহার করেন অথবা আপনার আর্ম বা ক্ল মোটর বা এই জাতীয় কিছু থাকে, তাহলে প্রথমে আপনাকে নিশ্চিত করতে হবে যে আপনি সেগুলি যোগ করেছেন যাতে ব্লকগুলি বাম দিকে জমা হয়। এটি আপনাকে আবার এই বিভাগগুলি পূরণ করতে দেবে।
প্রতিযোগিতার টেমপ্লেটটি খোলার সাথে সাথেই আমাকে নিশ্চিত করতে হবে যে আমি আমার ডিভাইসের কনফিগারেশন যোগ করেছি। এরপর, আমি যে জিনিসটি উল্লেখ করতে চাই তা হল এই ড্রাইভার কন্ট্রোল অংশে, আপনি দেখতে পাচ্ছেন যে ফরএভার ব্লকটি সেখানে রয়েছে। এর কারণ হলো, বেশিরভাগ সময় ড্রাইভার কন্ট্রোল অংশে, যখন আমরা কন্ট্রোলার ব্যবহার করি, তখন আমরা ক্রমাগত পরীক্ষা করে দেখতে চাই যে বোতাম টিপানো হচ্ছে কিনা বা জয়স্টিক সরানো হচ্ছে কিনা। তাই ডিফল্টরূপে সেখানে ফরএভার ব্লক থাকে। যদি আপনি কোনও বিশেষ কারণে এটি অপসারণ করতে চান, তাহলে আপনি তা করতে পারেন, অথবা যদি আপনি সেই স্ট্যাকটি ব্যবহার না করেন এবং আপনি কেবল ডিভাইস কনফিগারেশন ব্যবহার করেন, তাহলে আপনি এটিকে যেমন আছে তেমনই রেখে দিতে পারেন।
ঠিক আছে। আসুন আমি যে উদাহরণটি তৈরি করেছি তার সাহায্যে এই তিনটি বিভাগের প্রতিটি এবং তাদের প্রকৃত অর্থ কী তা একবার দেখে নেওয়া যাক।
[সঙ্গীত সংকেত]
শুরুতেই, আমি উল্লেখ করতে চাই যে আমাদের প্রতিযোগিতার টেমপ্লেটের তিনটি প্রধান অংশ রয়েছে। প্রথমটি হল কখন শুরু হয়েছিল অথবা প্রাক-স্বায়ত্তশাসিত। দ্বিতীয়টি হল When autonomous বা স্বায়ত্তশাসিত অংশ, এবং তৃতীয়টি হল When Driver Control বা ড্রাইভার নিয়ন্ত্রণ অংশ। এই তিনটি ইভেন্ট বা হ্যাট ব্লকই আবার এই প্রতিযোগিতার টেমপ্লেটের বিভিন্ন অংশ সম্পাদন করে।
আসুন প্রতিটি বিভাগ সম্পর্কে কথা বলি। প্রতিযোগিতা টেমপ্লেট প্রকল্পটি চালানোর সাথে সাথে প্রাক-স্বায়ত্তশাসিত অংশ বা কখন শুরু হবে তা কার্যকর হবে। যেকোনো ইনিশিয়ালাইজেশন সেট করার জন্য এটি সবচেয়ে ভালোভাবে ব্যবহার করা হয়।
এই পাঠে আমার সাথে যোগ দেওয়ার জন্য আপনাকে ধন্যবাদ। আশা করি তুমি এটি সহায়ক এবং তথ্যবহুল বলে মনে করেছ। যদি আপনার কোন প্রশ্ন থাকে, তাহলে নির্দ্বিধায় যোগাযোগ করুন। আপনার VEX রোবোটিক্স প্রকল্পগুলির জন্য শুভ কোডিং এবং শুভকামনা!
তাই যদি আমার স্বায়ত্তশাসিত অংশ শুরু হওয়ার আগে মস্তিষ্কের পর্দায় কিছু প্রিন্ট করার প্রয়োজন হয়, যদি আমাকে একটি গাইরো ক্যালিব্রেট করতে হয়, যদি আমি এই নির্দিষ্ট উদাহরণে ডেটা প্রিন্ট করতে চাই, যেহেতু আমি বাহু এবং নখর ব্যবহার করছি, তাই আমি তাদের মোটরগুলিকে ধরে রাখার জন্য সেট করব। এর মানে হল, যদি আমি আমার হাত উপরে তুলি অথবা আমার নখর খুলি, তাহলে মোটরগুলি সেই নির্দিষ্ট অবস্থানেই থাকবে এবং মাধ্যাকর্ষণ শক্তির কারণে নীচে নামবে না, উদাহরণস্বরূপ। তাই আমি আমার মোটরগুলির জন্য এই প্রাক-স্বায়ত্তশাসিত ধারণাগুলি সেট করছি। এই নির্দিষ্ট উদাহরণে, আমরা দেখব যে যখন আমরা প্রদর্শনটি দেখব তখন এটি কেমন দেখাবে।
সঙ্গীত সংকেত
এখন যেহেতু আমার কাছে ওটা আছে, সেটা হলো "কখন শুরু হয়েছিল" আমাদের প্রাক-স্বায়ত্তশাসিত অংশ। এরপর আমাদের স্বায়ত্তশাসিত অংশ। ম্যাচের অটোনোমাস অংশটি ১৫ সেকেন্ড দীর্ঘ হবে এবং কোডের এই নির্দিষ্ট অংশটি ম্যাচের অটোনোমাস অংশের জন্য চলবে। প্রতিযোগিতার টেমপ্লেটটি চালানোর সাথে সাথেই, প্রাক-স্বায়ত্তশাসিত "যখন শুরু হবে" অংশটি যাই হোক না কেন শুরু হবে। তারপর ১৫ সেকেন্ডের অটোনোমাস চলবে। আমরা ফিল্ড কন্ট্রোল সিস্টেম সম্পর্কে কথা বলেছি এবং কীভাবে এটি নিয়ন্ত্রণ করবে যখন সমস্ত রোবট শুরু হবে এবং যখন এই নির্দিষ্ট অংশটি খেলায় চলবে তখন থামবে, এই কোডের লাইনটি চলবে।
এখন, আমার এখানে দেওয়া নির্দিষ্ট উদাহরণের জন্য, আমাদের রোবটটি নখর মধ্যে একটি গেম অবজেক্ট দিয়ে শুরু করবে। এরপর এটি বস্তুটির চারপাশে ঘোরে, বাতাসে উপরে উঠে, ২০০ মিলিমিটার এগিয়ে যাবে, হাতটি নীচে নামিয়ে দেবে এবং আমাদের খেলার বস্তুটিকে নীচে নামিয়ে দেবে। উদাহরণস্বরূপ, এটি ম্যাচের শুরুতে একটি টুকরো স্কোর করার অনুকরণ করতে পারে। তাহলে আমার স্বায়ত্তশাসিত অংশের সময় এটাই ঘটবে। আবার, স্বায়ত্তশাসিত অংশের অর্থ হল আমার রোবটের উপর কন্ট্রোলার প্রভাবের কারণে আমার কোনও ড্রাইভার নিয়ন্ত্রণ থাকতে পারে না। এই সময়কালে, সবকিছুই স্বায়ত্তশাসিত। সবকিছু কোডের মাধ্যমে করা হয়।
এই তৃতীয় অংশটা দেখে নিলে, আমার ড্রাইভার কন্ট্রোল আছে। এখন, আমি একটি বিষয় উল্লেখ করতে চাই যে আমাদের ডিভাইস কনফিগারেশনে, আমি স্পষ্টতই আমার ড্রাইভট্রেন কনফিগার করতে পারি এবং একটি কন্ট্রোলার কনফিগার করতে পারি, যার অর্থ হল আমি আমার জয়স্টিকগুলিতে বিভিন্ন ড্রাইভট্রেন কনফিগারেশন বরাদ্দ করতে পারি এবং বিভিন্ন মোটর নিয়ন্ত্রণ করার জন্য আমি বিভিন্ন বোতামও বরাদ্দ করতে পারি। যাইহোক, ধরা যাক আমার কন্ট্রোলারের বোতাম ফুরিয়ে গেছে অথবা আমার কাছে বিভিন্ন জিনিস আছে যা আমি ম্যানিপুলেট করতে চাই। আমি এই "When Driver Control" ইভেন্টে কিছু জিনিস ব্লক করতে পারি যা আমি করতে চাই, হয়তো ডিভাইস কনফিগারেশনে আমার অ্যাক্সেস নেই, অথবা হয়তো আমি আমার ড্রাইভট্রেনের গতি সেট করতে চাই, অথবা এই জাতীয় জিনিস।
তাই এখানে আবার আমার নির্দিষ্ট কোড উদাহরণ, ড্রাইভার কন্ট্রোল অংশের জন্য, এটি আমাকে আমার কন্ট্রোলারের একটি বোতাম দিয়ে আমার ক্ল নিয়ন্ত্রণ করতে দেবে। আমরা দেখব এটা কেমন দেখাচ্ছে। তাই আবার, যখন আমি ড্রাইভার কন্ট্রোল অংশ ব্যবহার করি, তখন আমি একই সাথে কন্ট্রোলারের সাথে ডিভাইস কনফিগারেশন এবং ড্রাইভার কন্ট্রোল অংশ উভয়ই ব্যবহার করতে পারি। অথবা আমি যেকোনো একটি ব্যবহার করতে পারি। যদি আপনি এই তিনটি স্ট্যাকের কোনটিই ব্যবহার না করেন, প্রাক-স্বায়ত্তশাসিত "শুরু হওয়ার সময়", স্বায়ত্তশাসিত, অথবা ড্রাইভার নিয়ন্ত্রণ, আপনি এগুলি খালি রাখতে পারেন।
সঙ্গীত সংকেত
ঠিক আছে। এখন সব বলা হয়েছে, আসুন একবার দেখে নেওয়া যাক যখন আমি আসলে এটি আমার রোবটে চালাবো তখন এটি কেমন দেখাবে। ঠিক আছে। আসলে, আমার কন্ট্রোলারে এটি একবার দেখে নেওয়া যাক। আমি প্রোগ্রামগুলিতে নেভিগেট করতে পারি এবং সেখানে আমার কম্পিটিশন টেমপ্লেট প্রকল্পটি দেখতে পাই যা আমি ইতিমধ্যেই আমার মস্তিষ্কে ডাউনলোড করেছি। আর যদি আমি একটার উপর স্ক্রল করি, তাহলে টাইমড রানের জন্য একটা অপশন আছে। এটি সেই ক্ষেত্র নিয়ন্ত্রণ ব্যবস্থার অনুকরণ করবে যার কথা আমি আগে বলেছিলাম, কীভাবে সবকিছু সেই ক্ষেত্র নিয়ন্ত্রণ ব্যবস্থা দ্বারা নিয়ন্ত্রিত হয়। তাই যখন প্রতিযোগিতা প্রকল্পটি আসলে শুরু হয় তখন এটি দ্বারা নিয়ন্ত্রিত হয়, যখন ম্যাচের স্বায়ত্তশাসিত অংশটি এটি দ্বারা নিয়ন্ত্রিত হয়, এবং যখন ড্রাইভার নিয়ন্ত্রণ অংশটি এটি দ্বারা নিয়ন্ত্রিত হয়, তখন আমি কন্ট্রোলারের এই টাইমড রান ব্যবহার করে এটি অনুকরণ করতে পারি।
ধন্যবাদ নোট
আমার সাথে এই প্রক্রিয়াটি অন্বেষণ করার জন্য সময় দেওয়ার জন্য আপনাকে ধন্যবাদ। আমি আশা করি এই প্রদর্শনীটি সহায়ক হয়েছে।
চূড়ান্ত বার্তা
আপনার যদি কোনও প্রশ্ন থাকে বা আরও স্পষ্টীকরণের প্রয়োজন হয় তবে নির্দ্বিধায় যোগাযোগ করুন। তোমার রোবোটিক্স প্রকল্পের জন্য শুভকামনা এবং শুভকামনা!
তাহলে যদি আমি এটি নির্বাচন করি এবং এটি আমাকে এখানে স্বায়ত্তশাসিত অংশের জন্য 15 সেকেন্ড, ড্রাইভার কন্ট্রোলের জন্য এক মিনিট, 45 সেকেন্ড বলবে। আর যখন আমি আবার এই বোতামটি টিপবো, তখন এটি আসলে শুরু হবে। যখন আমি এটা শুরু করবো, তখন এটা ৩-২-১ গণনা করবে, ঠিক যেমনটা তুমি একটা ম্যাচে করো। আর তারপর আমরা শুরু করতে যাচ্ছি।
তাই আমি যখনই start এ ক্লিক করবো, তখনই autonomous অংশটি চালু হবে, অথবা pre-autonomous অংশটি প্রথমে শুরু হবে, যাই হোক না কেন। তারপর এটি অবিলম্বে সেই স্বায়ত্তশাসিত অংশটি শুরু করবে। তাই আমি আপনাকে দেখাবো যখনই এটি স্বায়ত্তশাসিত অংশটি করা শুরু করবে। এমনকি যদি আমি আমার কন্ট্রোলারটি রোবটটি সরানোর জন্য সরিয়ে ফেলি, তবুও এটি নড়বে না কারণ আবার, স্বায়ত্তশাসিত অংশের সময়, আমি কন্ট্রোলার ব্যবহার করে আমার রোবটটি নিয়ন্ত্রণ করতে পারি না।
[সঙ্গীত সংকেত]
তাহলে আসুন দেখি সেই নির্দিষ্ট অংশটি আসলে কী ঘটে। ঠিক আছে, এবার চলুন। ঠিক আছে। এখন, স্বায়ত্তশাসিত অংশে আমার এখনও কয়েক সেকেন্ড বাকি আছে। তুমি দেখতে পাচ্ছো যখন আমি আমার কন্ট্রোলারটি সরাচ্ছি, তখনও কিছুই হচ্ছে না কারণ আমি অটোনোমাস অংশের সময় কন্ট্রোলার ব্যবহার করে আমার রোবটটি নিয়ন্ত্রণ করতে পারছি না। কিন্তু যখনই এটি ড্রাইভার কন্ট্রোলে চলে যাবে, এখন আমি আসলে আমার রোবটটি নিয়ন্ত্রণ করতে পারব।
তাই আমি এখানে এগিয়ে যাব কারণ মনে রাখবেন আমাদের ড্রাইভার কন্ট্রোল অংশের জন্য প্রকল্পে আসার সময়, আমি এই বিভিন্ন অংশগুলি নিয়ন্ত্রণ করতে পারি। তাহলে আমার কাছে এক মিনিট ২৫ সেকেন্ড বাকি আছে। আমি এখন গাড়ি চালাতে যাচ্ছি, ড্রাইভার কনফিগারেশনের উপর ভিত্তি করে, এটি ড্রাইভট্রেন নিয়ন্ত্রণ করে, এটি বাহু নিয়ন্ত্রণ করে, এই বোতামটি ক্ল নিয়ন্ত্রণ করে। এক বোতাম টিপলেই আমি জিনিসপত্র ধরতে পারব। আমি এখানে দুটি বোতাম টিপে হাত উঁচু করতে এবং নামাতে পারি। নখর নিয়ন্ত্রণ করার জন্য একটি বোতাম। বন্ধ, খোলা।
এখন, ডিভাইস কনফিগারেশনে এটি একটি বিকল্প নয়, তাই আমাকে সেই কোডটি কাস্টম তৈরি করতে হয়েছিল, ঠিক এই কারণেই আমি সেখানে ড্রাইভার কন্ট্রোল ইভেন্ট ব্লক ব্যবহার করেছি যা আপনি সেই নির্দিষ্ট স্ট্যাকে দেখতে পাচ্ছেন। আমার ড্রাইভার কন্ট্রোল অংশের বাকি অংশের জন্য এটি কাউন্ট ডাউন হতে থাকবে। কিন্তু তুমি সেখানে দেখতে পাচ্ছ, আমি এটা বন্ধ করব। ড্রাইভার কন্ট্রোল অংশটি শেষ হয়ে গেলে, সবকিছু বন্ধ হয়ে যায় এবং ম্যাচের জন্য এখানেই শেষ।
আপনি টেমপ্লেটের তিনটি ভিন্ন অংশ দেখতে পাবেন। আবারও, আমরা প্রাক-স্বায়ত্তশাসিত অংশের শুরু অংশটি দেখি, এটি যে অংশেই থাকুক না কেন, চলবে না। যদি আমরা স্বায়ত্তশাসিত বা ড্রাইভার নিয়ন্ত্রণ করি, তাহলে আমরা স্বায়ত্তশাসিত অংশে প্রবেশ করি। যখন এটি ঘটছে তখন আমি আমার কন্ট্রোলার ব্যবহার করতে পারছি না। একবার এটি শেষ হয়ে গেলে, এটি ড্রাইভার কন্ট্রোল অংশে চলে যাবে যেখানে আমি আসলে কন্ট্রোলার ব্যবহার করে আমার রোবটটি নিয়ন্ত্রণ করতে পারব এবং এটি শেষ না হওয়া পর্যন্ত এক মিনিট ৪৫ সেকেন্ড চলবে। তারপর, যেমনটি আমি আগে উল্লেখ করেছি, ফিল্ড কন্ট্রোল সিস্টেম ব্যবহার করে, সমস্ত রোবট একই সময়ে শুরু হবে এবং বন্ধ হবে।
[সঙ্গীত সংকেত]
ঠিক আছে। এই ভিডিওতে আমরা যা যা আলোচনা করেছি, তার সংক্ষিপ্তসার দেওয়া যাক। আমরা ব্লক প্রতিযোগিতার টেমপ্লেটটি দেখেছি। তিনটি ভিন্ন অংশ আছে। যখন শুরু হবে, প্রাক-স্বায়ত্তশাসিত, যা নির্বিশেষে চলবে। এটি ভেরিয়েবল শুরু করার জন্য, হয়তো একটি গাইরো সেট আপ এবং ক্যালিব্রেট করার জন্য, মস্তিষ্কের পর্দার জন্য ধন্যবাদ প্রিন্ট করার জন্য, মোটর অবস্থান সেট করার জন্য যেমন ধরে রাখা বা এমনকি একটি নির্দিষ্ট অবস্থানে বাড়ানো। এই সবই ম্যাচের স্বায়ত্তশাসিত অংশের আগে করা হয়।
তারপর আমরা স্বায়ত্তশাসিত অংশে প্রবেশ করি, স্বায়ত্তশাসিত স্ট্যাক যা আমরা সেখানে দেখেছি, যেখানে ১৫ সেকেন্ডের জন্য রোবটটি সম্পূর্ণরূপে কোড অনুসারে চলে, কন্ট্রোলার বা ড্রাইভারের সাথে কোনও মিথস্ক্রিয়া হয় না। একবার সেই অংশটি সম্পন্ন হয়ে গেলে, আমরা ড্রাইভার কন্ট্রোল অংশে চলে যাই, যা ডিভাইস কনফিগারেশনের মাধ্যমে নিয়ন্ত্রণ করা যেতে পারে যা আমরা জয়স্টিক বোতামগুলিতে নির্দিষ্ট মোটর এবং জিনিসপত্র এবং কন্ট্রোলারের অনুরূপ জিনিসগুলি বরাদ্দ করার আগে দেখেছি এবং সেই নির্দিষ্ট স্ট্যাকের মাধ্যমেও নিয়ন্ত্রণ করা যেতে পারে যেখানে আমি আমার রোবটের জন্য আরও কিছুটা কাস্টম কোড করতে পারি। আপনি একটি অথবা অন্যটি অথবা উভয়ই ব্যবহার করতে পারেন।
এবং যেমনটি আমি আগে উল্লেখ করেছি, যদি আপনি আপনার প্রোগ্রাম জুড়ে এই তিনটি বিভাগের কোনওটি ব্যবহার না করেন, তাহলে আপনি ইভেন্ট ব্লকের স্ট্যাকগুলিও ফাঁকা রাখতে পারেন।
দেখার জন্য ধন্যবাদ এবং আশা করি এটি আপনাকে প্রতিযোগিতার টেমপ্লেটটি আরও ভালোভাবে বুঝতে সাহায্য করবে।
আবার, এই টেমপ্লেটটি ব্যবহারের কারণ হল একটি ম্যাচ চলাকালীন সমস্ত রোবট একই সময়ে শুরু এবং থামবে তা নিশ্চিত করা। কারণ মাঠে চারটি রোবট থাকবে, এবং আমরা আবারও নিশ্চিত করতে চাই যে, সমস্ত রোবট একই সময়ে শুরু হবে এবং থামবে।
আমি আশা করি প্রতিযোগিতার টেমপ্লেট সম্পর্কে জানতে এবং VEX রোবোটিক্স প্রতিযোগিতার ম্যাচে অংশগ্রহণের জন্য প্রস্তুত হতে এই সমস্ত তথ্য আপনার জন্য সহায়ক হবে। আমি খুব উত্তেজিত।
অভিনন্দন, তুমি চতুর্থ অধ্যায় শেষ করেছ, আর তোমার সাথে অন্য একটি ভিডিওতে দেখা হবে।
Learning Objectives
Learning Objectives Section
- VEXcode V5-এ ব্লকস কম্পিটিশন টেমপ্লেটের প্রধান উপাদানগুলি সংজ্ঞায়িত করুন, যার মধ্যে রয়েছে কখন শুরু হবে, স্বায়ত্তশাসিত বিভাগ এবং ড্রাইভার নিয়ন্ত্রণ বিভাগ।
Summary
Summary Section
এটি VEX V5 প্রশিক্ষণ কোর্সের চতুর্থ অধ্যায়ের ভূমিকার দ্বিতীয় ভিডিও। যদি আপনি এখনও প্রথম ভিডিওটি না দেখে থাকেন, তাহলে ফিরে যান এবং পাঠ 1: একটি VEX রোবোটিক্স প্রতিযোগিতার মেকানিক্স ম্যাচদেখুন।
পাঠ ২-এ, আপনি VEXcode V5-এ ব্লক প্রতিযোগিতা টেমপ্লেটের তিনটি প্রধান উপাদান সম্পর্কে একটি উদাহরণ দেখে শিখবেন।
অভিনন্দন, আপনি VEX V5 প্রশিক্ষণ কোর্সের ভূমিকা সম্পন্ন করেছেন!