समाधान: 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" नामक एक निर्देशिका बनाएं:

"`
एमकेडीआईआर एसआरवी
"`

"srv" निर्देशिका के अंदर, निम्नलिखित सामग्री के साथ "StringLength.srv" नामक एक फ़ाइल बनाएं:

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

package.xml फ़ाइल में, आवश्यक निर्भरताएँ जोड़ना सुनिश्चित करें:

“`एक्सएमएल
std_msgs
service_interface_packages
ament_cmake
ament_cmake_auto
matplotlib
"`

अब, आइए इस लेख के मुख्य भाग पर चलते हैं - setup.py में सेवा फ़ाइलें जोड़ना। "setup.py" फ़ाइल खोलें और निम्नलिखित कोड शामिल करें:

"अजगर
सेटपूल से आयात सेटअप
ग्लोब आयात ग्लोब से

पैकेज_नाम = 'स्ट्रिंग_लेंथ_सर्विस'

स्थापित करना(
नाम=पैकेज_नाम,
संस्करण='0.0.0′,
पैकेज=[पैकेज_नाम],
data_files=[
('share/ament_index/resource_index/packages',
['संसाधन/' + पैकेज_नाम]),
('शेयर/' + पैकेज_नाम, ['पैकेज.एक्सएमएल']),
('शेयर/' + पैकेज_नाम, ग्लोब('srv/*'))
],
install_requires=['setuptools'],
ज़िप_सुरक्षित = सत्य,
अनुरक्षक='डेवलपर_नाम_यहां',
मेन्टेनर_ईमेल='डेवलपर_ईमेल_हियर',
विवरण='स्ट्रिंग लंबाई की गणना के लिए एक सेवा',
लाइसेंस='एमआईटी',
test_require=['pytest'],
प्रविष्टि_बिंदु={
'कंसोल_स्क्रिप्ट': [
'स्ट्रिंग_लेंथ_सर्वर =' + पैकेज_नाम + '.स्ट्रिंग_लेंथ_सर्वर:मेन',
'स्ट्रिंग_लेंथ_क्लाइंट =' + पैकेज_नाम + '.स्ट्रिंग_लेंथ_क्लाइंट:मेन',
],
},
)
"`

आइए अब चर्चा करें कि यह कोड क्या करता है: setup.py फ़ाइल हमारे पैकेज को वितरित और प्रबंधित करने के लिए setuptools का उपयोग करती है। package_name वैरिएबल हमारे पैकेज का नाम रखता है। data_files सूची पैकेज के साथ वितरित किए जाने वाले आवश्यक संसाधन, package.xml और सेवा फ़ाइलों को निर्दिष्ट करती है। install_requires आवश्यक पैकेजों को सूचीबद्ध करता है, और Entry_points हमारी सेवा निष्पादन योग्य फ़ाइलों को परिभाषित करता है। 'डेवलपर_नाम_यहां' और 'डेवलपर_ईमेल_यहां' को उचित मानों से बदलना सुनिश्चित करें।

Rclpy और std_srvs का उपयोग करना

setup.py में सेवा फ़ाइलों को सेट करने के बाद, मानक सेवा प्रकारों के लिए ROS2 पायथन क्लाइंट लाइब्रेरी, rclpy और std_srvs का उपयोग करके सर्वर और क्लाइंट कोड को लागू करना आवश्यक है।

अपनी पैकेज निर्देशिका के अंदर "string_length_server.py" और "string_length_client.py" फ़ाइलें बनाएं और सर्वर और क्लाइंट कोड लागू करें। आप ROS2 दस्तावेज़ में सर्वर और क्लाइंट कोड लिखने के तरीके के बारे में विवरण पा सकते हैं।

सेवा का निर्माण और परीक्षण

अंत में, निम्नलिखित आदेशों का उपयोग करके अपने पैकेज का निर्माण और परीक्षण करें:

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

सफल निर्माण के बाद, दो अलग-अलग टर्मिनलों का उपयोग करके सर्वर और क्लाइंट को चलाएँ:

"`
ros2 स्ट्रिंग_लेंथ_सर्विस स्ट्रिंग_लेंथ_सर्वर चलाएँ
"`

"`
ros2 रन स्ट्रिंग_लेंथ_सर्विस स्ट्रिंग_लेंथ_क्लाइंट
"`

इस गाइड में rclpy और std_srvs जैसे संबंधित विषयों पर बात करते हुए ROS2 पैकेज के लिए setup.py में सेवा फ़ाइलों को जोड़ने की गहन व्याख्या प्रस्तुत की गई है। इन चरणों का पालन करके, आप अपनी ROS2 सेवाओं को कुशल और व्यवस्थित तरीके से बना और वितरित कर सकते हैं, जिससे आपके रोबोटिक अनुप्रयोगों के भीतर इंटरैक्शन की सुविधा मिल सके। शुभकामनाएँ और सुखद कोडिंग!

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

एक टिप्पणी छोड़ दो