נפתרה: הוסף קבצי שירות ב-setup.py ROS2

בשנים האחרונות, תחום הרובוטיקה חווה זינוק בהתקדמות ובטכנולוגיות מאומצות. אחד מהם הוא ROS2 (Robot Operating System 2), מסגרת תוכנת קוד פתוח המספקת כלים, ספריות ומוסכמות לפיתוח, בדיקה ותחזוקה של יישומי רובוטים. מאמר זה מתעמק בהוספת קבצי שירות בחבילת ROS2 באמצעות setup.py, מיומנות חיונית למפתחים העובדים עם פלטפורמה זו. נתחיל בהקדמה קצרה, נציג פתרון לבעיה, נדריך אתכם במדריך שלב אחר שלב, ונדון בנושאים קשורים להבנה מעמיקה יותר.

הגדרת קובץ שירות בחבילת ROS2 כוללת שני שלבים עיקריים: יצירת קובץ הגדרת הודעת שירות (.srv) והוספת תצורות נחוצות בקבצי package.xml ו-setup.py. במדריך זה, ניצור שירות פשוט שלוקח מחרוזת קלט ומחזיר את אורך הקלט שסופק.

ראשית, בואו נכין את סביבת העבודה שלנו. צור חבילת ROS2 בשם "string_length_service" עם הפקודה הבאה:

""
ros2 pkg create –build-type ament_python string_length_service
""

כעת, צור ספרייה בשם "srv" בתוך חבילת "string_length_service" כדי לאחסן את קובץ הגדרת הודעת השירות שלנו:

""
mkdir srv
""

בתוך ספריית "srv", צור קובץ בשם "StringLength.srv" עם התוכן הבא:

""
מחרוזת input_string
-
אורך int64
""

בקובץ package.xml, הקפד להוסיף את התלות הנדרשת:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
""

כעת, בואו נעבור לחלק הליבה של מאמר זה - הוספת קבצי שירות ב-setup.py. פתח את הקובץ "setup.py" וכלול את הקוד הבא:

"`פיתון
מהתקנת הייבוא ​​של כלי ההתקנה
מ-glob import glob

package_name = 'string_length_service'

להכין(
name=package_name,
version='0.0.0′,
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
('share/' + package_name, glob('srv/*'))
],
install_requires=['setuptools'],
zip_safe=נכון,
maintenanceer='developer_name_here',
maintenanceer_email='developer_email_here',
description='שירות לחישוב אורך מחרוזת',
license='MIT',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'string_length_server = ' + שם_חבילה + '.string_length_server:main',
'string_length_client = ' + שם_חבילה + '.string_length_client:main',
],
},
)
""

כעת נדון במה הקוד הזה עושה: הקובץ setup.py משתמש בכלי התקנה כדי להפיץ ולנהל את החבילה שלנו. המשתנה package_name מכיל את שם החבילה שלנו. רשימת data_files מציינת את קבצי המשאב, package.xml ו-service הדרושים להפצה יחד עם החבילה. install_requires מפרט את החבילות הנדרשות, ו-entry_points מגדירים את קבצי ההפעלה של השירות שלנו. הקפד להחליף את ה-'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
colcon build –packages-select string_length_service
source install/setup.bash
""

לאחר הבנייה המוצלחת, הפעל את השרת והלקוח באמצעות שני מסופים נפרדים:

""
ros2 הפעל string_length_service string_length_server
""

""
ros2 הרץ string_length_service string_length_client
""

מדריך זה הציג הסבר מעמיק על הוספת קבצי שירות ב-setup.py עבור חבילות ROS2 תוך נגיעה בנושאים קשורים כמו rclpy ו-std_srvs. על ידי ביצוע שלבים אלה, תוכל ליצור ולהפיץ את שירותי ה-ROS2 שלך בצורה יעילה ומאורגנת, מה שמקל על אינטראקציות בתוך האפליקציות הרובוטיות שלך. בהצלחה וקידוד שמח!

הודעות קשורות:

השאירו תגובה