रोबोटिक्स में वास्तविक समय की प्रोग्रामिंग कितनी परिपक्व है? [बन्द है]


20

संपादित करें: मुझे नहीं पता कि क्यों, लेकिन यह सवाल बहुत से लोगों को भ्रमित करता है। मुझे पता है कि कब / कहाँ / क्यों / कैसे वास्तविक समय का उपयोग करना है। मुझे यह जानने में दिलचस्पी है कि जिन लोगों के पास वास्तविक समय का काम है, वे वास्तव में इसे वास्तविक समय में लागू करने के लिए पर्याप्त देखभाल करेंगे या नहीं।

रोबोट के लिए वास्तविक समय के संचालन क्यों महत्वपूर्ण हैं, इसका उल्लेख करने की आवश्यकता नहीं है। हालांकि मेरा सवाल यह है कि वास्तव में रोबोटिक्स में इसका कितना उपयोग होता है?

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

हालांकि वास्तविक समय की दुनिया में, आरटीएआई 1 उपयोग का एकमात्र व्यावहारिक मुफ्त वास्तविक समय मंच है। हालांकि, यह लिनक्स (कोई समस्या नहीं) तक सीमित है, बुरी तरह से प्रलेखित और धीरे-धीरे विकसित हुआ है।

तो, रोबोटिक्स डेवलपर्स के बीच वास्तविक समय में कितना व्यवहार किया जाता है?सवाल यह है कि जब वास्तविक समय के व्यवहार की वास्तव में आवश्यकता होती है, तो डेवलपर्स वास्तविक समय के अनुप्रयोगों को लिखने के लिए कितने इच्छुक हैं? ज्यादा नहीं तो क्यों?

उदाहरण के लिए, स्पर्शनीय डेटा पर आधारित रिफ्लेक्टिव व्यवहार, ROS के माध्यम से नहीं जा सकता क्योंकि यह अपनी वास्तविक समय की संपत्ति खो देगा। लेकिन क्या लोग वास्तव में वास्तविक समय के समाधान के साथ आते हैं या वैसे भी आरओएस का उपयोग करते हैं, जो वास्तविक समय की संपत्ति की अनदेखी करते हैं?

1 या इसी तरह एक्सनोमई


1
मुझे लगता है कि यह एक महान प्रश्न है। इसे दो भागों में विभाजित करने और अपने मुख्य प्रश्न को स्पष्ट करने पर विचार करें। 'क्या ROS का उपयोग वास्तविक समय के लिए किया जा सकता है?' या 'क्या ROS का उपयोग वास्तविक समय के साथ किया जाता है?' (2 विभिन्न प्रश्न) आपके मुख्य प्रश्न से अलग हैं।
हप्तेमेच

@hauptmech, अच्छी तरह से ROS निश्चित रूप से वास्तविक समय के लिए इस्तेमाल नहीं किया जा सकता है, क्योंकि यह नहीं है!
शाहबाज़

मैं @hauptmech से सहमत हूं। सवाल भ्रामक हैं। शीर्ष पर आपके पूछ रहे हैं, कितने लोग / कितनी बार वास्तविक समय प्रणाली का उपयोग किया जाता है और बाद में आपके पूछने पर कि कब / किस मामले में । दोनों अच्छे प्रश्न हैं, इसलिए कृपया इसे दो में विभाजित करें या एक को कम करें। धन्यवाद!
बिट-पाइरेट

@ बिट-पाइरेट, मुझे समझ में नहीं आता कि आप यह क्यों कहते हैं कि मैंने कब / किस मामले में पूछा था । मैंने ऐसा कभी नहीं पूछा। जैसा कि मैंने कहा था कि सवाल यह है कि वास्तविक समय के व्यवहार की वास्तव में आवश्यकता होने पर डेवलपर्स वास्तविक समय के अनुप्रयोगों को लिखने के लिए कितने इच्छुक हैं? दूसरे शब्दों में, वास्तविक समय के व्यवहार के लिए कितने प्रतिशत अनुप्रयोगों की आवश्यकता होती है, वास्तव में वास्तविक समय में लागू होते हैं ? मुझे व्यक्तिगत रूप से पता है कि कब और किस मामले में वास्तविक समय के व्यवहार की आवश्यकता है और उस मामले पर बिल्कुल कोई सवाल नहीं है। वास्तव में, मुझे यह बताते हुए आश्चर्य होता है कि उत्तर क्या है
शहबाज

