سیستم‌عامل روبات

**سیستم عامل ربات**  یا **ROS** یک میان‌افزار رباتیک (یعنی مجموعه ای از چارچوب‌های نرم‌افزاری برای توسعه نرم‌افزار ربات) است. اگر چه ROS یک سیستم عامل نیست اما سرویس‌هایی را فراهم می‌کند که برای خوشه‌ای از کامپیوترهای همگون طراحی شده‌اند مثل فراهم کردن یک لایه انتزاعی برای سخت‌افزار، کنترل دستگاه در سطح پایین، پیاده‌سازی عملیات‌های معمول رباتیک، انتقال پیام بین فرایندها، و مدیریت بسته. علی‌رغم اهمیت واکنشی‌بودن و زمان تأخیر کم در کنترل ربات، ROS یک سیستم عاملی بی‌درنگ نیست، گرچه امکان ادغام کدهای بی‌درنگ با ROS وجود دارد. مشکل عدم پشتیبانی سیستم‌عامل بی‌درنگ در نسخه ROS 2.0 حل شده‌است.

نرم‌افزارها در اکوسیستم ROS را می‌توان به سه گروه مجزا تقسیم‌بندی کرد:
* ابزارهای مستقل از زبان و مستقل از پلتفرم برای ساخت و توزیع نرم‌افزارهای برپایه ROS
* پیاده‌سازی کتابخانه کلاینت ROS مثل roscpp با rospy با و roslisp;
* بسته حاوی کدهای مرتبط با نرم‌افزار که از یک یا چند کتابخانه کلاینت ROS استفاده می‌نماید.
هر دو ابزار مستقل از زبان و کتابخانه‌های کلاینت اصلی (C++، پایتون و Lisp) تحت مجوز BSD منتشر شده‌اند و بنابراین متن‌باز هستند و برای استفاده تجاری و تحقیقاتی رایگان می‌باشند. اغلب سایر بسته‌های تحت سایر مجوزهای متن‌باز هستند که عملیات‌های معمول و کاربردهایی مثل درایورهای سخت‌افزار، مدل‌های ربات، انواع‌داده‌ای، طرح‌ریزی، ادراک، محلی‌سازی و نقشه‌برداری همزمان (Simultaneous localization and mapping)، ابزارهای شبیه‌سازی، و سایر الگوریتم‌ها را پیاده‌سازی می‌کنند.

کتابخانه‌های کلاینت اصلی (C++, Python و Lisp) بیشتر به دلیل وابستگی‌شان به مجموعه بزرگی از نرم‌افزاهای متن‌باز، منطبق با سیستم‌های شبه-یونیکس هستند. برای این کتابخانه‌های کلاینت، اوبونتو به عنوان «پشتیبانی‌شده» لیست شده‌است در حالی که سایر سیستم‌عامل‌ها مثل فدورا، مک‌اواس، و ماکروسافت ویندوز «آزمایش» هستند و به وسیلهٔ جامعه متن‌باز پشتیبانی می‌شوند. کتابخانه مشتری ROS جاوا نیتیو، rosjava، این محدودیت‌ها را ندارد و امکان نوشتن نرم‌افزارهای برپایه ROS برای اندروید را فراهم کرده‌است.

## برنامه‌های کاربردی
بخش‌های ROS عبارتند از:
* یک گره هماهنگی مستر
* انتشار یا به اشتراک جریان داده: تصاویر، استریو، لیزر، کنترل، محرک، تماس …
* تسهیم اطلاعات
* ایجاد و تخریب گره
* گره‌ها به صورت یکپارچه توزیع شده هستند و امکان توزیع عملیات روی چند هسته، چند پردازشگر، gpuها و خوشه‌ها را فراهم می‌کنند
* رویدادنگاری
* سرور پارامتر
* سیستم‌های تست
بسته‌های نرم‌افزای ROS در حوزه‌های زیر هستند:
* ادراک
* شی شناسایی
* تقسیم‌بندی و تشخیص
* تشخیص چهره
* تشخیص حرکت
* ردیابی حرکت
* egomotion
* فهم حرکت
* ساختار از حرکت (SFM)
* دید استریو: ادراک عمق از طریق دو دوربین
* حرکت
* mobile robotics
* کنترل
* برنامه‌ریزی
* grasping
ROS-Industrial یک برنامه توسعه نرم‌افزار برای ایجاد Unified Robot Description Format (URDF) برای ربات‌های صنعتی تحت مجوز BSD است.

