فریمورک ROS یک مجموعه نرم افزارها و محیط توسعه کد برای ربات است کمک میکند تا ربات را بصورت ماژولار با زبانهای برنامهنویسی مختلف توسعه داده شود همچنین محیط های شبیه سازی همانند گزبو، turtlesim و گراف های نموداری براحتی امکان بررسی سریع پروژه و دیباگ آن را برای توسعه دهنده فراهم میکند. برخلاف اسمش سیستم عامل(OS) نیست.این فریمورک در بیشتر پروژه های رباتیک بزرگ راه پیدا کرده است نمونه آن در 1 سپتامبر 2014، ناسا اولین روباتی را که ROS را در فضا اجرا می کند، معرفی کرد؛Robotnaut 2 که در ایستگاه فضایی بین المللی مورد استفاده قرار گرفت.
پس اگر به دنیای رباتیک علاقه دارید بهترین گزینه برای ورود به آن یادگیری این فریمورک شگفت انگیز و توانمند است.
درک ROS و کار با آن ابتدا برای اکثر کاربران مشکل است همانطور که برای خودم رخ داد و تا به تسلط نسبی برسیم نیاز به تمرین و آموزش دارد پس صبور باشید و با ما در آموزش که سعی میشود جامع و با زبان ساده باشد همراه باشید!
گزارش معروفی از رسانه بلومبرگ درباره تاریخچه تولد ROS و قابلیت های آن در اینترنت وجود دارد که با زیرنویس فارسی در ویدئو زیر مشاهده کنید به درک شما از ین پلتفرم و فلسفه آن آشنا خواهید شد:
1) مدیریت منابع سیستم
2) شبیه سازی و مصور سازی اجزا مختلف ربات
3) قابلیت توسعه کد بصورت ماژولار و درک آن برای افراد دیگر
4) کدنویسی اجزا مختلف بصورت موازی و به زبان های برنامه نویسی مختلف
برای مثال اگر اجزا مختلف یک ربات هوشمند را بصورت زیر فرض کنیم:
فریمورک رآس میتواند این اجزا را در قالب 5 نود مدیریت کند میتوان دوربین را با استفاده از کد پایتون خواند، تخمین موقعیت را ا استفاده از کد سیپلاسپلاس انجام داد.
مفاهیم مختلف در رآس:
تاپیک:بین نودهای مختلف در ربات تبادل داده رخ میدهد برای مثال نود تخمین موقعیت برای محاسبه مکان ربات نیاز به داده سنسور انکودر دارد از این رو نود Wheel Encoder باید داده هایی که از سنسور خوانده را به نو Position Estimator بفرستد.
در اینجا نود Wheel Encoder در نقش پابلیشر (Publisher) و نود Position Estimator در نقش سابسکرایبر (Subscriber) است.
در ضمن تعداد پابلیشر و سابسکرایبرها محدودیتی ندارد مثلا یک نود میتواند داده از چند نود مختلف سابسکرایب کند یا همزمان در نقش پابلیشر و سابسکرایبر باشد. مثلا در یک کوادکوپتر برای تخمین موقعیت(بعنوان یک نود)، باید از داده های GPS، بینایی و سنسور اینرسی استفاده کند پس از همه این نودها داده را سابسکرایب میکند.
برای ارسال تاپیک در رآس منابع زیادی مصرف میشود در برخی موارد، نیازی به ارسال دائم یک داده نیست فقط در صورتی که یک نود آن داده را درخواست(Request) کرد ROS Master آن را در اختیار نود قرار میدهد این سبب صرفه جویی در منابع سیستم میشود. به این شکل اشتراک داده و مدیریت آن Service میگویند.
جمعبندی:
پس می توان فریمورک رآس را بعنوان ابزاری تعریف کرد که الگوریتم ربات را به چند قسمت مجزا(nodes) تقسیم میکند که هر نود را میتوان به زبان های مختلف توسعه داد برای ارتباط میان این نودها از service و topic استفاده میشود تاپیک با نرخ معینی در طول زمان ارسال میشود و جنس آن میتواند رشته، عدد و.. باشد سرویس نیز بسته به درخواست یک نود در اختیار آن قرار میگیرد و در استفاده از منابع صرفه جویی میشود. در ادامه با ابزارهای گرافیکی و شبیه سازی در رآس آشنا خواهید شد. شبیه سازی این امکان را میدهد که بدون نیاز به ربات فیزیکی الگوریتم را تست کرد درصورت وجود اشتباه در الگوریتم آن را متوجه شد بدون اینکه خسارت فیزیکی متوجه ربات شود.
بدون رآس استفاده از زبانهای برنامهنویسی مختلف برای یک ربات بسیار زمانبر و سخت بود دیباگ کردن یک پروژه بزرگ تقریبا غیرممکن بود فهم آن برای عضو جدید تیم سخت بود رآس کمک میکند وقت خود را صرف خلاقیت و توسعه ربات کنید تا اینکه درگیر مشکلات ابتدایی باشید.
در سری بعدی نحوه نصب و استفاده از فریمورک را در محیط لینوکس(اوبونتو) فراخواهیم گرفت پس همراه ما باشید.
آدرس گیتهاب
آدرس یوتیوب
آدرس تلگرام
آدرس آپارات