स्पष्टीकरण के लिए धन्यवाद! मेरे लिए, शीर्षक भ्रमित करने वाला था। IMO वास्तविक समय प्रोग्रामिंग + कार्यान्वयन रोबोटिक्स में परिपक्व है, लेकिन इसमें अधिक प्रयास (समय, धन, कौशल आदि) शामिल हैं, इसलिए अधिकांश लोग इससे बचते हैं, जब यह वास्तव में आवश्यक नहीं होता है।
बिट-पाइरेट

जवाबों:


10

याद रखें कि रियल टाइम है और रियल टाइम है

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

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

यहां तक ​​कि विंडोज पीसी के दायरे में आप कठिन वास्तविक समय प्रदर्शन प्राप्त कर सकते हैं , आपको बस कर्नेल में सही हुक के साथ सही सॉफ़्टवेयर की आवश्यकता है। बेकहोफ ट्विनकैट सॉफ्ट पीएलसी काफी खुशी से एक उच्च स्कैन दर पीएलसी को एक पेंटियम की मशीन के चक्र के आधे भाग से काटकर, दूसरे हिस्से को विंडोज एनटी को दे रहा था, और यह एक दशक पहले खत्म हो गया था। यहां तक ​​कि आधुनिक नियंत्रण प्रणाली जैसे कि एयरोटेक के ए 3200 रेंज में कुछ विकल्प होस्ट पीसी पर ग्रंट कार्य करते हैं, निम्न स्तर के कर्नेल के रूप में ज्यादा सीपीयू समय लेते हैं क्योंकि इसे वास्तविक वास्तविक समय की जरूरतों के लिए और विंडोज 7 के लिए सीपीयू के बाकी चक्रों को छोड़ना पड़ता है। उपयोग करने के लिए!


यहाँ भेद काफी प्रासंगिक है ... यहां तक ​​कि "वास्तविक दुनिया" निम्न-स्तरीय प्रणालियों में भी, वास्तव में वास्तविक-समय बिट काफी छोटा है (एक टाइमर टिक अवरोध पर आधारित) जबकि अधिकांश प्रणाली नाममात्र वास्तविक समय (लेकिन + / - यहाँ कुछ नैनो-सेकंड और सहन करने योग्य है)। मैं मुस्कान जब मैं WindowsCE या लिनक्स पर बनाया वास्तविक समय अनुप्रयोगों ... के बारे में बात लोगों को देखने
एंड्रयू

1
जैसा कि मैं कहता हूं @ सही सॉफ्टवेयर के साथ, यहां तक ​​कि विंडोज 7 को आरटीएक्स के साथ कठिन वास्तविक समय बनाया जा सकता है । सुनिश्चित नहीं हैं कि आप विंडोज सीई को वास्तविक समय क्यों नहीं मानते हैं, हालांकि, यह संस्करण 2 के बाद से वास्तविक समय निर्धारक कार्य समयबद्धन है और लिनक्स को RTLinux जैसे कर्नेल के साथ रियलटाइम बनाया जा सकता है ।
मार्क बूथ

हाय फिर से मार्क (यकीन नहीं है कि कौन यहाँ है जो पीछा कर रहा है ...) - मैं सहमत हूं कि आप इसे कर सकते हैं, लेकिन कठोर अनुभव से पता चला है कि कई (अधिकांश?) मामलों में उपयोगकर्ता (प्रबंधक) आवश्यक ऐड-ऑन और मान को अनदेखा करते हैं? वेनिला प्रणाली क्या करेगी।
एंड्रयू

@ और - आरटीएक्स के साथ मेरा अनुभव यह था यह यह सिर्फ काम करता है । 4 दिनों के पेंटियम में वापस आपको एकीकृत ग्राफिक्स या ऑडियो का उपयोग नहीं करना पड़ता है जो पीसीआई बस को संतृप्त करता है, लेकिन इन दिनों समस्या नहीं होनी चाहिए।
मार्क बूथ

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

8

एक वास्तविक समय प्रणाली वास्तव में कई (सबसे?) रोबोट नियंत्रण प्रणालियों के लिए आवश्यक नहीं है। जब तक आपके पास एक नियंत्रण लूप होता है जो काफी तेजी से चलता है, कम पर्याप्त घबराहट के साथ, और बहुत सारे चक्रों को याद नहीं करता है, तो यह रोबोट नियंत्रण और सर्विसिंग के लिए काफी पर्याप्त है।

