आपके रोसबैग को प्रबंधित करने के लिए 9 भयानक ओपन-सोर्स टूल

Nov 24 2022
एवोकार्गो इंजीनियरों द्वारा किया गया चयन चाहे आप आरओएस के साथ शुरुआत कर रहे हों या पहले से ही एक गहन डेवलपर हों, आप महसूस कर सकते हैं कि कुछ चीजें और संचालन आसान, तेज या अधिक आसानी से किए जा सकते हैं। आप अभी ROS के लिए कुछ उपकरण बनाने के बारे में भी सोच सकते हैं, उदाहरण के लिए वह जो आपके बैग के मेटाडेटा को अच्छे दृश्य में दिखाएगा।

इवोकार्गो इंजीनियरों द्वारा किया गया चयन

चाहे आप आरओएस के साथ शुरुआत कर रहे हों या पहले से ही एक गहन डेवलपर हों, आप महसूस कर सकते हैं कि कुछ चीजें और संचालन आसान, तेज या अधिक आसानी से किए जा सकते हैं। आप अभी ROS के लिए कुछ उपकरण बनाने के बारे में भी सोच सकते हैं, उदाहरण के लिए वह जो आपके बैग के मेटाडेटा को अच्छे दृश्य में दिखाएगा। ऐसा करने से पहले, हमारे ओपन-सोर्स आरओएस पैकेजों के चयन की जाँच करें - आपको तैयार-निर्मित समाधान मिल सकते हैं जो आपका बहुत समय और मेहनत बचाएंगे।

इस पोस्ट में, हम आरओएस बैग के पैकेज पर ध्यान केंद्रित करते हैं जो बैग डेटा को देखने और संपादित करने में आपकी सहायता करते हैं। कुछ पैकेजों के साथ हम और आगे बढ़ते हैं और प्रदर्शित करते हैं कि आप उन्हें अपनी विशिष्ट उत्पाद आवश्यकताओं के लिए कैसे अपग्रेड कर सकते हैं।

स्वायत्त वाहन एक स्वायत्त कार में धारणा, स्थानीयकरण, टकराव से बचाव, आत्म-निदान और अन्य आवश्यक कार्यों के लिए आवश्यक बड़ी मात्रा में डेटा उत्पन्न करते हैं। इस तरह के डेटा एक अत्यधिक मूल्यवान संपत्ति हैं क्योंकि उनका उपयोग तंत्रिका नेटवर्क प्रशिक्षण और घटना की जांच के लिए किया जाता है। उदाहरण के लिए, यूएस नेशनल हाईवे ट्रैफिक सेफ्टी एडमिनिस्ट्रेशन ने कुछ निर्माताओं और ऑपरेटरों को ऑटोनॉमस सिस्टम की सुरक्षा की जांच करने और परिणामों को सारांशित करने के लिए SAE लेवल 2 -5 एडवांस्ड ड्राइवर असिस्टेंस सिस्टम्स (ADAS) से लैस वाहनों से जुड़े कुछ क्रैश की रिपोर्ट करने के लिए बाध्य किया है। क्रैश रिपोर्ट । यह दूसरे देशों में भी एक आम प्रथा बन सकती है।

बोर्ड पर उपकरण और अनुप्रयोग परिदृश्यों के कारण उत्पादित डेटा के अनुमान विभिन्न वाहनों के लिए भिन्न हो सकते हैं। बोर्ड पर कई उच्च-रिज़ॉल्यूशन कैमरे, लिडार, रडार और अन्य सेंसर के साथ, एक स्वायत्त कार कुछ घंटों के आवागमन के लिए 15TB तक डेटा उत्पन्न कर सकती है। इसका मतलब यह है कि रोबोटैक्सिस यात्री यात्राओं को बिना रुके कथित तौर पर प्रति दिन 450 टीबी कर सकता है ( यहां और यहां और देखें )।

यदि आप ROS का उपयोग कर रहे हैं, तो सभी डेटा को बैग फ़ाइलों में लिखा जाता है जिन्हें रिकॉर्ड और संग्रहीत किया जाता है ताकि आप बाद में उन्हें इंडेक्स, एनोटेट और प्ले कर सकें।

चित्र 1. ROS बैग फ़ाइलों की सूची