## تاریخچه نسخه
انتشارهای ROS ممکن است با سایر انتشارهای ناسازگار باشد و اغلب به وسیلهٔ نام کد به‌جای شماره نسخه مشخص می‌شود. انتشارهای اصلی تا کنون:

## پورت‌ها به روبات‌ها و بوردها
* ABB, Adept, Fanuc, Motoman و Universal Robots به وسیلهٔ ROS-Industrial پشتیبانی می‌شوند.
* Baxter at Rethink Robotics, Inc.
* BeagleBoard. آزمایشگاه رباتیک دانشگاه Katholieke Universiteit Leuven بلژیک: ROS را به Beagleboard پورت کرده‌است.
* HERB که در دانشگاه کارنگی ملون و برنامه رباتیک شخصی اینتل توسعه یافته‌است.
* نیرومند و درشت هیکل A200 ربات توسعه یافته (و یکپارچه به ROS) توسط Clearpath رباتیک
* ربات شخصی PR1 توسعه یافته در آزمایشگاه Ken Salisbury در دانشگاه استنفورد
* ربات شخصی PR2 توسعه یافته در Willow Garge
* پلتفرم تحقیقاتی رباتیک جراحی پزشکی Raven II
* پروتکل و سرور rosbridge که دانشگاه براون برای فراهم کردن امکان ادغام ROS با هر ربات یا هر محیط محاسباتی با استفاده از پیام‌رسانی برپایه JSONتوسعه داده‌است مثل مرورگرهای وب، متلب، مایکروسافت ویندوز، OS X، و سیستم‌های نهفته
* Shadow Robot Hand – یک دست انسان‌نمای ماهر
* ربات‌های STAIR I و STAIR II که به وسیلهٔ آزمایشگاه Andrew Ng در دانشگاه استنفورد توسعه داده شده‌است.
* SummitXL: mobile robot توسعه یافته توسط Robotnik، یک شرکت مهندسی متخصص در mobile robotها، دست‌های رباتیک و راه‌حل‌های صنعتی برپایه معماری ROS.
* ربات Nao انسان‌نما: آزمایشگاه ربات‌های انسان‌نمای دانشگاه فرایبورگ ادغام ROS با ربات انسان‌نمای Nao برپایه پروت اولیهٔ دانشگاه براون را توسعه داده‌است.
* ربات UBR1 توسعه داده شده توسط Unbounded Robotics.

## بسته‌های ROS
ROS شامل تعداد زیادی پیاده‌سازی متن‌باز ز عملیات‌ها و الگوریتم‌های رباتیک است که در قالب بسته سازمان‌دهی شده‌اند. بسیاری از بسته‌ها به عنوان بخشی از توزیع ROS منتشر می‌شوند و سایر بسته‌ها ممکن است توسط اشخاص توسعه داده شده و از طریق سایت‌های اشتراک کد مثل گیت‌هاب، توزیع شوند. برای اطلاع از لیست بسته‌های موجود برای ROS آدرس زیر را ببینید: http://www.ros.org/browse/list.php



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

## آموزش فارسی
"ایران رآس" را می‌توان به عنوان تنها مرجع تخصصی آموزش فارسی ROS نام برد. محققین می‌توانند ضمن استفاده از آموزش‌های گام به گام، در بخش "پرسش و پاسخ "سوالات و مشکلات خود را مطرح کنند و از راهنمایی کارشناسان بهره ببرند. همچنین افراد توانمند نیز می‌توانند در این بخش خود پاسخگوی سؤالات دیگران باشند.

## جستارهای وابسته
* باز سخت‌افزار
* رباتیک میان
* نرم‌افزار منبع باز

## منابع

## پروژه‌های مرتبط
* RT middleware – Robot middleware standard/implementations. RT-component is discussed / defined by the Object Management Group.

## پیوند به بیرون
* مرجع آموزش ROS
* مرجع آموزش و توسعه ROS
* 
* ویکی رسمی
* 
* ROS پاسخ (سوالات)
* لیست ربات‌های در حال اجرا ROS
* سایت ROS-Industrial

رده:مهندسی رباتیک در ۲۰۰۷ (میلادی)
رده:ربات‌های متن‌باز
رده:سوییت رباتیک
رده:سیستم‌عامل‌های آزاد
رده:نرم‌افزارهای ۲۰۰۷ (میلادی)
رده:نرم‌افزارهایی که از پروانه بی‌اس‌دی استفاده می‌کنند