সুচিপত্র:

এফটিসিতে ইভেন্ট-চালিত প্রোগ্রামিং: 4 টি ধাপ
এফটিসিতে ইভেন্ট-চালিত প্রোগ্রামিং: 4 টি ধাপ

ভিডিও: এফটিসিতে ইভেন্ট-চালিত প্রোগ্রামিং: 4 টি ধাপ

ভিডিও: এফটিসিতে ইভেন্ট-চালিত প্রোগ্রামিং: 4 টি ধাপ
ভিডিও: Visual Basic Programming | Class 11 | WBCHSE | Computer Application | 5th Chapter | Day-2 2024, জুলাই
Anonim
এফটিসিতে ইভেন্ট-চালিত প্রোগ্রামিং
এফটিসিতে ইভেন্ট-চালিত প্রোগ্রামিং

এই বছর, আমাদের টিম আমাদের রোবটের জন্য ইভেন্ট-চালিত সফটওয়্যার ডেভেলপমেন্ট নিয়ে অনেক কাজ করেছে। এই প্রোগ্রামগুলি দলকে সঠিকভাবে স্বায়ত্তশাসিত প্রোগ্রাম এবং এমনকি পুনরাবৃত্তিযোগ্য টেলি-অপ ইভেন্টগুলি বিকাশের অনুমতি দিয়েছে। যেহেতু সফটওয়্যারের কাজ এটির জন্য জটিল, তাই আমরা এফটিসি রোবটগুলির জন্য ইভেন্ট-চালিত কোড বিকাশে আমরা যে জ্ঞান অর্জন করেছি তা ভাগ করার সিদ্ধান্ত নিয়েছি।

ধাপ 1: ইভেন্ট-চালিত প্রোগ্রামিং কি?

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

আমাদের রোবটের জন্য প্রোগ্রাম তৈরির এই পদ্ধতির বেশ কয়েকটি সুবিধা রয়েছে:

  • এটি আমাদের সঠিক স্বায়ত্তশাসিত প্রোগ্রাম তৈরি করতে দেয়। যেহেতু আমরা ইভেন্ট চলাকালীন সময়ে রিয়েল-টাইমে সফটওয়্যার তৈরি করছি, তাই সংগ্রহ করা এবং ব্যবহৃত সেন্সরের মানগুলি খুব সঠিক হবে, কারণ সেগুলি আসল ইভেন্ট থেকে সরাসরি আসে।
  • এটি আমাদের দ্রুত স্বায়ত্তশাসিত প্রোগ্রাম তৈরি করতে দেয়। স্বায়ত্তশাসিত প্রোগ্রাম তৈরি করা ইভেন্টগুলির একটি সিরিজ রেকর্ড করা এবং ইভেন্টটি প্রয়োজনীয় হিসাবে সামঞ্জস্য করার মতো সহজ।
  • এটি আমাদের টেলি-অপের জন্য স্বয়ংক্রিয় প্রক্রিয়া তৈরি করতে দেয়। টেলি-অপ-এ বারবার কাজ করার জন্য, ইভেন্ট-চালিত প্রোগ্রামিং আমাদের এই ক্রিয়াগুলি রেকর্ড করতে এবং ম্যাচের ড্রাইভার-নিয়ন্ত্রিত সময়কালে একটি বোতামে ইভেন্ট বরাদ্দ করতে দেয়। এই অটোমেটেড ইভেন্টগুলি সেন্সর দ্বারা প্রভাবিত হতে পারে যাতে তাদের সঠিক এক্সিকিউশন করা যায়।

পদক্ষেপ 2: ইভেন্ট-চালিত প্রোগ্রামিং এর লজিক প্রবাহ

ইভেন্ট-চালিত প্রোগ্রামিং এর লজিক ফ্লো
ইভেন্ট-চালিত প্রোগ্রামিং এর লজিক ফ্লো

নিম্নলিখিতটি একটি ইভেন্ট-চালিত প্রোগ্রামের যৌক্তিক প্রবাহকে চিত্রিত করে: লাল একটি ইভেন্টের সৃষ্টিকে চিত্রিত করে এবং নীলটি ইভেন্টের আহ্বানকে চিত্রিত করে। একটি ইভেন্ট তৈরির জন্য, ইনপুটগুলির একটি ক্রম রোবট অ্যাকশনের মাধ্যমে নেওয়া হয় এবং ইভেন্ট হিসাবে রেকর্ড করা হয়; এই ঘটনাগুলি একটি ফাইলে লেখা হয়। একটি ইভেন্ট কল করার জন্য, সেই ফাইলটি পড়া হয়, এবং ইনপুটগুলি একটি ইভেন্ট প্রসেসরের কাছে পাঠানো হয় যাতে ফাইল কোডটি রোবট অ্যাকশনে পরিণত হয়।

