Contents
المتطلبات
في هذ الدرس سنتعامل مع حزم من (ros-tutorials)، لذا ثبت هذه الحزمة باستخدام التعليمة:
$ sudo apt-get install ros-<distro>-ros-tutorials
استبدل '<distro>' باسم نسخة ROS المطلوبة (noetic).
نظرة سريعة على مفاهيم نظام الملفات
الحزم: الحزمة هي وحدة تنظيم البرامج والرمازات المصدرية في ROS. كل حزمة تحتوي على المكتبات، والنسخ التنفيذية، والنصوص، وغير ذلك...
التوصيفات (package.xml): التوصيف (Manifest) هو توصيف للحزمة. يعرف المكتبات المعتمد عليها بين الحزم، ويحتفظ بالمعلومات الواسطة (Meta) عن الحزمة مثل رقم الإصدار والمشرف والرخصة وغير ذلك...
أدوات نظام الملفات
ينتسر الرماز عبر عدة حزم ROS. قد تكون الملاحة باستخدام أدوات موجه الأوامر مثل ls و cd صعبة عند البحث في كل نظام التشغيل، لذلك قدم ROS تعليمات مخصصة للبحث في فضاءات عمل ROS.
اسخدام rospack
تسمح rospack بالحصول على معلومات عن الحزم. في هذا الدرس، سنركز على خيار البحث find والذي يرجع مسار الحزمة.
الاستخدام:
$ rospack find [package_name]
مثال:
$ rospack find roscpp
النتيجة:
YOUR_INSTALL_PATH/share/roscpp
إذا ثُبَِت ROS Noetic باستخدام apt على نظام Ubuntu Linux فيجب الحصول على:
/opt/ros/noetic/share/roscpp
استخدام roscd
تعتبر roscd جزءاً من مجموعة rosbash. تسمح بتغيير المجلد (cd) مباشرة نحو الحزمة.
الاستخدام:
$ roscd <package-or-stack>[/subdir]
للانتقال إلى مجلد حزمة roscpp نفذ:
$ roscd roscpp
للتحقق، نطبع مجلد العمل الحالي باستخدام تعليمة Unix pwd:
$ pwd
ويجب الحصول على:
YOUR_INSTALL_PATH/share/roscpp
حيث YOUR_INSTALL_PATH/share/roscpp هو مسار rospack find نفسه في التعليمة السابقة.
لاحظ أن roscd مثل كل أدوات ROS ستجد فقط الحزم الموجودة في المجلدات المكتوبة في متحول البيئة ROS_PACKAGE_PATH. لرؤية محتوى المتحول ROS_PACKAGE_PATH أكتب:
$ echo $ROS_PACKAGE_PATH
يجب أن يحتوي المتحول ROS_PACKAGE_PATH قائمة بأسماء مجلدات الحزم يفصل في ما بينها فاصلة منقوطة. بعد التثبيت يجب أن يكون ROS_PACKAGE_PATH بالشكل:
/opt/ros/noetic/base/install/share
مثل كل متحولات البيئة يمكن إضافة مجلدات أخرى إليه بإذافة فاصلة منقوطة في نهايته ومسار المجلد.
المجلدات الفرعية
يمكن للتعليمة roscd أن تنقل مجلد العمل إلى مجلد فرعي داخل الحزمة.
جرب:
$ roscd roscpp/cmake
$ pwd
يجب أن تحصل على:
YOUR_INSTALL_PATH/share/roscpp/cmake
roscd log
تأخذك التعليمة roscd log إلى المجلد الذي يخزن فيه ROS ملفات التسجيل. ملاحظة: في حال لم تكن قد شغلت أي برنامج ROS حتى الآن فستحصل على خطأ، لأن هذا المجلد غير موجود بعد.
في حال كنت قد شغلت أحد برامج Ros من قبل جرب التعليمة:
$ roscd log
استخدام rosls
إن rosls جزء من مجموعة rosbash. تسمح ls بكتابة أسماء الملفات والمجلدات في الحزمة من دون الحاجة لكتابة المسار المطلق للحزمة. الاستخدام:
$ rosls <package-or-stack>[/subdir]
مثال:
$ rosls roscpp_tutorials
النتيجة:
cmake launch package.xml srv
التكميل التلقائي باستخدام زر Tab
في حال كانت كتابة اسم الحزمة بشكل كامل صعباً، فيمكن استخدام التكميل التلقائي باستخدام الزر TAB TAB completion، حيث نكتفي بكتابة الحروف الأولى ثم ضغط زر TAB، مثلاً في المثال السابق كانت roscpp_tutorials طويلة، لذا نكتب:
$ roscd roscpp_tut<<< now push the TAB key >>>
وبعد الضغط على زر TAB يتم التكميل بشكل تلقائي:
$ roscd roscpp_tutorials/
ينجح الإكمال عندما يكون هناك خيار واحد فقط للتكميل، أما عند وجود اكثر من خيار فلنجرب:
$ roscd tur<<< now push the TAB key >>>
نلاحظ بعد ضغط زر TAB أن التكميل التلقائي تم بحيث يكمل أكثر ما يمكن:
$ roscd turtle
أما الباقي، ففي هذه الحالة توجد عدة حزم تبدأ بالكلمة turtle لذلك نضغط الزر TAB مرة أخرى وهذا سيظهر كل الحزم التي تبدأ بالكلمة turtle:
turtle_actionlib/ turtlesim/ turtle_tf/
على موجه الأوامر حالياً لا تزال التعليمة هي:
$ roscd turtle
وبمجرد كتابة حرف يميز الحزمة التي نريد مثل s، نضغط TAB:
$ roscd turtles<<< now push the TAB key >>>
ولأنه بقيت حزمة واحدة تبدأ بالكلمة الجديدة turtles فإنه يتم الإكمال بشكل تلقائي لكامل اسم الحزمة:
$ roscd turtlesim/
إن أردت الحصول على قائمة بأسماء الحزم المثبتة حالياً، يمكن كذلك استخدام الإكمال التلقائي:
$ rosls <<< now push the TAB key twice >>>
مراجعة
من السهل رؤية الشبه بين أدوات ROS وتعليمات Linux المقابلة:
- rospack = ros + pack(age)
- roscd = ros + cd
- rosls = ros + ls
يستخدم هذا الأسلوب في التشابه مع أدوات ROS الأخرى.