SM _ FARAJI
SM _ FARAJI
خواندن ۴ دقیقه·۱ سال پیش

سیستم عامل ربات ROS: به دنیای برنامه نویسی ربات‌ها خوش آمدید

فریمورک ROS یک مجموعه نرم افزارها و محیط توسعه کد برای ربات است کمک می‌کند تا ربات را بصورت ماژولار با زبان‌های برنامه‌نویسی مختلف توسعه داده شود همچنین محیط های شبیه سازی همانند گزبو، turtlesim و گراف های نموداری براحتی امکان بررسی سریع پروژه و دیباگ آن را برای توسعه دهنده فراهم می‌کند. برخلاف اسمش سیستم عامل(OS) نیست.این فریمورک در بیشتر پروژه های رباتیک بزرگ راه پیدا کرده است نمونه آن در 1 سپتامبر 2014، ناسا اولین روباتی را که ROS را در فضا اجرا می کند، معرفی کرد؛Robotnaut 2 که در ایستگاه فضایی بین المللی مورد استفاده قرار گرفت.

Robotnaut 2  در ایستگاه فضایی بین المللی
Robotnaut 2 در ایستگاه فضایی بین المللی

پس اگر به دنیای رباتیک علاقه دارید بهترین گزینه برای ورود به آن یادگیری این فریمورک شگفت انگیز و توانمند است.

درک ROS و کار با آن ابتدا برای اکثر کاربران مشکل است همانطور که برای خودم رخ داد و تا به تسلط نسبی برسیم نیاز به تمرین و آموزش دارد پس صبور باشید و با ما در آموزش که سعی می‌شود جامع و با زبان ساده باشد همراه باشید!

گزارش معروفی از رسانه بلومبرگ درباره تاریخچه تولد ROS و قابلیت های آن در اینترنت وجود دارد که با زیرنویس فارسی در ویدئو زیر مشاهده کنید به درک شما از ین پلتفرم و فلسفه آن آشنا خواهید شد:

https://www.aparat.com/v/br3UW


  • ویژگی های فریمورک رآس:

1) مدیریت منابع سیستم

2) شبیه سازی و مصور سازی اجزا مختلف ربات

3) قابلیت توسعه کد بصورت ماژولار و درک آن برای افراد دیگر

4) کدنویسی اجزا مختلف بصورت موازی و به زبان های برنامه نویسی مختلف




برای مثال اگر اجزا مختلف یک ربات هوشمند را بصورت زیر فرض کنیم:

اجزا مختلف یک ربات زمینی هوشمند
اجزا مختلف یک ربات زمینی هوشمند

فریمورک رآس می‌تواند این اجزا را در قالب 5 نود مدیریت کند میتوان دوربین را با استفاده از کد پایتون خواند، تخمین موقعیت را ا استفاده از کد سی‌پلاس‌پلاس انجام داد.

مدیریت نودها توسط رآس
مدیریت نودها توسط رآس



مفاهیم مختلف در رآس:

تاپیک:بین نودهای مختلف در ربات تبادل داده رخ میدهد برای مثال نود تخمین موقعیت برای محاسبه مکان ربات نیاز به داده سنسور انکودر دارد از این رو نود Wheel Encoder باید داده هایی که از سنسور خوانده را به نو Position Estimator بفرستد.

در اینجا نود Wheel Encoder در نقش پابلیشر (Publisher) و نود Position Estimator در نقش سابسکرایبر (Subscriber) است.
نحوه ارسال داده میان نودها در قالب یک topic
نحوه ارسال داده میان نودها در قالب یک topic

در ضمن تعداد پابلیشر و سابسکرایبرها محدودیتی ندارد مثلا یک نود میتواند داده از چند نود مختلف سابسکرایب کند یا همزمان در نقش پابلیشر و سابسکرایبر باشد. مثلا در یک کوادکوپتر برای تخمین موقعیت(بعنوان یک نود)، باید از داده های GPS، بینایی و سنسور اینرسی استفاده کند پس از همه این نودها داده را سابسکرایب میکند.

ساختار پیچیده تر
ساختار پیچیده تر

برای ارسال تاپیک در رآس منابع زیادی مصرف میشود در برخی موارد، نیازی به ارسال دائم یک داده نیست فقط در صورتی که یک نود آن داده را درخواست(Request) کرد ROS Master آن را در اختیار نود قرار میدهد این سبب صرفه جویی در منابع سیستم میشود. به این شکل اشتراک داده و مدیریت آن Service می‌گویند.

ساختار service
ساختار service

جمع‌بندی:

پس می توان فریمورک رآس را بعنوان ابزاری تعریف کرد که الگوریتم ربات را به چند قسمت مجزا(nodes) تقسیم میکند که هر نود را میتوان به زبان های مختلف توسعه داد برای ارتباط میان این نودها از service و topic استفاده می‌شود تاپیک با نرخ معینی در طول زمان ارسال میشود و جنس آن میتواند رشته، عدد و.. باشد سرویس نیز بسته به درخواست یک نود در اختیار آن قرار میگیرد و در استفاده از منابع صرفه جویی میشود. در ادامه با ابزارهای گرافیکی و شبیه سازی در رآس آشنا خواهید شد. شبیه سازی این امکان را میدهد که بدون نیاز به ربات فیزیکی الگوریتم را تست کرد درصورت وجود اشتباه در الگوریتم آن را متوجه شد بدون اینکه خسارت فیزیکی متوجه ربات شود.

بدون رآس استفاده از زبانهای برنامه‌نویسی مختلف برای یک ربات بسیار زمان‌بر و سخت بود دیباگ کردن یک پروژه بزرگ تقریبا غیرممکن بود فهم آن برای عضو جدید تیم سخت بود رآس کمک میکند وقت خود را صرف خلاقیت و توسعه ربات کنید تا اینکه درگیر مشکلات ابتدایی باشید.

در سری بعدی نحوه نصب و استفاده از فریمورک را در محیط لینوکس(اوبونتو) فراخواهیم گرفت پس همراه ما باشید.

آدرس گیت‌هاب
آدرس یوتیوب
آدرس تلگرام
آدرس آپارات




برنامه نویسیسیستم عاملشبیه سازیrosرباتیک
شاید از این پست‌ها خوشتان بیاید