ধাপ 3: ইভেন্ট নির্মাতা

ইভেন্ট নির্মাতা
ইভেন্ট নির্মাতা
ইভেন্ট নির্মাতা
ইভেন্ট নির্মাতা

ইভেন্ট নির্মাতারা বিভিন্ন সেন্সর এবং বোতামের উপর ভিত্তি করে ক্রিয়া বা "ইভেন্ট" নথিভুক্ত করতে ব্যবহৃত হয়। রোবট যেমন মাঠে কাজ করে, একটি ইভেন্ট নির্মাতা শ্রেণী প্রতিটি কর্মের জন্য সমান্তরালভাবে ইভেন্ট তৈরি করছে, ইভেন্ট ক্লাসে শ্রেণীবদ্ধ ইভেন্টের উল্লেখ করে। তৈরি হওয়ার পরে, ইভেন্টগুলিকে ইভেন্ট ক্লাসে ইভেন্টের সারিতে রাখা হয়: প্রথম ইভেন্টটি শীর্ষস্থান নেয়, তারপর দ্বিতীয় ইভেন্টটি শীর্ষস্থান নেয় এবং এর অধীনে যে কোনও ইভেন্টকে ধাক্কা দেয় এবং প্রোগ্রামটি বন্ধ না হওয়া পর্যন্ত এটি চলতে থাকে। যখন প্রোগ্রামটি বন্ধ হয়ে যায়, ইভেন্টগুলি একটি মানুষের পাঠযোগ্য ফরম্যাট ফাইলে চলে যায়, যেমন একটি JSON ফাইল। এই ফাইলটি স্বায়ত্তশাসিত রুটিনগুলিকে আরও উন্নত করতে ব্যবহার করা যেতে পারে।

উপরের উদাহরণ কোডটি ইভেন্টের জন্য প্যারামিটার সেট করে, যা এই ক্ষেত্রে একটি IMU সেন্সর ব্যবহার করে একটি পালা। আমরা তারপর ইভেন্ট সারিতে ইভেন্ট সারি। অবশেষে, আমরা ইভেন্টটি কেটে ফেলি, যা মূলত ইভেন্টটি রিসেট করছে যাতে আমরা এটি ভবিষ্যতের ইভেন্টের সারিতে ব্যবহার করতে পারি।

ধাপ 4: ইভেন্ট প্রসেসর

ইভেন্ট প্রসেসর
ইভেন্ট প্রসেসর
ইভেন্ট প্রসেসর
ইভেন্ট প্রসেসর

ইভেন্ট ক্লাসগুলি ইভেন্ট ক্রিয়েটর ক্লাসে উত্পাদিত মানব-পঠনযোগ্য ফাইলটি গ্রহণ করে এবং প্রতিটি ইভেন্ট সারিবদ্ধভাবে ইভেন্ট প্রসেসর ক্লাসে বর্ণিত পদ্ধতিগুলি কল করে যা করতে বলে তা করে। ইভেন্ট প্রসেসর ক্লাস তারপর রোবটকে বলে কোন ইভেন্টটি আবার চালানো হবে। এটি একটি সহজ "ড্রাইভ ফরওয়ার্ড" ইভেন্ট বা দূরত্ব, মোড় এবং স্ট্রাফে পূর্ণ একটি জটিল ইভেন্ট হোক না কেন, প্রসেসর এটিকে প্রদত্ত যে কোনও ইভেন্ট রিপ্লে করবে। এই প্রক্রিয়াটি স্বায়ত্তশাসনের সময় খুবই উপযোগী, যেহেতু একটি দল মিলে যাওয়ার আগে সেন্সর এবং টেলি-অপ ক্রিয়া রেকর্ড করতে পারে, তারপর কেবল স্বায়ত্তশাসনে ইভেন্টগুলি পুনরায় চালানো যায়। এই প্রক্রিয়াটিকে মেমরি রিপ্লে বলা হয়। এটি একটি স্বায়ত্তশাসিত প্রোগ্রামকে একটি একক ফাইলের মাধ্যমে 100% কনফিগারযোগ্য করতে দেয়। ইভেন্ট নির্মাতা এবং প্রসেসর প্রতিষ্ঠিত হয়ে গেলে, একটি দল সহজেই মানুষের পাঠযোগ্য ফাইলের মাধ্যমে স্বায়ত্তশাসিত রুটিন পরিবর্তন করতে পারে।

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

প্রস্তাবিত: