निराकरण: setup.py ROS2 मध्ये सेवा फायली जोडा

अलिकडच्या वर्षांत, रोबोटिक्सच्या क्षेत्रात प्रगती आणि तंत्रज्ञानाचा अवलंब झाला आहे. त्यापैकी एक आहे ROS2 (रोबोट ऑपरेटिंग सिस्टम 2), एक ओपन-सोर्स मिडलवेअर फ्रेमवर्क जो रोबोट्सचे ऍप्लिकेशन विकसित, चाचणी आणि देखरेख करण्यासाठी साधने, लायब्ररी आणि अधिवेशने प्रदान करतो. हा लेख या प्लॅटफॉर्मवर काम करणार्‍या विकासकांसाठी एक आवश्यक कौशल्य, setup.py वापरून ROS2 पॅकेजमध्ये सेवा फायली जोडण्याचा तपशील देतो. आम्ही एका संक्षिप्त परिचयाने सुरुवात करू, समस्येचे निराकरण करू, चरण-दर-चरण मार्गदर्शकाद्वारे तुम्हाला मार्गदर्शन करू आणि सखोल समजून घेण्यासाठी संबंधित विषयांवर चर्चा करू.

ROS2 पॅकेजमध्‍ये सेवा फाइल सेट करण्‍यामध्‍ये दोन मुख्‍य चरणांचा समावेश होतो: सेवा संदेश परिभाषा फाइल (.srv) तयार करणे आणि package.xml आणि setup.py फायलींमध्ये आवश्यक कॉन्फिगरेशन जोडणे. या ट्यूटोरियलमध्ये, आम्ही एक साधी सेवा तयार करू जी इनपुट स्ट्रिंग घेते आणि प्रदान केलेल्या इनपुटची लांबी परत करते.

प्रथम, आपले कार्यक्षेत्र तयार करूया. खालील आदेशासह “string_length_service” नावाचे ROS2 पॅकेज तयार करा:

"`
ros2 pkg तयार करा -बिल्ड-प्रकार ament_python string_length_service
"`

आता, आमची सेवा संदेश परिभाषा फाइल संग्रहित करण्यासाठी “string_length_service” पॅकेजमध्ये “srv” नावाची निर्देशिका तयार करा:

"`
mkdir srv
"`

"srv" डिरेक्टरीच्या आत, खालील सामग्रीसह "StringLength.srv" नावाची फाइल तयार करा:

"`
स्ट्रिंग इनपुट_स्ट्रिंग
-
int64 लांबी
"`

पॅकेज.xml फाइलमध्ये, आवश्यक अवलंबन जोडण्याची खात्री करा:

"`xml
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"`

आता, या लेखाच्या मुख्य भागाकडे वळू - setup.py मध्ये सेवा फाइल्स जोडणे. “setup.py” फाइल उघडा आणि खालील कोड समाविष्ट करा:

'' अजगर
सेटअप टूल आयात सेटअप वरून
ग्लोब इंपोर्ट ग्लोब वरून

पॅकेज_नाव = 'स्ट्रिंग_लांबी_सेवा'

सेटअप(
name=package_name,
आवृत्ती='0.0.0',
पॅकेजेस=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['संसाधन/' + पॅकेज_नाव]),
('share/' + package_name, ['package.xml']),
('शेअर/' + पॅकेज_नाव, ग्लोब('srv/*'))
],
install_requires=['setuptools'],
zip_safe=सत्य,
maintener='developer_name_here',
maintener_email='developer_email_here',
description='स्ट्रिंग लांबी मोजण्यासाठी सेवा',
परवाना = 'एमआयटी',
tests_require=['pytest'],
entry_points={
'कन्सोल_स्क्रिप्ट': [
'string_length_server = ' + package_name + '.string_length_server:main',
'string_length_client = ' + package_name + '.string_length_client:main',
],
},
)
"`

आता हा कोड काय करतो यावर चर्चा करूया: setup.py फाइल आमच्या पॅकेजचे वितरण आणि व्यवस्थापन करण्यासाठी setuptools वापरते. पॅकेज_नेम व्हेरिएबलमध्ये आमच्या पॅकेजचे नाव आहे. data_files सूची आवश्यक संसाधने, package.xml आणि पॅकेजसह वितरित केल्या जाणार्‍या सेवा फाइल्स निर्दिष्ट करते. install_requires आवश्यक पॅकेजेसची सूची देते आणि entry_points आमच्या सेवा एक्झिक्युटेबल फाइल्स परिभाषित करतात. 'developer_name_here' आणि 'developer_email_here' योग्य मूल्यांसह बदलण्याची खात्री करा.

rclpy आणि std_srvs वापरणे

Setup.py मध्ये सेवा फाइल्स सेट केल्यानंतर, मानक सेवा प्रकारांसाठी ROS2 पायथन क्लायंट लायब्ररी, rclpy आणि std_srvs वापरून सर्व्हर आणि क्लायंट कोड लागू करणे आवश्यक आहे.

तुमच्या पॅकेज डिरेक्टरीमध्ये "string_length_server.py" आणि "string_length_client.py" फाइल तयार करा आणि सर्व्हर आणि क्लायंट कोड लागू करा. ROS2 दस्तऐवजात सर्व्हर आणि क्लायंट कोड कसा लिहायचा याचे तपशील तुम्हाला मिळू शकतात.

सेवेची निर्मिती आणि चाचणी

शेवटी, खालील आज्ञा वापरून तुमचे पॅकेज तयार करा आणि चाचणी करा:

"`
स्रोत /opt/ros/foxy/setup.bash
कोल्कॉन बिल्ड -पॅकेजेस-स्ट्रिंग_लेंथ_सेवा निवडा
स्रोत install/setup.bash
"`

यशस्वी बिल्डनंतर, सर्व्हर आणि क्लायंट दोन स्वतंत्र टर्मिनल्स वापरून चालवा:

"`
ros2 रन string_length_service string_length_server
"`

"`
ros2 रन string_length_service string_length_client
"`

या मार्गदर्शकाने rclpy आणि std_srvs सारख्या संबंधित विषयांना स्पर्श करताना ROS2 पॅकेजसाठी setup.py मध्ये सेवा फाइल्स जोडण्याचे सखोल स्पष्टीकरण सादर केले. या चरणांचे अनुसरण करून, तुम्ही तुमच्या रोबोटिक ऍप्लिकेशन्समधील परस्परसंवाद सुलभ करून, कार्यक्षम आणि संघटित पद्धतीने तुमच्या ROS2 सेवा तयार आणि वितरित करू शकता. शुभेच्छा आणि आनंदी कोडिंग!

संबंधित पोस्ट:

एक टिप्पणी द्या