तो, आप फ़ाइलों की एक प्रभावशाली सूची के साथ समाप्त होते हैं जिन्हें आपको नेविगेट करने और विश्लेषण करने की आवश्यकता होती है। इसे पूरा करने के लिए, आप मुफ्त ROS पैकेज का उपयोग कर सकते हैं जिसे हमने इस आलेख में वर्णित करने के लिए चुना है। उनमें से कुछ आरओएस इंडेक्स में शामिल हैं , कुछ नहीं हैं। और उनमें से कुछ केवल ROS 1 के लिए डिज़ाइन किए गए हैं — हम उस पर नोट्स बनाएंगे।

एक अच्छे UI में बैग देखना

जैसा कि आप चित्र 1 में देख सकते हैं , बैग मूल रूप से एक निर्देशिका में फ़ाइलें हैं। आपको उनके साथ काम करने के लिए कमांड लाइन इंटरफ़ेस का उपयोग करना होगा, और आप बहुत कुछ नहीं कर सकते हैं - डिफ़ॉल्ट रूप से, ROS आपको एक बैग फ़ाइल वापस चलाने, बैग के बारे में जानकारी देखने, उसके आकार और अवधि, विषयों, प्रकारों को देखने की अनुमति देता है। संदेशों और उनकी मात्रा का। जितना अधिक डेटा आप जमा करते हैं, उतना ही मुश्किल होता है कि आपको कुछ चाहिए।

Southwest Research Institute द्वारा बैग डेटाबेस टूल ROS बैग फ़ाइलों के लिए आपकी निर्देशिका की निगरानी के लिए एक अनुकूल वेब इंटरफ़ेस प्रदान करता है। यह आपको उपयोगी मेटाडेटा जैसे रिकॉर्डिंग की तिथि, मार्ग, संबंधित छवि और बहुत कुछ देखने की अनुमति देता है।

बैग के साथ आपका इंटरेक्शन इतना आसान और कुशल हो जाता है!

चित्र 2. बैग डेटाबेस में बैग देखना

इसके अलावा, बैग डेटाबेस आपको विभिन्न पोस्ट-प्रोसेसिंग स्क्रिप्ट्स को जोड़ने की अनुमति देता है जो तब पृथक डॉकटर कंटेनरों में चलाई जा सकती हैं। उदाहरण के लिए, एवोकार्गो में, हमने एक bag_indexerस्क्रिप्ट लिखी है जो एक पीएनजी छवि में बैग सामग्री का एक व्यापक सारांश प्रदर्शित करती है।

चित्रा 3. थैला डेटाबेस में स्क्रिप्ट के साथ उत्पन्न थैला सारांश

एक आँख की झलक के साथ, आप निम्नलिखित का अंदाजा लगा सकते हैं:

  • थंबनेल के माध्यम से लेन की गुणवत्ता, प्रकाश और मौसम की स्थिति
  • संदर्भ मार्ग और ओडोमेट्री, जीएनएसएस और स्थानीयकरण के आधार पर इससे विचलन
  • किसी भी समय या स्थिति में गति
  • वाहन नियंत्रण मोड, या वाहन को कितने समय तक मैन्युअल रूप से संचालित करना पड़ा
  • सवारी की दूरी और अवधि
  • बैग का नाम, और बहुत कुछ

स्नैपशॉट के पैरामीटर, जैसे जानकारी ब्लॉक की स्थिति और रंग और कैमरा छवियों से थंबनेल की संख्या, कॉन्फ़िगरेशन फ़ाइल में परिभाषित की गई हैं।

बैग डेटाबेस में , bag_indexerस्क्रिप्ट इस प्रकार दिखती है:

चित्र 4. पोस्ट-प्रोसेसिंग स्क्रिप्ट जोड़ने के लिए विंडो

अधिक विवरण और स्क्रिप्ट के उदाहरण के लिए, बैग डेटाबेस दस्तावेज़ीकरण देखें ।

मेटाडेटा जोड़ना

बैग मेटाडेटा में बैग रिकॉर्डिंग की स्थिति जैसे रिकॉर्डिंग स्थान, OS और सॉफ़्टवेयर संस्करण, कनेक्टेड डिवाइस, मौसम की स्थिति, कार्य का विवरण होता है। आम तौर पर, आप ऐसे डेटा को एक अलग फाइल में स्टोर करते हैं। हालाँकि, कुछ बैग विज़ुअलाइज़र, जैसे बैग डेटाबेस , को मेटाडेटा को बैग फ़ाइलों में एकीकृत करने की आवश्यकता होती है।

