2-9- مفاهیم و معماری رآس

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

آیا واقعا نیاز به ارتباط پردازش متقابل در یک ربات هست؟ آیا می‌توانیم یک ربات را بدون آن برنامه­نویسی کنیم؟ در شکل 4-11 پاسخ به اولین سوال توضیح داده شده است.

شکل ‏4‑11: بلوک دیاگرام نوعی با حسگرها و عملگرها

یک ربات می‌تواند یک واحد محاسباتی و حسگرها و عملگرهای زیادی داشته باشد. چگونه می‌توانیم چندین عملگر را کنترل کرده و داده‌های چندین حسگر را پردازش کنیم؟ آیا می‌توانیم اینکار را در یک برنامه واحد انجام دهیم؟ بله، اما روش خوبی برای انجام اینکار نیست. راه بهتر این است که برای مدیریت داده‌های حسگر و کنترل عملگرها برنامه‌های مستقل بنویسیم؛ که در این صورت نیاز به تبادل اطلاعات بین این برنامه‌ها داریم و این جائی است که از رآس استفاده می­کنیم.

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

بیایید ببینیم ارتباط بین دو برنامه در رآس چگونه شکل می‌گیرد. شکل 4-12 بلوک دیاگرام اصلی رآس را نشان می‌دهد.

شکل ‏4‑12: بلوک دیاگرام ارتباطات رآس

شکل 4-12 دو برنامه که با گره 1 و گره 2 نامگذاری شده­اند را نشان می‌دهد. هنگامیکه هر یک از برنامه‌ها شروع می­شود، گره مربوطه با برنامه­ای از رآس به‌نام رآس master ارتباط برقرار می­کند. گره تمام اطلاعات از جمله نوع داده­های ارسالی و دریافتی خود را به ROS master ارسال می­کند. گره­هایی که داده‌ها را ارسال می‌کنند، گره‌های ناشر[84] و گره­هایی که داده‌ها را دریافت می‌کنند، گره‌های مشترک[85] نامیده می‌شوند. ROS master همه اطلاعات ناشرین و مشترکین در حال اجرا بر روی رایانه‌ را در بردارد. اگر گره 1 داده‌ی خاصی به‌نام “A” را ارسال کند و داده‌ای مشابه توسط گره 2 مورد نیاز باشد، ROS master اطلاعاتی به گره‌ها ارسال می‌کند تا بتوانند با یکدیگر ارتباط برقرار کنند.

گره‌های رآس می‌توانند انواع مختلف داده‌ها مانند عدد صحیح، اعشاری، رشته­ای و غیره را به یکدیگر ارسال کنند. داده‌های ارسالی پیام‌های[86] رآس نامیده می‌شود. در پیام‌های رآس می­توانیم داده­ای حاوی یک نوع داده یا داده­های چندگانه حاوی انواع مختلف داده را ارسال کنیم. پیام‌ها از طریق مسیر یا اتوبوس پیام به‌نام تاپیک­های[87] رآس ارسال می‌شود. هر تاپیک دارای نامی است؛ به عنوان مثال، یک تاپیک به‌نام “چتر” پیامی از نوع رشته را ارسال می‌کند.

هنگامیکه یک گره، تاپیکی را منتشر می‌کند؛ آن تایپیک را با یک پیام ارسال می‌کند که حاوی داده­ای متناسب با نوع پیام است.

در شکل 4-12 گره 1 و گره 2 تاپیک رآس را منتشر کرده و مشترک آن می­شوند. فرآیند زمانی شروع می‌شود که ROS master جزئیات گره­ها را بین­شان تبادل می­کند.

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

[84] Publisher nodes

[85] Subscriber nodes

[86] Ros messages

[87] ROS topics