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

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

वीडियो
रोबोट की तरफ से वीडियो प्राप्त करने के लिए, हम Kinect RGB कैमरा और एक अतिरिक्त वेब कैमरा का उपयोग करते हैं, हमारे मामले में यह लैपटॉप में निर्मित एक वेब कैमरा है, लेकिन एक अलग से उपयोग करना भी संभव है। एक वह मोर्चा है, जहां हम, वास्तव में, जो कुछ भी हो रहा है, उसे देखते हैं, दूसरा - पैरों के नीचे, जहां सभी वस्तुएं जो संभवतः रोबोट के संचालन में हस्तक्षेप कर सकती हैं, वे हमें दिखाई देती हैं। कैमरों से छवियाँ मनुष्य के लिए सुविधाजनक और प्राकृतिक तरीके से वेब इंटरफेस में स्थित हैं। यदि हम यह देखना चाहते हैं कि हमारे पैरों के नीचे क्या है, तो हम अपने सिर को नीचे कर लेते हैं, उसी सिद्धांत का उपयोग हमारे वेब इंटरफेस में किया जाता है - हम नीचे की स्क्रीन को देखते हैं।
वीडियो प्रतिक्रिया क्लाइंट की तरफ स्थित एक वेब कैमरा के माध्यम से प्रदान की जाती है। परिणामी छवि को रोबोट के प्रदर्शन पर या मोबाइल प्लेटफ़ॉर्म पर स्थापित लैपटॉप पर प्रदर्शित किया जाता है। वीडियो स्ट्रीम ट्रांसमिशन एसआईपी प्रोटोकॉल के माध्यम से आयोजित किया जाता है - यह स्काइप प्रोटोकॉल का एक एनालॉग है, जो व्यापक रूप से कार्यालयों और सेवा साइटों में पीबीएक्स के रूप में उपयोग किया जाता है।
ध्वनि
ध्वनि संचारित करने के लिए, हम काइनेक्ट में अंतर्निहित माइक्रोफ़ोन नेटवर्क का उपयोग करते हैं। ये माइक्रोफोन अच्छी गुणवत्ता वाले हैं, जो विभिन्न शोरों की घटना को कम करते हैं। ऑडियो स्ट्रीम को संचारित करने के लिए हम उसी SIP का उपयोग करते हैं।
भविष्य में, हम Kinect माइक्रोफोन का अधिकतम उपयोग करना चाहते हैं और स्टीरियो साउंड ट्रांसमिशन का एहसास करना चाहते हैं। निस्संदेह, यह उपयोगकर्ता को टेलीप्रेज़ेंस के प्रभाव का एक बड़ा अर्थ प्राप्त करने की अनुमति देगा।
अंतरिक्ष में घूम रहा है
आंदोलन के लिए, रोबोट के रिमोट कंट्रोल के लिए दो विकल्प हैं: मैनुअल और स्वायत्त। चूंकि हमारा रोबोट पहले से ही जानता है कि अंतरिक्ष में स्वतंत्र रूप से कैसे नेविगेट किया जाए, इसलिए इस अवसर का उपयोग न करना मूर्खता होगी। एक व्यक्ति की तरह, एक रोबोट के लिए अंतरिक्ष में नेविगेट करना आवश्यक है, और इसके लिए वह एक कमरे के नक्शे का उपयोग करता है, जो पहले संवेदी जानकारी के आधार पर बनाया गया था।
कमरे में उपयोगकर्ता के अधिक सुविधाजनक अभिविन्यास के लिए वेब इंटरफ़ेस में, निचले बाएं कोने में एक मिनी-मैप प्रदर्शित किया जाता है, जो किसी भी नियंत्रण मोड के लिए हमारे लिए उपयोगी है। हम हमेशा मिनिमैप के केंद्र में होते हैं, और कार्ड स्वयं घूमता है और रोबोट के आंदोलन के अनुसार चलता है। तो हम ठीक से समझ सकते हैं कि रोबोट कहाँ स्थित है, और जब आप इस पर डबल-क्लिक करते हैं, तो एक वैश्विक मानचित्र सामने आता है।

