[Documentation] [TitleIndex] [WordIndex

ما هو ROS؟

ROS هو نظام تشغيل فوقي (Meta-Operating System) مفتوح المصدر من أجل الروبوتات. يؤمن الخدمات التي تتوقعها من نظام التشغيل، والتي تتضمن: تجريداً للعتاد الصلب، وتحكماً منخفض المستوى بالأجهزة، وتنجيزاً للوظائف شائعة الاستخدام، وتمريراً للرسائل بين السيرورات، وإدارةً للطرود. كما تؤمن أدوات ومكتبات من أجل الحصول على الرماز وكتابته وبنائه وتشغيله على عدة حواسيب. يشبه ROS في بعض نواحيه "إطارات عمل الروبوتات" من مثل:

Player، وYARP، وOrocos، وCARMEN، وOrca، وMOOS، وMicrosoft Robotics Studio.

يعتبر "بيان (Graph)" تشغيل ROS شبكة سيرورات ند لند Peer-to-Peer (من المحتمل أن تكون موزعة على عدة آلات) ضعيفة التداخل فيما بينها، وتستخدم بنية ROS التحتية للتواصل. ينجز ROS عدة أساليب للتواصل، تشمل أسلوب RPC-style المتزامن للتواصل الذي تم تنجيزه عبر الخدمات services، ووتدفق المعطيات غير المتزامن الذي تم تنجيزه عبر المواضيع topics، وتخزين المعطيات على مُخدِّم الوسطاء Parameter Server. لقد تم شرح هذه المفاهيم بتفصيل جيد في فصل النظرة العامة على المفاهيم Conceptual Overview.

لا يعتبر ROS إطار عمل بالزمن الحقيقي (Realtime)، لكن من الممكن مكاملته مع برامج الزمن الحقيقي. مثلاً يستخدم روبوت The Willow Garage PR2 نظاماً يسمى pr2_etherCAT، والذي ينقل رسائل ROS من سيرورة زمن حقيقي إلى أخرى. كما أن ROS لديه آلية مكاملة في seamless integration with the Orocos Real-time Toolkit.

الأهداف

يسأل كثير من الناس: "كيف يختلف ROS عن س؟" حيث س هي منصة روبتيك برمجية أخرى. من الصعب الإجابة على هذا السؤال حيث أن ROS لم يصمم ليكون إطار عمل مع معظم الميزات، وإنما الهدف منه هو دعم إعادة استخدام الرماز المصدري، في دراسة الروبوتيك وتطويره. يعتبر ROS إطار عمل موزَّع على سيرورات تدعى بالعقد Nodes، والتي تسمح بتصميم الملفات التنفيذية بشكل مستقل عن بعضها البعض، ويكون ارتباطها فيما بينها ضعيفاَ أثناء التشغيل. يتم تجميع هذه السيرورات في طرود Packages ومكادس Stacks، والتي يمكن بكل سهولة مشاركتها وتوزيعها. كما يدعم ROS أيضاً نظام الرمازات المتحد غير المركزي (Federated System of Code) المدعو بالمخازن Repositories الذي يسمح بتوزيع مهمات العمل الجماعي. يسمح هذا التصميم من مستوى نظام الملفات إلى مستوى التواصل، باتخاذ قرارات مستقلة حول التطوير والتنجيز، والتي يمكن أن تجدها جميعاً في أدوات بنية ROS التحتية.

ومن أجل دعم الهدف الرئيسي في التعاون والمشاركة، صيغت عدة أهداف أخرى لإطار عمل ROS:

إذاً "كيف يختلف ROS عن س؟" من الصعب الإجابة من أجل كل س، لكن إن اخترت استخدام س، فنأمل أن تتمكن من الاستفادة من المكتبات الكثيرة الموزعة مع ROS. بتفصيل أكبر: تشرح هذه الرسالة الإلكترونية التي كتبها Brian Gerkey (مشارك في Player وROS) إلى البريد الإلكتروني لمستخدمي ROS قائمة بالفروقات بين Player وROS، تتضمن مكاملة مكتبة OpenCV، ومكتبات أخرى:

The answer, as usual, depends.  In particular, it depends on what you're trying to do.  Player is a great fit for simple, non-articulated mobile platforms.  It was designed to provide easy access to sensors and motors on laser-equipped Pioneers.

ROS, on the other hand, is designed around complex mobile manipulation platforms, with actuated sensing (tilting lasers, pan/tilt sensor heads, sensors attached to arms).  As compared to Player, ROS makes it easier to take advantage of a distributed computing environment, and I would say that the higher-level side of things is more developed in ROS than in Player.  Whereas Player offers more hardware drivers, ROS offers more implementations of algorithms.

I think that's it's fair to say that ROS is more powerful and flexible than Player, but, as usual, greater power and flexibility come at the cost of greater complexity.  While we're working hard to make ROS easy to use, there is still a significant learning curve.  Of course, familiarly with Player should help in learning to use ROS, as many of the underlying concepts are similar.

As to your specific question regarding OpenCV integration, I think that you'll find quite a bit more ROS code than Player code that uses OpenCV in interesting ways.   In the future, you should expect to see even more, as there's significant overlap between the ROS and OpenCV development teams.

I should note that ROS leverages a lot of code from the Player project.  There are ROS nodes that reuse code from many Player drivers, and both Stage and Gazebo are well-supported and widely used in the ROS community.

أنظمة التشغيل

يعمل ROS حالياً فقط على أنظمة التشغيل المعتمدة على Unix. يتم اختبار برامج ROS بشكل أساسي على أنظمة Ubuntu وMac OS X، كما يساعد مجمتع ROS في نشر نسخ تدعم الأنظمة Fedora وGentoo وArch Linux وغيرها من منصات Linux.

نظرياً من الممكن استيراد ROS لأنظمة Microsoft Windows، لكن عملياً لم يكتمل ذلك بعد.

الإصدارات

يتم بشكل دوري إصدار نسخ جديدة من صميم ROS والأدوات والمكتبات المفيدة على شكل توزيعات ROS Distribution. تشبه هذه التوزيعات توزيعات Linux، وتؤمن مجموعة من البرامج المتوافقة كي يستخدمها الآخرون ويبنوا عليها.

المساهمة

حيث أن ROS مفتوح المصدر، نأمل أن تأخذ بعين الاعتبار مساهمتك مع ROS والمكتبات المتوافقة معه. رجاء راجع فقرتنا حول المساهمة Contributing من أجل مزيد من المعلومات حول كيفية مشاركتك في مجتمع ROS.

التالي

مفاهيم ROS


2022-05-28 12:26