मेटाडेटा को सीधे ROS1 बैग फ़ाइल में लिखने के लिए, आप rosbag_metadata पैकेज का उपयोग कर सकते हैं। बॉक्स के बाहर यह आपकी टिप्पणियों को सिस्टम डेटा जैसे आरओएस पैकेज संस्करण, गिट रिपॉजिटरीज़ पर जानकारी और गिट-प्रतिबद्ध हैश, पर्यावरण चर, नेटवर्क कॉन्फ़िगरेशन के साथ सहेजता है। इन सभी डेटा को /मेटाडेटा विषय में YAML फ़ाइल में टेक्स्ट के रूप में जोड़ा जाता है।

आप rosbag_metadata का जैसा है वैसा ही उपयोग कर सकते हैं या अपनी विशेष उत्पाद आवश्यकताओं को पूरा करने के लिए इसे पूरा कर सकते हैं। उदाहरण के लिए, इवोकार्गो की रसद सेवा के लिए, हमें हाथ में अधिक विशिष्ट जानकारी की आवश्यकता थी जैसे कार मॉडल और संख्या, मूल अंशांकन जानकारी और मानचित्र। इसलिए, हमने rosbag_metadata के आधार पर अपना स्वयं का पैकेज बनाया, जो स्वायत्त वाहनों के प्रबंधन के लिए अधिक अनुकूलित है। और जरूरत पड़ने पर हम आसानी से और फील्ड जोड़ सकते हैं।

चित्र 8. बैग में उत्पाद-विशिष्ट मेटाडेटा जोड़ना

प्लेबैक और विज़ुअलाइज़ेशन

ROS 1 के विकल्पों में से एक Webviz होगा, एक बैग प्लेबैक और विज़ुअलाइज़ेशन वेब टूल जिसे क्रूज़ इंजीनियरों द्वारा विकसित और ओपन-सोर्स किया गया है । यह आपको डेटा में तत्काल दृश्य अंतर्दृष्टि प्राप्त करने के लिए ROS बैग फ़ाइलों को खींचने और छोड़ने की अनुमति देता है। इतना सरल है! इसके अलावा, यह एक वेब ऐप है, इसलिए आपको कोई विशेष वातावरण परिनियोजित करने की आवश्यकता नहीं है।

चित्र 5. यह चित्रण एस्तेर एस. वेन के लेख "वेबविज़: एन ओपन सोर्स प्लेटफ़ॉर्म फॉर रोबोटिक्स डेटा विज़ुअलाइज़ेशन" से लिया गया है

इसका इंटरफ़ेस अनुकूलन योग्य है जिससे आप पैनल जोड़ सकते हैं और एक ही स्थान पर अधिक प्रासंगिक डेटा देख सकते हैं। इसके अलावा, आप इसे अन्य उपकरणों के साथ एकीकृत कर सकते हैं - उदाहरण के लिए, आप सीधे बैग डेटाबेस विंडो से वेबविज़ खोल सकते हैं। (यह सेटअप यहां वर्णित है )।

चित्र 6. बैग डेटाबेस में मेनू से वेबविज़ वेब ऐप खोलना

एक अन्य उपकरण जिसका मैं यहां उल्लेख करना चाहूंगा, वह है फॉक्सग्लोव स्टूडियो । इसका रोबोटिक्स में विज़ुअलाइज़ेशन और विश्लेषण का एक ही उद्देश्य है, लेकिन यह ROS 1 और ROS 2 दोनों का समर्थन करके और व्यावसायिक समर्थन प्रदान करके आगे बढ़ता है। यह क्रूज़ के वेबविज़ प्रोजेक्ट के कांटे के रूप में शुरू हुआ और अब इसे सक्रिय रूप से विकसित किया जा रहा है और इसके फीचर-सेट का विस्तार किया जा रहा है। यह एक क्रॉस-प्लेटफ़ॉर्म वेब ऐप के रूप में और एक डेस्कटॉप ऐप के रूप में उपलब्ध है जो Linux, macOS और Windows उपकरणों पर अधिक सुविधाओं और कस्टम पैनल एक्सटेंशन को अनलॉक करता है।

चित्र 7. फॉक्सग्लोव इंटरफ़ेस में एक बैग बजाना

आप फॉक्सग्लोव स्टूडियो के विकास और अपडेट के बारे में मीडियम पर उनके ब्लॉग में पढ़ सकते हैं या उनकी वेबसाइट पर जा सकते हैं ।

संपादन बैग