मैनुअल नियंत्रण
असली हार्डकोर मोड। इस मोड में, हम तीर कुंजी के साथ कीबोर्ड से रोबोट को नियंत्रित करते हैं और बाधाओं के बावजूद भी कहीं भी जाने के लिए स्वतंत्र हैं। परिणाम एक पहले व्यक्ति रेसिंग सिम्युलेटर का एक झलक है, केवल तार के दूसरे छोर पर एक वास्तविक रोबोट और एक वास्तविक वातावरण है। बाकी सब कुछ, स्लाइडर्स के रूप में गति नियंत्रण भी उपलब्ध है। पहला स्लाइडर रैखिक गति के लिए जिम्मेदार है, और दूसरा - रोबोट के रोटेशन की गति के लिए। स्पष्ट सादगी के बावजूद, इस तरह से प्रबंधन करने वाला पहला आयाम की भावना की कमी के कारण काफी मुश्किल है।
स्वायत्त नेविगेशन
ऑफ़लाइन नेविगेशन में उपयोगकर्ता की भूमिका को कम करना शामिल है। उपयोगकर्ता को एक या कई गंतव्य बिंदुओं को इंगित करने के लिए यह आवश्यक और पर्याप्त है, और रोबोट, मार्ग बिछाने और बाधाओं के चारों ओर जा रहा है, स्वतंत्र रूप से उनके साथ आगे बढ़ेगा। इस मामले में, दृश्य और ध्वनि दोनों संपर्क संरक्षित रहेंगे। यदि आवश्यक हो, तो उपयोगकर्ता स्वायत्त आंदोलन करना बंद कर सकता है और मैन्युअल नियंत्रण मोड पर स्विच कर सकता है। स्वायत्त मोड के लिए, वार्ताकार का अनुसरण करने का कार्य भी प्रासंगिक होगा, जिसका कार्यान्वयन हमारी योजनाओं में है।
कार्यक्षमता की स्पष्टता के बावजूद, अभी भी कुछ काम करना बाकी है। हम वेब-इंटरफेस को रोबोट के लिए बैटरी स्तर और अन्य सेंसर के संकेतकों के साथ एक "कंट्रोल पैनल" बनाना चाहते हैं, जिसके माध्यम से रोबोट को कॉन्फ़िगर और कैलिब्रेट किया जाएगा।
दूरस्थ वातावरण में वस्तुओं का हेरफेर
हर टेलिप्रेज़ेंस रोबोट किसी आइटम हेरफेर फ़ंक्शन का दावा नहीं करता है। इसके लिए कई कारण हैं, जिनमें से एक स्वयं मैनिपुलेटर्स की उच्च लागत है, जिसकी लागत कभी-कभी खुद रोबोट की लागत और सॉफ्टवेयर कार्यान्वयन की जटिलता के साथ सराहनीय है।
टॉड बॉट एक अपवाद है और उसका अभी भी हाथ है। तो यह सॉफ्टवेयर पर निर्भर है। जोड़तोड़ को नियंत्रित करने का सबसे आसान तरीका वेब-इंटरफ़ेस पैनल पर स्लाइडर्स / स्क्रॉल को जगह देना है, जो मैनिपुलेटर की स्वतंत्रता के प्रत्येक डिग्री के लिए जिम्मेदार हैं। केवल एक ही चीज़ है: इस तरह के नियंत्रण के साथ कुछ भी हड़पना अविश्वसनीय रूप से मुश्किल है। मैं पहले से जानता हूं - मैंने टेबल से मैचों का एक बॉक्स लेने की कोशिश की। यह सब लगभग 5 मिनट पर किया। उसी समय, आसन्न वस्तुओं द्वारा चराई या पलटने की संभावना 100% हो जाती है। आप निश्चित रूप से, एक सप्ताह के लिए प्रशिक्षित कर सकते हैं और अपने परिणामों में सुधार कर सकते हैं, लेकिन इस मामले में यह सबसे आसान और सबसे सुविधाजनक तरीका नहीं है।
जैसा कि हम वेब-इंटरफ़ेस के माध्यम से जोड़तोड़ नियंत्रण देखते हैं। यह प्रक्रिया यथासंभव स्वचालित होनी चाहिए, जिससे उपयोगकर्ता को नसों और ताकत की आवश्यकता नहीं होगी। उपयोगकर्ता को केवल उस ऑब्जेक्ट की पसंद तक सीमित होना चाहिए जो वीडियो स्ट्रीम में मिला है, और सिस्टम बाकी काम करेगा। इसलिए, हमने मूव इट सॉफ्टवेयर मॉड्यूल को हाथ का नियंत्रण सौंपा, जिसके बारे में हमने
पहले लिखा
था । फिलहाल, हाथ पहले से ही जानता है कि चलते समय आसपास की वस्तुओं से टकराने से कैसे बचा जाए। हम वस्तुओं के कैप्चर में संतोषजनक परिणाम प्राप्त करने के लिए वेब इंटरफेस के साथ MoveIt के एकीकरण का प्रदर्शन करेंगे। अब हमें इस दिशा में कुछ सफलताएँ मिली हैं।
हमने ROS के साथ वेब इंटरफ़ेस के साथ दोस्त कैसे बनाए?
Telepresence के सॉफ़्टवेयर कार्यान्वयन के बारे में बोलते हुए, एक शुरुआत के लिए यह याद रखने योग्य है कि टॉड बॉट रोबोट को ROS फ्रेमवर्क के तहत नियंत्रित किया जाता है। आरओएस में, सभी कार्यक्षमता को सॉफ्टवेयर नोड्स के बीच वितरित किया जाता है जो विषयों में प्रकाशित संदेशों के माध्यम से एक दूसरे के साथ संवाद करते हैं। तदनुसार, सिस्टम में एकीकृत किसी भी नए सॉफ़्टवेयर को इस तरह के आरओएस नोड के रूप में प्रस्तुत किया जाना चाहिए।
टेलिप्रेसेंस की कार्यक्षमता को लागू करने के लिए, एक ओर, हमें HTML पृष्ठों को उत्पन्न करने और POST / GET अनुरोधों को संसाधित करने की क्षमता के साथ एक वेब सर्वर की आवश्यकता है, दूसरी ओर, हमें ROS से ओडोमेट्री और नेविगेशन मैप डेटा प्राप्त करने और कमरे में गश्त और आंदोलन नियंत्रण आदेश भेजने की आवश्यकता है। ।
इन आवश्यकताओं के आधार पर, हमने एक आरओएस सॉफ्टवेयर नोड के रूप में सभी टेलीप्रेजेंस कार्यक्षमता को डिजाइन करने का निर्णय लिया, एक वेब सर्वर के रूप में, एक न्यूनतम पायथन वेब फ्रेमवर्क चेरीपी का उपयोग करें, और एक साधारण कुंजी-मूल्य प्रारूप में डेटा को Redis NoSQL भंडारण में सहेजें। SIP क्लाइंट के रूप में, HTML5 sipML5 क्लाइंट का उपयोग किया गया था, जो आपको सीधे ब्राउज़र में ऑडियो / वीडियो कॉल करने की अनुमति देता है।
यह एक साथ कैसे काम करता है? AJAX के माध्यम से एक वेब ब्राउज़र में ऑपरेटर रोबोट के वेब सर्वर पर डेटा स्थानांतरित करता है। टेलीप्रेज़ेंस नोड पायथन स्क्रिप्ट वेब सर्वर से डेटा को संसाधित करती है और इसे अन्य ROS नोड्स में भेजती है, जो पहले से ही रोबोट पर सीधे कमांड निष्पादित करते हैं। टेलिप्रेज़ेंस नोड से, ऑपरेटर के पक्ष को इसी तरह काइनेट से मैप, ओडोमेट्री और वीडियो स्ट्रीम पर डेटा प्राप्त होता है, जो एचटीएमएल 5 कैनवस में प्रस्तुत किए जाते हैं। इसी समय, ऑडियो / वीडियो स्ट्रीम ऑपरेटर और रोबोट sipML5 ग्राहकों के माध्यम से प्रसारित किया जाता है। वैसे, एसआईपी ग्राहकों को जोड़ने के लिए नि: शुल्क एसआईपी सेवाओं की गुणवत्ता शिकायतों का कारण नहीं बनती है। केवल एक चीज जो आपको चाहिए वह एक काफी विस्तृत इंटरनेट चैनल है।
हम भी आपकी राय सुनना चाहेंगे। टेलिफ़रेन्स रेफरेंस सिस्टम कैसा दिखना चाहिए?