Contents — find the section you need
ROS 2 स्वयं रोबोट नहीं है। यह कैमरा ड्राइवर, स्व-स्थान निर्धारण, पथ नियोजन और मोटर नियंत्रण को अलग-अलग प्रोग्राम (नोड्स) के रूप में चलाने और मानकीकृत संदेश और संचार के माध्यम से उन्हें संयोजित करने का आधार है। आप प्रोटोटाइप चरण में एक ही पायथन फ़ाइल से शुरुआत कर सकते हैं और इसे C++, रीयल-टाइम निष्पादन, कई कंप्यूटरों और उत्पाद के लिए सुरक्षा निगरानी तक विस्तारित कर सकते हैं। API को याद करना महत्वपूर्ण नहीं है — महत्वपूर्ण यह है कि डेटा, समय, विश्वसनीयता और शटडाउन पर सुरक्षित स्थिति का स्वामित्व किसके पास है, इसका डिज़ाइन कैसे किया जाए।
छवि: Robot ऑपरेटिंग सिस्टम लोगो, विकिमीडिया कॉमन्स (CC BY-SA 4.0)। लोगो मिडलवेयर की पहचान करता है और किसी विशिष्ट वितरण या डीडीएस कॉन्फ़िगरेशन की गारंटी नहीं देता है।
30-सेकंड का सारांश
-
एक नोड एक ज़िम्मेदारी वाली प्रक्रिया है, एक टॉपिक एक निरंतर स्ट्रीम को दर्शाता है, एक सेवा एक छोटे अनुरोध/प्रतिक्रिया को दर्शाती है, और एक क्रिया मध्यवर्ती प्रतिक्रिया के साथ एक लंबे कार्य को दर्शाती है।
-
ROS 2 का संचार डीडीएस पर चलता है, और प्रत्येक एंडपॉइंट के लिए QoS (विश्वसनीयता, इतिहास, गहराई, स्थायित्व, समय सीमा) का चयन किया जा सकता है। सेंसर और नियंत्रण के लिए समान सेटिंग्स का उपयोग करना आवश्यक नहीं है।
-
TF2 समय के साथ समन्वय फ़्रेमों के एक ट्री का प्रबंधन करता है।
map,odom,base_linkऔर सेंसर फ़्रेमों को मिला देने पर, रोबोट गलत जगह पर चला जाएगा, भले ही धारणा सही हो। -
वास्तविक हार्डवेयर पर, जीवनचक्र प्रबंधन, वॉचडॉग, विशेषाधिकार पृथक्करण, लॉगिंग और नेटवर्क ड्रॉपआउट के लिए फ़ेलसेफ़ जोड़ें। सिमुलेशन में काम करना सुरक्षा का प्रमाण नहीं है।
-
ROS 2 Jazzy जैसे दीर्घकालिक समर्थन वाले संस्करण को, साथ ही उससे मेल खाने वाले DDS, OS और ड्राइवर संयोजन को, शुरू से ही ठीक करें और एक प्रतिलिपि योग्य कार्यक्षेत्र बनाएं।
1. ROS 2 का व्यापक परिदृश्य
चित्र 1 — ROS 2 में, नोड्स DDS के माध्यम से एक दूसरे को खोजते और संवाद करते हैं। न केवल विषय नाम, बल्कि QoS, प्रकार, समय और निर्देशांक फ्रेम सभी को अनुबंध के हिस्से के रूप में माना जाता है।
ROS 2 ग्राफ को रनटाइम पर कॉन्फ़िगर किया जा सकता है। एक कैमरा नोड छवियां प्रकाशित करता है, एक परसेप्शन नोड उन्हें सब्सक्राइब करता है, और एक कंट्रोल नोड परिणामों के साथ-साथ स्व-स्थानीयकरण लेता है और वेग कमांड प्रकाशित करता है। यदि आप किसी नोड को किसी दूसरे कंप्यूटर पर ले जाते हैं, तब भी वही ग्राफ बना रहता है जब तक कि DDS खोज और सीरियलाइज़ेशन सही ढंग से काम करते हैं।
2. सही संचार प्रिमिटिव का चयन
| प्रकार | इसका उपयोग कहाँ होता है | उदाहरण | डिज़ाइन संबंधी विचार |
|---|---|---|---|
| विषय | निरंतर स्ट्रीम, कई-से-कई | /scan , /camera/image |
QoS, बैंडविड्थ, लेटेंसी, ड्रॉपआउट |
| सेवा | संक्षिप्त अनुरोध और प्रतिक्रिया | /reset_odometry |
टाइमआउट, रीएंट्रेंसी |
| क्रिया | प्रगति के साथ दीर्घकालिक कार्य | नेविगेशन, ग्रैस्पिंग | रद्दीकरण, सुरक्षित व्यवधान |
| पैरामीटर | स्टार्टअप-टाइम या निम्न-आवृत्ति कॉन्फ़िगरेशन | गेन, फ्रेम नाम | प्रकार, परिवर्तन अनुमतियाँ, पुनरुत्पादकता |
एक विषय संदेश में न केवल मान बल्कि header.stamp और frame_id भी शामिल होने चाहिए। यदि छवि टाइमस्टैम्प और IMU टाइमस्टैम्प सिंक्रनाइज़ नहीं हैं, तो एल्गोरिदम अभी भी परिणाम की गणना कर सकता है, लेकिन यह गति का गलत अनुमान लगाएगा। कैमरे की छवियों को विश्वसनीयता के साथ पुनः भेजने से बैंडविड्थ ओवरलोड हो सकती है, इसलिए प्रत्येक सेंसर की विशेषताओं के अनुरूप QoS चुनें।
3. "संचार अनुबंध" के रूप में QoS
ROS 2 में जांच करने के लिए न्यूनतम QoS सेटिंग्स हैं: विश्वसनीयता (सर्वोत्तम प्रयास/विश्वसनीय), स्थायित्व (अस्थिर/क्षणिक स्थानीय), इतिहास (अंतिम रखें/सभी रखें), गहराई, समयसीमा और जीवंतता। उच्च दर वाले LiDAR के लिए सर्वोत्तम प्रयास उपयुक्त हो सकता है, जो पुराने पैकेटों को छोड़ देता है, जबकि वेग कमांड, जो छूटे हुए संदेशों को बर्दाश्त नहीं कर सकते, उन्हें कम समयसीमा के साथ विश्वसनीय का उपयोग करना चाहिए।
यदि प्रकाशक और ग्राहक की QoS संगत नहीं हैं, तो वे एक ही विषय नाम के तहत भी संचार नहीं करेंगे। सेंसर ड्राइवर की पूर्व निर्धारित सेटिंग्स पर आँख बंद करके भरोसा करने के बजाय ros2 topic info -v /scan के साथ वास्तविक सेटिंग्स की जांच करें। नेटवर्क पार करते समय, MTU, वाई-फाई रीट्रांसमिशन, मल्टीकास्ट प्रतिबंध और समय सिंक्रनाइज़ेशन का एक साथ परीक्षण करें।
4. TF2 और समय
रोबोट की स्थिति को निर्देशांक फ़्रेमों के बीच रूपांतरण के रूप में व्यक्त किया जाता है। एक सामान्य ट्री इस प्रकार दिखता है:
map ──(SLAM/Localization)──> odom ──(odometry)──> base_link
├── base_laser
├── imu_link
└── camera_link
map दीर्घकालिक विश्व फ्रेम है, odom सुचारू अल्पकालिक ओडोमेट्री है, और base_link वाहन संदर्भ फ्रेम है। SLAM map → odom को सही करता है, जबकि व्हील/IMU अनुमान odom → base_link को उच्च दर पर अपडेट करता है। TF2 टाइमस्टैम्प के साथ ट्रांसफ़ॉर्म रखता है और उन्हें प्रत्येक सेंसर के अधिग्रहण समय के अनुसार इंटरपोलेट करता है।
निर्देशांक फ्रेम को दाएँ हाथ के रूप में मानकीकृत करें, और ऑप्टिकल फ्रेम (z आगे, x दाएँ, y नीचे) और वाहन फ्रेम (x आगे, y बाएँ, z ऊपर) के बीच अंतर को स्पष्ट करें। static_transform_publisher के साथ स्थिर ट्रांसफ़ॉर्म को ठीक करें, और गतिशील ट्रांसफ़ॉर्म को स्थिर के रूप में प्रकाशित न करें। TF ट्री में एक चक्र या एकाधिक पैरेंट्स होना एक डिज़ाइन त्रुटि है।
5. पैकेज और कार्यान्वयन प्रवाह
एक न्यूनतम ROS 2 पायथन नोड इस प्रकार दिखता है:
import rclpy
from rclpy.node import Node
from std_msgs.msg import Float32
class Speed(Node):
def __init__(self):
super().__init__('speed_node')
self.pub = self.create_publisher(Float32, '/speed', 10)
self.timer = self.create_timer(0.02, self.tick) # 50 Hz
def tick(self):
msg = Float32(); msg.data = 0.2
self.pub.publish(msg)
rclpy.init(); node = Speed(); rclpy.spin(node)
वास्तविक हार्डवेयर पर, मोटर को सीधे वेग कमांड न भेजें — बीच में एक अपस्ट्रीम नोड, गति सीमा, आपातकालीन स्टॉप और हार्डवेयर मॉनिटरिंग लगाएं। C++ के rclcpp का उपयोग करते समय भी, कॉलबैक समूह, एक्ज़ीक्यूटर, मेमोरी आवंटन और रीयल-टाइम व्यवहार की जांच करें।
कार्यक्षेत्र को src, build, install और log में विभाजित करें, और rosdep के साथ निर्भरताओं को हल करें। डॉकर या डेवलपर कंटेनर का उपयोग करके OS, DDS और कंपाइलर को पिन करें और ros2 doctor, ros2 node list, ros2 topic hz और tf2_tools को CI और फील्ड डायग्नोस्टिक्स दोनों में बिल्ड करें।
6. लाइफसाइकिल और सुरक्षा
सेंसर और एक्चुएटर को पावर ऑन होते ही कमांड स्वीकार करना आवश्यक नहीं है। लाइफसाइकिल नोड की स्थिति परिवर्तन — अनकॉन्फ़िगर → निष्क्रिय → सक्रिय → अंतिम रूप दिया गया — ड्राइवर आरंभीकरण, अंशांकन, संचार जांच और आउटपुट प्राधिकरण को अलग करते हैं। जब वॉचडॉग अपनी हार्टबीट खो देता है, तो वेलोसिटी कमांड को शून्य कर दें और हार्डवेयर पक्ष पर ब्रेक या रिले को भी खोल दें।
सुरक्षा की दृष्टि से, ROS 2 का संदेश संचार अपने आप में कार्यात्मक-सुरक्षा मानकों को पूरा नहीं करता है। IEC 61508/ISO 26262/ISO 13849 और इसी तरह के मानकों के लागू दायरे की जाँच करें, और सुरक्षा कार्यों को एक निगरानी प्रणाली, एक प्रमाणित MCU और एक भौतिक आपातकालीन स्टॉप में अलग करें। नेटवर्क से कनेक्ट करते समय, SROS 2 कुंजी और प्रमाणपत्र, DDS सुरक्षा, एक्सेस कंट्रोल और लॉग ऑडिटिंग को अपनाएँ।
7. वर्तमान पारिस्थितिकी तंत्र और अनुसंधान
Nav2 स्व-स्थानीकरण, मैपिंग, पथ नियोजन और क्रियाओं और जीवनचक्र प्रबंधन के माध्यम से नियंत्रण को एकीकृत करता है, और ros2_control हार्डवेयर और नियंत्रकों के बीच की सीमा को मानकीकृत करता है। MoveIt 2 एक मैनिपुलेटर की गतिकी, टकराव जाँच और प्रक्षेपवक्र नियोजन को संभालता है। Gazebo या Webots में सिमुलेशन और rosbag2 के साथ सेंसर लॉग को पुनः चलाने से वास्तविक रोबोट को रोके बिना प्रतिगमन परीक्षण संभव हो पाता है।
जीरो-कॉपी संचार, GPU/NPU का उपयोग करने वाले टाइप किए गए इमेज पाइपलाइन, नियतात्मक निष्पादक, वितरित शिक्षण और DDS से परे क्लाउड रोबोटिक्स पर अनुसंधान प्रगति कर रहा है। किसी नई सुविधा को अपनाते समय, केवल बेंचमार्क ही नहीं, बल्कि नेटवर्क ड्रॉपआउट, समय विचलन, प्रक्रिया रीस्टार्ट, सेंसर ड्रॉपआउट और संदेश की गलत लंबाई जैसी समस्याओं का भी परीक्षण करें।
सारांश
ROS 2 एक रोबोट को अलग-अलग हिस्सों के संग्रह से एक पुन: प्रयोज्य वितरित प्रणाली में बदल देता है। नोड की जिम्मेदारियों, टॉपिक QoS, TF2 के निर्देशांक और समय, जीवनचक्र और सुरक्षित स्थितियों को पहले से ही डिज़ाइन करें, और एल्गोरिदम बदलने पर भी पूरी प्रणाली मजबूत बनी रहेगी।
क्या नोड्स के बीच कनेक्टिविटी सही संचालन सुनिश्चित करती है?
टाइमस्टैम्प, फ़्रेम, QoS और दरें भी मेल खानी चाहिए।
डेटा प्राप्त होने का यह अर्थ नहीं है कि वह नियंत्रण के लिए उपयोगी है। ## संदर्भ - [ROS 2 आधिकारिक दस्तावेज़](https://docs.ros.org/en/rolling/) - [ROS 2 सेवा गुणवत्ता सेटिंग्स](https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Quality-of-Service-Settings.html) - [ROS 2 tf2](https://docs.ros.org/en/rolling/Concepts/Intermediate/About-Tf2.html) - [DDS फाउंडेशन](https://www.dds-foundation.org/) - [Nav2 दस्तावेज़](https://docs.nav2.org/) - [ros2_control](https://control.ros.org/)
टिप्पणियाँ
पहले लॉग इन करें।
अभी कोई डेटा नहीं है।