## page was copied from ROS/Concepts #language ar <> <> يحتوي ROS على ثلاثة مستويات من المفاهيم: مستوى نظام الملفات ومستوى الرسم البياني الحسابي ومستوى المجتمع. تم تلخيص هذه المستويات والمفاهيم أدناه ، ثم تدخل الأقسام اللاحقة في كل منها بمزيد من التفصيل. بالإضافة إلى المستويات الثلاثة للمفاهيم ، تحدد ROS أيضًا نوعين من [[Names|الأسماء]] -- أسماء موارد الحزمة وأسماء موارد الرسم البياني -- والتي تمت مناقشتها أدناه. {{{#!wiki dotted/yellow ملاحظة: منذ ROS Groovy تصف صفحات الويكي هذه المفاهيم من حيث صلتها بنظام بناء catkin الجديد. للإصدارات الأقدم من ROS أو عند استخدام rosbuild buildsystem ، انظر:[[rosbuild/ROS/Concepts]] }}} <> == مستوى نظام ملفات ROS == تغطي مفاهيم مستوى نظام الملفات بشكل أساسي موارد ROS التي تواجهها على القرص ، مثل: * '''[[Packages|الحزم]]''': الحزم هي الوحدة الرئيسية لتنظيم البرامج في ROS. قد تحتوي الحزمة على عمليات وقت تشغيل ROS ("العقد") ، أو مكتبة تعتمد على ROS ، أو مجموعات بيانات ، أو ملفات تكوين ، أو أي شيء آخر يتم تنظيمه معًا بشكل مفيد. الحزم هي أكثر عناصر البناء الذرية وعنصر التحرير في ROS. وهذا يعني أن أكثر الأشياء الدقيقة التي يمكنك إنشاؤها وإصدارها هي الحزمة. * '''[[Metapackages|الحزم الوصفية]]''': الحزم الوصفية هي حزم متخصصة تعمل فقط على تمثيل مجموعة من الحزم الأخرى ذات الصلة. تُستخدم العبوات الوصفية الأكثر شيوعًا كحامل مكان متوافق مع الإصدارات السابقة للتحويل[[rosbuild]] [[rosbuild/ROS/Concepts#Stacks|Stacks]]. * '''[[catkin/package.xml|بيانات الحزم]]''': توفر البيانات (`package.xml`) بيانات وصفية حول الحزمة ، بما في ذلك الاسم والإصدار والوصف ومعلومات الترخيص والتبعيات والمعلومات الوصفية الأخرى مثل الحزم المصدرة. يتم تعريف بيان الحزمة `package.xml` في [[http://www.ros.org/reps/rep-0127.html|REP-0127]]. * '''المخازن''': مجموعة من الحزم التي تشترك في نظام VCS مشترك. تشترك الحزم التي تشترك في VCS في نفس الإصدار ويمكن إصدارها معًا باستخدام أداة التشغيل التلقائي لإصدار catkin [[bloom]]. غالبًا ما يتم تعيين هذه المخازن إلى [[rosbuild]] [[rosbuild / ROS / Concepts # Stacks | Stacks]]. يمكن أن تحتوي المخازن أيضًا على حزمة واحدة فقط. * '''[[msg|أنواع الرسائل (msg)]]''': أوصاف الرسائل المخزنة في `my_package / msg / MyMessageType.msg` ، تحدد هياكل البيانات لـ [[Messages | الرسائل]] المرسلة في ROS. * '''[[srv|أنواع الخدمات (srv)]]''': أوصاف الخدمة المخزنة في `my_package / srv / MyServiceType.srv` ، تحدد هياكل بيانات الطلب والاستجابة لـ [[Services | الخدمات]] في ROS. <> == مستوى الرسم البياني في ROS == "الرسم البياني الحسابي" هو شبكة الند للند لعمليات ROS التي تعالج البيانات معًا. المفاهيم الأساسية للرسم البياني الحسابي لـ ROS هي "العقد Node" و "الرئيس Master" و "خادم المعاملات Parameter Server" و "الرسائل messages" و "الخدمات services" و "الموضوعات topics" و "الحقائب bags" '، وكلها توفر بيانات للرسم البياني بطرق مختلفة. يتم تنفيذ هذه المفاهيم في حزمة [[ros_comm]]. * '''[[Nodes|العقد]]''': العقد هي العمليات التي تقوم بالحساب. تم تصميم ROS ليكون معياريًا بمقياس دقيق ؛ يتكون نظام التحكم في الروبوت عادة من العديد من العقد. على سبيل المثال ، تتحكم عقدة واحدة في محدد نطاق الليزر ، وتتحكم عقدة واحدة في محركات العجلة ، وتنفذ عقدة واحدة التوطين ، وتنفذ عقدة واحدة تخطيط المسار ، وتوفر العقدة الواحدة عرضًا رسوميًا للنظام ، وما إلى ذلك. تتم كتابة عقدة ROS باستخدام ROS [[Client Libraries| مكتبة العميل]] ، مثل [[roscpp| روس س++ roscpp]] أو [[rospy|روس بايثون rospy]]. * '''[[Master|الرئيس]]''': يوفر رئيس ROS تسجيل الاسم والبحث عن بقية الرسم البياني الحسابي. بدون المفتاح الرئيسي ، لن تتمكن العقد من العثور على بعضها البعض أو تبادل الرسائل أو استدعاء الخدمات. * '''[[Parameter Server|خادم المعاملات]]''': يسمح خادم المعاملات بتخزين البيانات عن طريق المفتاح في موقع مركزي. إنه حاليًا جزء من الرئيس Master. * '''[[Messages|الرسائل]]''': تتواصل العقد مع بعضها البعض بتمرير [[Messages|الرسائل]]. الرسالة هي ببساطة بنية بيانات ، تتكون من حقول مكتوبة. يتم دعم الأنواع الأساسية القياسية (عدد صحيح ، نقطة عائمة ، منطقية ، إلخ) ، وكذلك مصفوفات الأنواع البدائية. يمكن أن تتضمن الرسائل بنى ومصفوفات متداخلة بشكل عشوائي (تشبه إلى حد كبير هياكل C). * '''[[Topics|الموضوعات]]''': يتم توجيه الرسائل عبر نظام نقل تحت مسمى النشر Publish / الاشتراك Subscribe. ترسل العقدة رسالة عن طريق "نشرها" إلى [[Topics| موضوع]]. الموضوع هو [[Names| اسم]] يستخدم لتعريف محتوى الرسالة. العقدة المهتمة بنوع معين من البيانات سوف "تشترك" في الموضوع المناسب. قد يكون هناك عدة ناشرين ومشتركين متزامنين لموضوع واحد ، وقد تنشر عقدة واحدة و / أو تشترك في مواضيع متعددة. بشكل عام ، الناشرون والمشتركون ليسوا على علم بوجود بعضهم البعض. الفكرة هي فصل إنتاج المعلومات عن استهلاكها. منطقيا ، يمكن للمرء أن يفكر في الموضوع على أنه ناقل رسائل مكتوب بشدة. كل ناقل له اسم ، ويمكن لأي شخص الاتصال بالحافلة لإرسال الرسائل أو استقبالها طالما أنها من النوع الصحيح. * '''[[Services|الخدمات]]''': نموذج النشر / الاشتراك هو نموذج اتصال مرن للغاية ، ولكن النقل أحادي الاتجاه الخاص به ليس مناسبًا لتفاعلات الطلب / الرد ، والتي غالبًا ما تكون مطلوبة في نظام موزع. يتم الطلب / الرد عبر [[Services|الخدمات]] ، والتي يتم تحديدها بواسطة زوج من هياكل الرسائل: أحدهما للطلب والآخر للرد. تقدم عقدة التزويد خدمة تحت [[Names|اسم]] ويستخدم العميل الخدمة عن طريق إرسال رسالة الطلب وانتظار الرد. تقدم مكتبات عملاء ROS بشكل عام هذا التفاعل للمبرمج كما لو كان استدعاء إجراء عن بعد. * '''[[Bags|الحقائب]]''': تعد الحقائب تنسيقًا لحفظ بيانات رسائل ROS وتشغيلها. تعد الحقائب آلية مهمة لتخزين البيانات ، مثل بيانات المستشعرات ، التي يصعب جمعها ولكنها ضرورية لتطوير واختبار الخوارزميات. يعمل ROS [[Master|الرئيس]] كخدمة أسماء في الرسم البياني لحساب ROS. يخزن [[Topics| الموضوعات]] و [[Services| الخدمات]] معلومات التسجيل لـ ROS [[Nodes| العقد]]. تتواصل العقد مع الرئيس للإبلاغ عن معلومات التسجيل الخاصة بهم. عندما تتواصل هذه العقد مع الرئيس Master ، يمكنها تلقي معلومات حول العقد المسجلة الأخرى وإجراء الاتصالات حسب الاقتضاء. سيقوم الرئيس Master أيضًا بإجراء عمليات رد نداء لهذه العقد عندما تتغير معلومات التسجيل هذه ، مما يسمح للعقد بإنشاء اتصالات ديناميكيًا أثناء تشغيل العقد الجديدة. العقد تتصل بالعقد الأخرى مباشرة ؛ يوفر الرئيس Master معلومات البحث فقط ، مثل خادم DNS. سوف تطلب العقد التي تشترك في موضوع ما اتصالات من العقد التي تنشر هذا الموضوع ، وستقوم بإنشاء هذا الاتصال عبر بروتوكول اتصال متفق عليه. البروتوكول الأكثر شيوعًا المستخدم في ROS يسمى [[ROS / TCPROS | TCPROS]] ، والذي يستخدم مآخذ TCP / IP القياسية. تسمح هذه البنية بالعملية المنفصلة ، حيث تكون [[Names| الأسماء]] هي الوسيلة الأساسية التي يمكن من خلالها بناء أنظمة أكبر وأكثر تعقيدًا. تلعب الأسماء دورًا مهمًا جدًا في ROS: تحتوي جميع العقد والموضوعات والخدمات والمعلمات على أسماء. تدعم كل ROS [[Client Libraries| مكتبة العميل]] [[Remapping Arguments| إعادة تعيين سطر الأوامر للأسماء]] ، مما يعني أنه يمكن إعادة تكوين البرنامج المترجم في وقت التشغيل ليعمل في هيكل مختلف للرسم البياني الحسابي. على سبيل المثال ، للتحكم في جهاز تحديد المدى بالليزر Hokuyo ، يمكننا بدء تشغيل برنامج التشغيل [[hokuyo_node|عقدة_هوكويو hokuyo_node]] ، الذي يتحدث إلى الليزر وينشر رسائل << MsgLink (sensor_msgs / LaserScan) >> حول موضوع "المسح Scan". لمعالجة هذه البيانات ، قد نكتب عقدة باستخدام [[laser_filters|فلترة_الضوء]] التي تشترك في الرسائل حول موضوع "المسح Scan". بعد الاشتراك ، سيبدأ عامل التصفية الخاص بنا تلقائيًا في تلقي الرسائل من الليزر. لاحظ كيف يتم فصل الجانبين. كل ما تفعله عقدة `hokuyo_node` هو نشر عمليات المسح ، دون معرفة ما إذا كان أي شخص مشتركًا أم لا. كل ما يفعله المرشح هو الاشتراك في عمليات المسح ، دون معرفة ما إذا كان أي شخص ينشرها. يمكن بدء العقدتين ، وقتلهما ، وإعادة تشغيلهما ، بأي ترتيب ، دون التسبب في أي ظروف خطأ. قد نضيف لاحقًا ليزرًا آخر إلى الروبوت الخاص بنا ، لذلك نحتاج إلى إعادة تكوين نظامنا. كل ما نحتاجه هو "إعادة رسم خريطة" الأسماء المستخدمة. عندما نبدأ أول "hokuyo_node" ، يمكننا أن نقول له بدلاً من ذلك أن نعيد تعيين "scan" إلى "base_scan" ، ونفعل الشيء نفسه مع عقدة التصفية. الآن ، ستتواصل كلتا العقدتين باستخدام موضوع `base_scan` بدلاً من ذلك ولن تسمع الرسائل حول موضوع` المسح`. ثم يمكننا بدء تشغيل "hokuyo_node" آخر لجهاز البحث عن نطاق الليزر الجديد. {{http://ros.org/images/wiki/ROS_basic_concepts.png}} [[attachment:ROS_basic_concepts.dia]] == مستوى مجتمع ROS == مفاهيم مستوى مجتمع ROS هي موارد ROS التي تمكن المجتمعات المنفصلة من تبادل البرامج والمعرفة. تشمل هذه الموارد: * '''[[Distributions|التوزيعات]]''': توزيعات ROS هي مجموعات من [[Stacks | أكوام (جمع كومة مجموعة من الحزم)]] التي يمكنك تثبيتها. تلعب التوزيعات دورًا مشابهًا لتوزيعات Linux: فهي تسهل تثبيت مجموعة من البرامج ، كما أنها تحتفظ بإصدارات متسقة عبر مجموعة من البرامج. * '''[[Repositories|المخازن]]''': تعتمد ROS على شبكة موحدة من مخازن الأكواد ، حيث يمكن للمؤسسات المختلفة تطوير مكونات برامج الإنسالة الخاصة بها وإصدارها. * '''[[Documentation|ويكي ROS]]''': Wiki مجتمع ROS هو المنتدى الرئيسي لتوثيق المعلومات حول ROS. يمكن لأي شخص التسجيل للحصول على حساب والمساهمة في الوثائق الخاصة به ، وتقديم التصحيحات أو التحديثات ، وكتابة البرامج التعليمية ، والمزيد. * '''نظام تذكرة الخلل''': يرجى الاطلاع على [[Tickets|التذاكر]] للحصول على معلومات حول تذاكر الملفات. * '''[[Mailing Lists|القوائم البريدية]]''': تعد [[Mailing Lists| القائمة البريدية لمستخدمي ros]] قناة الاتصال الأساسية حول التحديثات الجديدة لـ ROS ، فضلاً عن منتدى لطرح أسئلة حول برنامج ROS. * '''[[http://answers.ros.org]|أجوبة ROS]]''': موقع للأسئلة والأجوبة للإجابة على الأسئلة المتعلقة بـ ROS. * '''[[http://www.ros.org/news|مقالات]]''': تقدم [[http://www.ros.org/news|ros.org مدونة]] تحديثات منتظمة ، بما في ذلك الصور ومقاطع الفيديو. <> == Next == [[ROS/Higher-Level Concepts|Higher-Level Concepts]]