यदि आप ROS 1 में बैग फ़ाइलों को संपादित करना चाहते हैं, तो Davide Faconti द्वारा rosbag_editor देखें । यह टूल आपको बैग फ़ाइलों में बैच परिवर्तन लागू करने की अनुमति नहीं देता है, लेकिन यह कुछ बैग संपादित करने के लिए उपयोगी हो सकता है, उदाहरण के लिए प्रदर्शन के लिए। इसका सरल UI आपको मैन्युअल रूप से नाम बदलने और विषयों को हटाने की अनुमति देता है, फ़ाइल के प्रारंभ या अंत को काटकर बैग की अवधि को बदल देता है, फ़ाइल का आकार छोटा करने के लिए संपीड़न प्रकार को बदल देता है और परिवर्तनों को हटा देता है।

एवोकार्गो में, हमें एक ऐसे उपकरण की आवश्यकता थी जो ROS1 में रिकॉर्ड किए गए बैगों के बैच संपादन की अनुमति दे, इसलिए हमारे इंजीनियर व्लादिमीर बर्मिस्ट्रोव ने ros_bag_migration पैकेज बनाया है। यह आपको रिकॉर्ड किए गए बैग में संदेशों के प्रारूप को बदलने की अनुमति देता है - न केवल संदेशों का नाम बदलें और हटाएं, बल्कि संदेश को दो में विभाजित करें और कुछ संदेश संस्करणों के लिए परिभाषित नियम लागू करें। यह पैकेज उन स्थितियों के लिए पूरी तरह से काम करता है जब आप संदेश परिभाषाओं के एक अद्यतन सेट के साथ नए बैग रिकॉर्ड करने का निर्णय लेते हैं, और आप संगतता के अनुसार पुराने बैग को बदलना चाहते हैं।

बिल्डिंग ग्राफ

अगला, हम प्लॉटजगलर के बारे में बात करने जा रहे हैं , एक अविश्वसनीय ग्राफ बिल्डर ( डेविड फैकोंटी द्वारा एक और पैकेज )। प्लॉटजगलर आपको अपने सिस्टम या रोबोट के अंदर बहने वाले किसी भी डेटा का विश्लेषण करने की अनुमति देता है। डिबगिंग इसकी विशेषताओं के लिए बहुत आसान हो जाता है:

  • आप वास्तविक समय में या PlotJuggler में एक या कई .bag फ़ाइलों को लोड करके ROS विषयों में डेटा के लिए ग्राफ़ बना सकते हैं
  • चित्रा 9. बैग फ़ाइल के माध्यम से स्लाइडिंग
  • एकाधिक डेटा प्लॉट जोड़ना और प्रबंधित करना बहुत उपयोगकर्ता के अनुकूल है। उदाहरण के लिए, आप कुछ 2D डेटा को पकड़कर एक XY टैब बना सकते हैं और इसे हर टाइमस्टैम्प के लिए 2D स्थिति की कल्पना करने के लिए प्लॉट कर सकते हैं।
  • प्लॉट्स के लिए बहुत सारे बिल्ट-इन डेटा ट्रांसफ़ॉर्मेशन के अवसर हैं, उदाहरण के लिए आप डेटा के लिए ऑफ़सेट हटा सकते हैं, इसे स्केल कर सकते हैं, इसे एकीकृत कर सकते हैं, आउटलेयर हटा सकते हैं, और इसी तरह। आप रूपांतरणों का संयोजन भी बना सकते हैं, जो विभिन्न स्रोतों से डेटा की तुलना करने के लिए बहुत उपयोगी है।
  • यदि आपको कोई उपयुक्त ट्रांसफ़ॉर्म फ़ंक्शन नहीं मिला है, तो आप अपना स्वयं का बना सकते हैं। उदाहरण के लिए, आप चतुष्कोणों से यव कोण निकालने और कल्पना करने के लिए एक फ़ंक्शन लिख सकते हैं।
  • आखिरी बात भी बहुत महत्वपूर्ण है! हत्यारा सुविधा: जब आप बैग के साथ काम कर रहे हों तो आप "आरओएस टॉपिक री-पब्लिशर" को सक्षम कर सकते हैं। इसका मतलब है कि आप समय स्लाइडर को किसी भी पल पर खींच सकते हैं और प्लॉटजगलर चुने गए टाइमस्टैम्प से संबंधित सभी विषयों से डेटा प्रकाशित करेगा। यह बहुत उपयोगी है जब आप किसी विशेष क्षण के लिए कैमरों से छवियां देखना चाहते हैं, डायग्नोस्टिक संदेश देखें या यहां तक ​​​​कि किसी अन्य विज़ुअलाइज़ेशन टूल जैसे RVIZ में डेटा के हर टुकड़े की कल्पना करें।

