فهرست مطالب:

برنامه نویسی مبتنی بر رویداد در FTC: 4 مرحله
برنامه نویسی مبتنی بر رویداد در FTC: 4 مرحله

تصویری: برنامه نویسی مبتنی بر رویداد در FTC: 4 مرحله

تصویری: برنامه نویسی مبتنی بر رویداد در FTC: 4 مرحله
تصویری: آموزش مثال محور | Event Sourcing | برنامه نویسی مبتنی بر رویداد 2024, نوامبر
Anonim
برنامه نویسی مبتنی بر رویداد در FTC
برنامه نویسی مبتنی بر رویداد در FTC

امسال ، تیم ما کارهای زیادی را با توسعه نرم افزار رویداد محور برای ربات ما انجام داده است. این برنامه ها به تیم این امکان را می دهد که برنامه های خود مختار و حتی رویدادهای دورکاری را تکرار کند. از آنجا که کار نرم افزاری مورد نیاز آن پیچیده است ، تصمیم گرفتیم دانش به دست آمده در زمینه توسعه کد رویداد محور برای روبات های FTC را به اشتراک بگذاریم.

مرحله 1: برنامه نویسی مبتنی بر رویداد چیست؟

به طور کلی ، برنامه نویسی مبتنی بر رویداد ، به گفته Techopedia ، توسعه برنامه هایی است که به ورودی کاربر پاسخ می دهند. به این معنا ، بسیاری از برنامه ها بر اساس رویدادها در نظر گرفته می شوند ، از جمله برنامه tele-op یک تیم ، که برای انجام هر اقدامی به ورودی های کنترل کننده توسط انسان متکی است. با این حال ، از نظر کارهایی که تیم ما انجام داده است ، برنامه نویسی مبتنی بر رویداد در مورد ایجاد نرم افزار از ورودی های مختلف است. به عبارت دیگر ، ما رویدادها را بر اساس ورودی کنترلرها و حسگرها مستند می کنیم ، سپس می توانیم این رویدادها را در صف قرار دهیم و از فایل برای تکرار مجدد رویداد ضبط شده استفاده کنیم.

این روش توسعه برنامه ها برای ربات ما دارای چندین مزیت است:

  • این به ما امکان می دهد برنامه های مستقل دقیق ایجاد کنیم. از آنجا که ما در حال ایجاد نرم افزار در زمان واقعی در حین رویداد هستیم ، مقادیر سنسور جمع آوری شده و مورد استفاده بسیار دقیق خواهند بود ، زیرا مستقیماً از رویداد اصلی ناشی می شوند.
  • این به ما امکان می دهد برنامه های خودکار را به سرعت ایجاد کنیم. ساخت برنامه های خودمختار به سادگی ثبت یک سری رویدادها و تنظیم رویداد در صورت لزوم است.
  • این به ما امکان می دهد فرآیندهای خودکار برای tele-op ایجاد کنیم. برای اقدامات مکرر در tele-op ، برنامه نویسی مبتنی بر رویداد به ما امکان می دهد این اقدامات را ضبط کرده و در طول دوره های مسابقات تحت کنترل راننده ، رویداد را به یک دکمه اختصاص دهیم. این رویدادهای خودکار می توانند تحت تأثیر سنسورها قرار گیرند تا امکان اجرای دقیق آنها فراهم شود.

مرحله 2: جریان منطقی برنامه نویسی رویداد محور

جریان منطقی برنامه نویسی رویداد محور
جریان منطقی برنامه نویسی رویداد محور

موارد زیر جریان منطقی یک برنامه رویداد محور را به تصویر می کشد: قرمز خلق یک رویداد و آبی رنگ فراخواندن رویداد را به تصویر می کشد. برای ایجاد یک رویداد ، دنباله ای از ورودی ها از طریق عمل ربات گرفته شده و به عنوان رویداد ثبت می شود. این رویدادها روی یک فایل نوشته می شوند. برای فراخوانی یک رویداد ، آن فایل خوانده می شود و ورودی ها به پردازنده رویداد ارسال می شوند تا کد فایل را به عملکرد روبات تبدیل کند.

مرحله 3: ایجاد کننده رویداد

خالق رویداد
خالق رویداد
خالق رویداد
خالق رویداد

سازندگان رویداد برای مستند کردن اقدامات یا "رویدادها" بر اساس انواع حسگرها و دکمه ها استفاده می شوند. همانطور که ربات اقداماتی را در میدان انجام می دهد ، یک کلاس خالق رویداد برای هر یک از این اقدامات به طور موازی رویدادهایی ایجاد می کند و به رویداد طبقه بندی شده در یک کلاس رویداد اشاره می کند. پس از ایجاد ، رویداد در صف رویدادها در کلاس رویدادها قرار می گیرد: اولین رویداد رتبه برتر را می گیرد ، سپس رویداد دوم جایگاه برتر را می گیرد و هر رویدادی را زیر آن فشار می دهد ، و این تا زمان توقف برنامه ادامه می یابد. وقتی برنامه متوقف می شود ، رویدادها به یک فایل با فرمت قابل خواندن برای انسان ، مانند یک فایل JSON ، منتقل می شوند. از این فایل می توان برای بهبود بهتر روالهای خودکار استفاده کرد.

کد مثال بالا پارامترهای رویداد را تنظیم می کند ، که در این حالت یک نوبت با استفاده از سنسور IMU است. سپس ما رویداد را در صف رویداد قرار می دهیم. در نهایت ، ما رویداد را کوتاه می کنیم ، که در اصل تنظیم مجدد رویداد است تا بتوانیم از آن برای صف بندی رویدادهای آینده استفاده کنیم.

مرحله 4: پردازنده رویداد

پردازنده رویداد
پردازنده رویداد
پردازنده رویداد
پردازنده رویداد

کلاسهای رویداد فایل قابل خواندن توسط انسان را که در کلاس پدیدآورنده رویداد تولید شده است می گیرند و هر چیزی که در نوبت قرار داده شده است را با فراخوانی روشهایی که در کلاس پردازنده رویداد مشخص شده است انجام می دهد. سپس کلاس پردازنده رویداد به ربات می گوید که چه رویدادی را دوباره پخش کند. اعم از رویداد ساده "حرکت رو به جلو" یا یک رویداد پیچیده پر از فاصله ، پیچ و خم ، پردازنده هر رویدادی را که به آن داده می شود بازپخش می کند. این فرآیند در حالت خودمختار بسیار مفید است ، زیرا یک تیم می تواند سنسورها و اقدامات Tele-Op را قبل از مطابقت ضبط کرده و سپس به سادگی وقایع را به صورت خودکار پخش کند. این فرایند Memory Replay نام دارد. این اجازه می دهد تا یک برنامه خودمختار از طریق یک فایل 100 قابل تنظیم باشد. هنگامی که خالق رویداد و پردازنده مشخص شد ، یک تیم می تواند به سادگی روالهای خودکار را از طریق فایل قابل خواندن توسط انسان تغییر دهد.

مثال بالا ابتدا با بررسی پرونده JSON برای یک رویداد شروع می شود ، و سپس آن رویداد را با استفاده از دستور case بررسی می کند تا ببیند که این رویداد چیست ، در این حالت چرخش با استفاده از سنسور IMU. هنگامی که می تواند بگوید که نوبت استفاده از رویداد IMU است ، سپس با پردازش رویداد سروکار دارد ، که معمولاً شامل اجرای کدی است که رویداد از متغیرهای رویداد به دست آورده است ، که برای تکرار رویداد قبلی ارسال شده است.

توصیه شده: