Contents
الأسماء
أسماء موارد الرسم البياني
توفر أسماء موارد الرسم البياني بنية تسمية هرمية تُستخدم لجميع الموارد في الرسم البياني لحساب ROS ، مثل العقد و المعاملات و المواضيع و الخدمات. هذه الأسماء قوية جدًا في ROS وهي أساسية لكيفية تكوين الأنظمة الأكبر والأكثر تعقيدًا في ROS ، ، لذلك من المهم فهم كيفية عمل هذه الأسماء وكيف يمكنك التعامل معها.
قبل أن نشرح المزيد من التفاصيل عن الأسماء ، إليك بعض الأمثلة على الأسماء:
/ (the global namespace)
/foo
/stanford/robot/name
/wg/node1
تُعد أسماء موارد الرسم البياني آلية مهمة في ROS لتوفير التغليف. يتم تعريف كل مورد ضمن مساحة اسم ، والتي يمكن مشاركتها مع العديد من الموارد الأخرى. بشكل عام ، يمكن للموارد إنشاء موارد داخل مساحة الاسم الخاصة بهم ويمكنهم الوصول إلى الموارد داخل أو فوق مساحة الاسم الخاصة بهم. يمكن إجراء الاتصالات بين الموارد في مساحات أسماء مختلفة ، ولكن يتم ذلك بشكل عام عن طريق رمز التكامل فوق كلتا نطاقات الأسماء. يعزل هذا التغليف أجزاء مختلفة من النظام عن الاستيلاء بطريق الخطأ على المورد المسمى الخاطئ أو أسماء الاختطاف العالمية.
يتم حل الأسماء نسبيًا ، لذلك لا تحتاج الموارد إلى معرفة مساحة الاسم الموجودة فيها. هذا يبسط البرمجة حيث يمكن كتابة العقد التي تعمل معًا كما لو كانت جميعها في مساحة اسم المستوى الأعلى. عندما يتم دمج هذه العقد في نظام أكبر ، يمكن "دفعها لأسفل" في مساحة اسم تحدد مجموعة التعليمات البرمجية الخاصة بها. على سبيل المثال ، يمكن للمرء أن يأخذ عرضًا توضيحيًا لستانفورد وعرضًا تجريبيًا من Willow Garage ودمجهما في عرض توضيحي جديد باستخدام الرسوم البيانية الفرعية "stanford" و "wg". إذا كان كلا العرضين يحتويان على عقدة تسمى "الكاميرا" ، فلن يتعارضوا. يمكن إنشاء الأدوات (مثل التمثيل البياني للرسم البياني) وكذلك المعلمات (مثل الاسم_العرضي) التي يجب أن تكون مرئية للرسم البياني بأكمله بواسطة عقد المستوى الأعلى.
الأسماء الصحيحة
يحتوي الاسم الصحيح على الخصائص التالية:
الحرف الأول هو حرف ألفا ([a-z | A-Z]) ، تيلدا (~) أو الشرطة المائلة للأمام (/)
يمكن أن تكون الأحرف اللاحقة أبجدية رقمية ([0-9 | a-z | A-Z]) ، أو شرطات سفلية (_) ، أو شرطة مائلة للأمام ( / )
استثناء : لا يمكن أن تحتوي الأسماء الأساسية (الموضحة أدناه) على شرطات مائلة للأمام ( / ') أو تيلدا ("~`) بداخلها.
Resolving
هناك أربعة أنواع من أسماء موارد الرسم البياني في ROS: "أساسي Base" و "نسبي relative" و "عام Global" و "خاص Private" ، والتي لها الصيغة التالية:
base
relative/name
/global/name
~private/name
بشكل افتراضي ، يتم إجراء الدقة "نسبيًا" لمساحة اسم العقدة. على سبيل المثال ، تحتوي العقدة / wg / node1 على مساحة الاسم / wg ، لذا فإن الاسم node2 سيتم تحليله إلى / wg / node2.
الأسماء التي لا تحتوي على محددات لمعرفات الهيكلة هي أسماء "أساسية". الأسماء الأساسية هي في الواقع فئة فرعية من الأسماء النسبية ولها نفس قواعد الدقة. يتم استخدام الأسماء الأساسية بشكل متكرر لتهيئة اسم العقدة.
الأسماء التي تبدأ بـ "/" هي "عامة Global" - تعتبر قد تم حلها بالكامل. يجب تجنب الأسماء العامة قدر الإمكان لأنها تحد من إمكانية نقل الكود.
الأسماء التي تبدأ بـ "~" هي "خاصة". يقومون بتحويل اسم العقدة إلى مساحة اسم. على سبيل المثال ، يحتوي node1 في مساحة الاسم / wg / على مساحة الاسم الخاصة / wg / node1. الأسماء الخاصة مفيدة لتمرير المعلمات إلى عقدة معينة عبر خادم المعلمات.
إليك بعض أمثلة تحليل الاسم:
Node |
Relative (default) |
Global |
Private |
/node1 |
bar -> /bar |
/bar -> /bar |
~bar -> /node1/bar |
/wg/node2 |
bar -> /wg/bar |
/bar -> /bar |
~bar -> /wg/node2/bar |
/wg/node3 |
foo/bar -> /wg/foo/bar |
/foo/bar -> /foo/bar |
~foo/bar -> /wg/node3/foo/bar |
إعادة التخطيط
يمكن إعادة تعيين أي اسم داخل عقدة ROS عند تشغيل العقدة في سطر الأوامر. لمزيد من المعلومات حول هذه الميزة ، راجع إعادة تعيين الوسائط.
أسماء موارد الحزمة
تُستخدم أسماء موارد الحزمة في ROS مع مفاهيم على مستوى نظام الملفات لتبسيط عملية الإحالة إلى الملفات وأنواع البيانات على القرص. تعتبر أسماء موارد الحزمة بسيطة للغاية: فهي مجرد اسم الحزم الموجود بها المورد بالإضافة إلى اسم المورد. على سبيل المثال ، يشير الاسم "std_msgs / String" إلى نوع الرسالة "String" في الحزمة "std_msgs".
تتضمن بعض الملفات ذات الصلة بـ ROS والتي يمكن الإشارة إليها باستخدام أسماء موارد الحزم ما يلي:
أسماء موارد الحزمة تشبه إلى حد بعيد مسارات الملفات ، إلا أنها أقصر بكثير. ويرجع ذلك إلى قدرة ROS على تحديد موقع الحزم على القرص وعمل افتراضات إضافية حول محتوياتها. على سبيل المثال ، يتم تخزين أوصاف الرسائل دائمًا في الدليل الفرعي msg ولها امتداد .msg ، لذا فإن std_msgs / String هي اختصار لـ المسار / إلى / std_msgs / msg / String.msg. وبالمثل ، فإن نوع العقدة "foo / bar" يعادل البحث عن ملف باسم "bar" في الحزمة "foo" بأذونات قابلة للتنفيذ.
الأسماء الصحيحة
تحتوي أسماء موارد الحزمة على قواعد تسمية صارمة حيث يتم استخدامها غالبًا في التعليمات البرمجية التي يتم إنشاؤها تلقائيًا. لهذا السبب ، لا يمكن أن تحتوي ROS الحزم على أحرف خاصة بخلاف الشرطة السفلية ، ويجب أن تبدأ بحرف أبجدي. الاسم الصالح له الخصائص التالية:
1. الحرف الأول هو حرف ألفا ([a-z | A-Z])
يمكن أن تكون الأحرف اللاحقة أبجدية رقمية ([0-9 | a-z | A-Z]) أو شرطات سفلية (_) أو شرطة مائلة للأمام ( / )
- يوجد على الأكثر شرطة مائلة واحدة للأمام ("/").
كود API
roscpp::names API reference (ROS Noetic)