इसके प्रमाण के रूप में, मुझे PR2 और शैडो रोबोट हैंड प्रस्तुत करें:

PR2

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

आरओएस मुख्य लूप थोड़ा घबराहट से ग्रस्त है, कभी-कभी 100us जितना, और यहां तक ​​कि कभी-कभी पूरी तरह से चक्र याद करता है। लेकिन इससे कोई फर्क नहीं पड़ता कि 99.9% चक्र सफलतापूर्वक निष्पादित किए जाते हैं।

मेजबान पीसी के भीतर कई कोर का उपयोग करने का मतलब है कि एक पूरा कोर मुख्य लूप को चलाने के लिए समर्पित है, और इसलिए यह अन्य कार्यों द्वारा बहुत कम देरी है।

रोबोटिक सिस्टम के लिए वास्तव में वास्तविक समय के ओएस का उपयोग करने का मुख्य कारण सुरक्षा के लिए है। यदि रोबोट सुरक्षा महत्वपूर्ण स्थिति में काम कर रहा है, तो यह आपकी जिम्मेदारी है कि आप 100% नियंत्रण अप-टाइम की गारंटी दें, और इसका एक हिस्सा इसके वास्तविक समय की प्रकृति की गारंटी दे रहा है।

चाहे आप वास्तविक समय के ओएस का उपयोग करें या न करें, आपके सर्वर को इस घटना में कुछ सुरक्षित करना चाहिए कि नियंत्रण लूप पूरी तरह से मर जाता है। यह सुरक्षा प्रणाली दुर्लभ अवसर पर भी मददगार होगी जब आपका गैर-वास्तविक समय का ओएस एक चक्र से अधिक स्किप करता है। उदाहरण के लिए, छाया हाथ पर, मोटर्स को रोक दिया जाता है यदि नियंत्रण लूप 20 चक्र (20 सेमी) से अधिक याद करता है। मैंने हालांकि ऐसा होते कभी नहीं देखा।


जोड़ा गया

इसके बारे में सोचने का एक और तरीका यह है: आपके सर्वो सिस्टम को वास्तव में किस अपडेट दर की आवश्यकता है? अगर यह एक लार्ज आर्म है, और इसमें सुपर हाई परफॉर्मेंस, हाई स्पीड पोजिशनिंग की जरूरत नहीं है, तो 500Hz पर्याप्त हो सकता है। आसपास ड्राइविंग के लिए, 200Hz शायद पर्याप्त है। इन दोनों मामलों में, यदि आपका लूप वास्तव में 1000 हर्ट्ज पर चल रहा है, तो एक देर से या लापता चक्र वास्तव में कोई समस्या नहीं है, जब तक कि आपका नियंत्रण एल्गोरिथ्म लूप्स के बीच वास्तविक बीत चुके समय को ध्यान में रखता है।


तो संक्षेप में, आप कह रहे हैं कि वास्तविक समय का अक्सर उपयोग नहीं किया जाता है, क्योंकि गैर-वास्तविक समय सॉफ्टवेयर "काफी अच्छा" काम करता है?
शाहबाज

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

1
मैं एक बिंदु पर जोर देना चाहूंगा: आपके पास पीआर 2 पर इतनी अधिक प्रसंस्करण शक्ति है कि आपको कुछ "अच्छा पर्याप्त" मिल सकता है। मैंने "केवल" एक कोर 2 डुओ के साथ एक रोबोट पर काम किया। यह एक विकल्प नहीं है: पूरा स्टैक ज्यादातर समय प्रत्येक कोर 100% ले रहा है। यहां, रॉक (ओरोकस) और आरटी-लिनक्स को एक साथ 1kHz नियंत्रण लूप को पकड़ना आवश्यक था।
sylvain.joyeux

@ sylvain.joyeux - मैं सहमत हूं। जब आप केवल 2 कोर रखते हैं तो ROS नियंत्रण के लिए बहुत खराब प्रदर्शन करता है।
रॉकेटमेग्नेट