संदेश वितरण

परीक्षण और डिबगिंग उद्देश्यों के लिए, यह महत्वपूर्ण है कि आपके प्रयोगों के परिणाम स्थिर रूप से पुन: प्रस्तुत किए जाएं। उदाहरण के लिए, जब आप कुछ सेंसर डेटा वाले बैग पर स्थानीयकरण एल्गोरिदम का परीक्षण करते हैं, तो आप निश्चित रूप से हर बार जब आप इस एल्गोरिदम को चलाते हैं तो उसी परिणाम की अपेक्षा करते हैं। हालाँकि, ROS में प्रकाशित-सदस्यता तर्क 100% संदेश वितरण की गारंटी नहीं दे सकता है और यह संभावना है कि आपके नोड सभी संदेशों को एक ही क्रम में बैग में संसाधित नहीं करेंगे।

ROS 1 के लिए बैच_रोस पैकेज आपको बैग फ़ाइल में उन विषयों को निर्दिष्ट करने की अनुमति देता है जो आपके कार्य के लिए महत्वपूर्ण हैं। बैच_रोस इन विषयों से प्रत्येक संदेश प्रकाशित करने के बाद सेवा कॉल को सिंक्रनाइज़ करने की प्रतीक्षा करेगा। यह सुनिश्चित करता है कि आपके नोड द्वारा परिभाषित क्रम में उन्हें एक-एक करके संसाधित करने के बाद बैग फ़ाइल से संदेश प्रकाशित किए जाएंगे।

चित्र 10. किसी एक विषय पर एक संदेश भेजे जाने के बाद, खेलना बंद हो जाता है और आपके नोड से ट्रिगर सेवा के लिए प्रतीक्षा करता है जो खिलाड़ी को प्रकाशन जारी रखने का संकेत देता है

इस प्रकार बैच_रोस बैग के निर्धारक और दोहराने योग्य प्रसंस्करण को सुनिश्चित करता है।

रिकॉर्डिंग स्थिति

जबकि एक बैग रिकॉर्ड किया जा रहा है, डिफ़ॉल्ट ROS 1 कॉन्फ़िगरेशन केवल "रिकॉर्डिंग ..." संदेश दिखाता है। अगर कुछ भी गलत होता है, तो आपको इसके बारे में तभी पता चलता है जब कार्य पूरा हो जाता है और विफल हो जाता है। रिकॉर्डिंग प्रक्रिया को अधिक जानकारीपूर्ण बनाने के लिए, ROS 1 के लिए rosbag_fancy टर्मिनल इंटरफ़ेस का प्रयास करें। यह वास्तविक समय में उपयोगी डेटा प्रदर्शित करता है, जैसे कि रिकॉर्ड किए जा रहे विषय, मेमोरी उपयोग, बैग फ़ाइल आकार, और बहुत कुछ - सब कुछ एक सुपर सरल तालिका में।

चित्र 11. यह चित्रण जीथब पर rosbag_fancy पेज से लिया गया है

आप गिराए गए संदेशों ( बूंदों ) की संख्या भी देख सकते हैं जो हमें अगले अंक और संभावित समाधान की ओर ले जाता है।

इसे यहाँ तक पढ़ने के लिए धन्यवाद — आपको ROS के साथ अपने अनुभव में उतना ही सुधार करना चाहिए जितना हम करते हैं! चलिए संक्षेप करते हैं। इस पोस्ट में, हमने निम्नलिखित आरओएस पैकेजों को देखा है: बैग डेटाबेस , रोसबैग_मेटाडेटा , वेबविज़ , फॉक्सग्लोव स्टूडियो , रोसबैग_एडिटर , रोस_बैग_माइग्रेशन , प्लॉटजुगलर , रोसबैग_फैंसी , और बैच_रोस

यदि आप पैकेजों के इस चयन को उपयोगी पाते हैं, तो ताली बजाकर और टिप्पणी करके हमें बताएं। हम खुशी-खुशी अपने ब्लॉग में इस तरह के और अवलोकन साझा करेंगे, उदाहरण के लिए, परीक्षण, सिमुलेशन, प्रलेखन और अन्य उद्देश्यों के लिए उल्लेखनीय ROS पैकेज हैं।