تم الحل: إضافة ملفات الخدمة في setup.py ROS2

في السنوات الأخيرة، شهد مجال الروبوتات طفرة في التطورات والتقنيات المعتمدة. أحدها هو ROS2 (نظام تشغيل الروبوت 2)، وهو إطار عمل وسيط مفتوح المصدر يوفر الأدوات والمكتبات والاتفاقيات لتطوير تطبيقات الروبوتات واختبارها وصيانتها. تتناول هذه المقالة كيفية إضافة ملفات الخدمة في حزمة ROS2 باستخدام setup.py، وهي مهارة أساسية للمطورين الذين يعملون مع هذا النظام الأساسي. سنبدأ بمقدمة مختصرة، ونقدم حلاً للمشكلة، ونوجهك عبر دليل خطوة بخطوة، ونناقش الموضوعات ذات الصلة من أجل فهم أعمق.

يتضمن إعداد ملف خدمة في حزمة ROS2 خطوتين رئيسيتين: إنشاء ملف تعريف رسالة الخدمة (.srv) وإضافة التكوينات الضرورية في ملفات package.xml وsetup.py. في هذا البرنامج التعليمي، سنقوم بإنشاء خدمة بسيطة تأخذ سلسلة إدخال وتعيد طول الإدخال المقدم.

أولا، دعونا نجهز مساحة العمل لدينا. قم بإنشاء حزمة ROS2 باسم "string_length_service" باستخدام الأمر التالي:

"`
ros2 pkg إنشاء – نوع البناء ament_python string_length_service
"`

الآن، قم بإنشاء دليل باسم "srv" داخل الحزمة "string_length_service" لتخزين ملف تعريف رسالة الخدمة الخاصة بنا:

"`
مكدير سرف
"`

داخل الدليل "srv"، أنشئ ملفًا باسم "StringLength.srv" بالمحتوى التالي:

"`
سلسلة input_string
-
طول int64
"`

في ملف package.xml، تأكد من إضافة التبعيات الضرورية:

xml
std_msgs
Service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"`

الآن، دعنا ننتقل إلى الجزء الأساسي من هذه المقالة - إضافة ملفات الخدمة في setup.py. افتح ملف "setup.py" وقم بتضمين الكود التالي:

"الثعبان
من إعداد استيراد setuptools
من العالم استيراد العالم

اسم الحزمة = "خدمة_طول_السلسلة"

يثبت(
الاسم = اسم الحزمة،
الإصدار='0.0.0'،
الحزم=[package_name],
ملفات_البيانات=[
('مشاركة/ament_index/resource_index/packages',
['المورد/' + اسم الحزمة])،
('مشاركة/' + اسم الحزمة، ['package.xml'])،
('مشاركة/' + اسم الحزمة، glob('srv/*'))
],
install_requires=['setuptools']،
zip_safe=صحيح،
المشرف = 'developer_name_here'،
mainer_email='developer_email_here',
description='خدمة لحساب طول السلسلة'،
الترخيص='MIT'،
test_require=['pytest'],
نقاط الدخول = {
'console_scripts': [
'string_length_server = ' + اسم الحزمة + '.string_length_server: main'،
'string_length_client = ' + اسم الحزمة + '.string_length_client: main'،
],
},
)
"`

لنناقش الآن ما يفعله هذا الكود: يستخدم ملف setup.py أدوات الإعداد لتوزيع حزمتنا وإدارتها. يحمل المتغير package_name اسم الحزمة الخاصة بنا. تحدد قائمة data_files الموارد الضرورية وpackage.xml وملفات الخدمة التي سيتم توزيعها مع الحزمة. يسرد install_requires الحزم المطلوبة، وتحدد نقاط الإدخال ملفات خدمتنا القابلة للتنفيذ. تأكد من استبدال "developer_name_here" و"developer_email_here" بالقيم المناسبة.

باستخدام rclpy وstd_srvs

بعد إعداد ملفات الخدمة في setup.py، من الضروري تنفيذ كود الخادم والعميل باستخدام ROS2 Python Client Library وrclpy وstd_srvs لأنواع الخدمة القياسية.

قم بإنشاء الملفين "string_length_server.py" و"string_length_client.py" داخل دليل الحزمة الخاص بك وقم بتنفيذ رمز الخادم والعميل. يمكنك العثور على تفاصيل حول كيفية كتابة كود الخادم والعميل في وثائق ROS2.

بناء الخدمة واختبارها

وأخيرًا، قم ببناء واختبار الحزمة الخاصة بك باستخدام الأوامر التالية:

"`
المصدر /opt/ros/foxy/setup.bash
بناء الكولكون - الحزم - حدد string_length_service
تثبيت المصدر/setup.bash
"`

بعد البناء الناجح، قم بتشغيل الخادم والعميل باستخدام محطتين منفصلتين:

"`
يقوم ros2 بتشغيل string_length_service string_length_server
"`

"`
يقوم ros2 بتشغيل string_length_service string_length_client
"`

يقدم هذا الدليل شرحًا متعمقًا لإضافة ملفات الخدمة في setup.py لحزم ROS2 أثناء تناول الموضوعات ذات الصلة مثل rclpy وstd_srvs. باتباع هذه الخطوات، يمكنك إنشاء خدمات ROS2 وتوزيعها بطريقة فعالة ومنظمة، مما يسهل التفاعلات داخل تطبيقاتك الآلية. حظا سعيدا والترميز سعيد!

الوظائف ذات الصلة:

اترك تعليق