@Rocketmagnet मुझे खेद है कि इस एक को कम करना होगा, लेकिन PR2 हिस्सा गलत है। PR2 में ROS (Linux + RT PREEMPT पर) के समांतर 1000Hz पर एक सिंगल रियल-टाइम लूप चल रहा है, जो मोटर कंट्रोलर बोर्डों के साथ ईथरक के माध्यम से संचार कर रहा है, जो प्रत्येक डीओएफ का वास्तविक मोटर नियंत्रण करता है। वास्तविक समय को न तोड़ने के लिए प्रोग्रामिंग नियंत्रकों (जैसे एक संयुक्त प्रक्षेपवक्र नियंत्रक) के दौरान आपको सावधान रहना होगा और उनके पास उन्हें प्रबंधित करने के लिए विशेष उपकरण भी होते हैं (जैसे उन्हें लोड / अनलोड करना)। यहाँ देखो अधिक जानकारी के लिए।
बिट-पाइरेट

4

सॉफ़्टवेयर का उद्देश्य निर्धारित करता है कि क्या इसे सख्ती से वास्तविक समय की आवश्यकता है।

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

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

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

कंप्यूटर / माइक्रोप्रोसेसरों का उपयोग करने वाले रोबोट (क्योंकि अधिक प्रसंस्करण शक्ति की आवश्यकता होती है), उच्च नमूना दरों की गारंटी के लिए एक वास्तविक समय ऑपरेटिंग सिस्टम का उपयोग करने की आवश्यकता होगी।


इसलिए, क्या वास्तविक समय के व्यवहार की आवश्यकता है, इस पर निर्भर करता है कि डेवलपर इसका उपयोग करने का इरादा रखता है।


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

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

2

हमारी कंपनी PIC माइक्रोकंट्रोलर्स पर चलने वाले FreeRTOS का उपयोग करके रोबोट का निर्माण करती है। हमारे लिए, FreeRTOS का उपयोग करने का मुख्य कारण कार्यों पर प्राथमिकताओं को पुन: व्यवस्थित करने में आसानी है, एक साथ कई संचार लाइनों को संभालना, और बीच वाले हैंडलर और मुख्य कार्यों के बीच आसान संचार। माइक्रोकंट्रोलर हमारे द्वारा उत्पादित प्रत्येक रोबोट में एक पूर्ण लिनक्स मशीन लगाने की तुलना में कहीं अधिक सस्ते हैं।


2

यदि आपको वास्तव में वास्तविक समय की आवश्यकता है, तो आप एक वास्तविक समय ऑपरेटिंग सिस्टम का उपयोग करते हैं। सुरक्षा निगरानी, ​​डेटा अधिग्रहण और निरंतर नमूना दर नियंत्रण लूप आम सबसिस्टम हैं जो वास्तविक समय निर्धारण का उपयोग करते हैं।

प्रोग्रामिंग का वास्तविक समय भाग आमतौर पर जितना संभव हो उतना छोटा होता है, क्योंकि यह डिबग करना अधिक कठिन होता है और कम कोड शुद्धता के लिए जांचना आसान होता है। रियल-टाइम OS का दस्तावेज़ीकरण आमतौर पर बहुत अच्छा है (RTAI / Xenomai सहित)।

मैंने QNX और RTAI-> Xenomai का उपयोग विभिन्न वास्तविक रोबोटिक्स परियोजनाओं में किया है। मैंने QNX को तरजीह दी लेकिन ज़ेनोमई उतना ही प्रभावी था।


2

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


2

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

आप इस तरह के एक नियंत्रण लूप को एक वास्तविक वास्तविक समय सीपीयू पर लोड कर सकते हैं जैसे कि सस्ते 8 बिट एवीआर या कम अंत 32 बिट एआरएम उपकरणों के अरुडिनो वर्ग में पाया जाता है। समर्पित नियंत्रण लूप चलाने वाले इन छोटे MCU के दर्जनों जोड़ने से आपको रोकने के लिए कुछ भी नहीं है, USB डिवाइस एन्यूमरेशन भी इसे आसान बनाता है।

अब जब आपके पास समर्पित सीपीयू द्वारा नियंत्रित समय संवेदनशील नियंत्रण छोरों हैं, तो आप रोबोट के 'मस्तिष्क' की वास्तविक समय की जरूरतों को आराम कर सकते हैं जो विंडोज के लिए लिनक्स या किनेक्ट जैसे आरओएस जैसे घटकों का उपयोग करके उच्च अंत तर्क को चला सकते हैं।


0

"कब / किस स्थिति में" वास्तविक समय प्रणाली का उपयोग किया जाता है:

मेरे अनुभव में, गति नियंत्रण वास्तविक समय प्रणालियों के लिए मुख्य अनुप्रयोग है। मोटर्स को नियंत्रित करने के लिए एक उच्च आवृत्ति (100 हर्ट्ज, 1000 हर्ट्ज और अधिक) और कम घबराना (समय भिन्नता) महत्वपूर्ण हैं। सुरक्षा यहां एक बड़ा बिंदु है। मनुष्यों के बीच एक रोबोट पर विचार करें: उदाहरण के लिए, आप यह सुनिश्चित करना / सुनिश्चित करना चाहते हैं कि रोबोट (हाथ) एक विशिष्ट समय सीमा / दूरी में बंद हो जाता है।

अन्य कार्यों जैसे कि पथ योजना, दृष्टि प्रसंस्करण और तर्क वास्तविक समय प्रणाली के लिए महत्वपूर्ण नहीं हैं और अक्सर विकास के समय और हार्डवेयर लागतों में ओवरहेड के कारण से बचा जाता है।

आजकल, बड़े रोबोट जैसे PR2 दोनों दुनिया को मिलाते हैं। आरटी सक्षम ऑपरेटिंग सिस्टम (जैसे लिनक्स + एक्सनोमई) गति नियंत्रण का वास्तविक समय संदर्भ में और गैर-वास्तविक समय भाग (उपयोगकर्ता भूमि) में, विज़न प्रोसेसिंग और नियोजन आरओएस जैसी प्रणालियों में एम्बेडेड है। दोनों एक ही कंप्यूटर पर चल सकते हैं।

एक बार प्रश्न स्पष्ट हो जाने के बाद, मुझे इस उत्तर को संपादित करने में खुशी हो रही है। :-)


0

हां, यह मानते हुए कि हार्डवेयर संसाधन समय की आवश्यकताओं (पर्याप्त प्रसंस्करण शक्ति, कम पर्याप्त विलंबता) को पूरा कर सकते हैं, जब अनुसूचक प्रक्रिया और अनुक्रमों को उचित रूप से अनुक्रमित नहीं कर सकता है, तो एक वास्तविक समय अनुसूचक का उपयोग करता है, आमतौर पर कर्नेल के लिए विशेष रूप से अनुकूलित होता है। इस की चुनौतियां। हार्डवेयर ड्राइवर को वास्तविक समय की स्थितियों के लिए भी अनुकूलित किया जा सकता है।

हां, यदि लोगों के सॉफ्टवेयर को आवश्यक समय की कमी में काम करने की गारंटी नहीं दी जा सकती है, तो कोई वास्तविक समय के दृष्टिकोण का उपयोग करता है।


0

बीओटीएच करने के लिए एक अच्छा उपाय है। एक डिजाइन मैं जगह का उपयोग करता है "हार्ड" एक छोटे माइक्रो नियंत्रक पर वास्तविक समय कार्य करता है, तंग इमदादी नियंत्रण छोरों और ऐसे। फिर एक और सीपीयू है जो बड़ा है, लिनक्स और आरओएस चला रहा है। मैं आरओएस को उच्च स्तर के कार्यों को संभालने देता हूं और यूपी एक स्टीपर मोटर को नियंत्रित करने या पीआईडी ​​लूप चलाने जैसी चीजों को संभालता हूं।

जैसा कि ऊपर दूसरों ने कहा है कि आप एक गैर-वास्तविक समय के ओएस को 1KHz नियंत्रण लूप चलाने की अनुमति दे सकते हैं, लेकिन इसके लिए काम करने के लिए आपको एक सकल ओवर-किल आकार के कंप्यूटर की आवश्यकता होती है जो कि अधिकांश समय बेकार लूप में खर्च करता है। यदि आप Linux / ROS कंप्यूटर को 100% CPU उपयोग के लिए चलाते हैं, तो वास्तविक समय का प्रदर्शन खराब है। दो स्तरीय डिज़ाइन का उपयोग करने से आप हमेशा बहुत अच्छा आरटी प्रदर्शन प्राप्त कर सकते हैं और छोटे, कम शक्ति वाले भूखे कंप्यूटर (संभवतः एक पी 2 उच्च स्तर के कार्य) का उपयोग कर सकते हैं। मेरा यूपी वर्तमान में कोई ओएस नहीं चलाता है, लेकिन मैं फ्रीआरटीओएस पर जा रहा हूं

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.