रोबोट सॉफ्टवेयर

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

कुछ रोबोट सॉफ़्टवेयर का उद्देश्य बुद्धिमान यांत्रिक उपकरणों को विकसित करना है। सामान्य कार्यों में प्रतिक्रिया, नियंत्रण सिद्धांत, पाथफाइंडिंग, डेटा फ़िल्टरिंग, पता लगाना और क्लाउड रोबोटिक्स सम्मिलित हैं।

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

औद्योगिक रोबोट सॉफ्टवेयर
औद्योगिक रोबोट के लिए सॉफ्टवेयर में डेटा ऑब्जेक्ट और निर्देशों की सूची होती है, जिसे प्रोग्राम फ्लो (निर्देशों की सूची) के रूप में जाना जाता है। उदाहरण के लिए,

जिग 1 पर जाएं

यह जिग1 नाम के स्थानीय डेटा पर जाने के लिए रोबोट को निर्देश है। निस्सन्देह, उदाहरण के लिए कार्यक्रमों में निहित डेटा भी हो सकता है

अक्ष 1 को 30 डिग्री पर चलने के लिए कहें।

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

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

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

प्रकाशित रोबोट प्रोग्रामिंग भाषाओं के कुछ उदाहरण नीचे दिखाए गए हैं।

सादा अंग्रेजी में कार्य:

Move to P1 (a general safe position) Move to P2 (an approach to P3) Move to P3 (a position to pick the object) Close gripper Move to P4 (an approach to P5) Move to P5 (a position to place the object) Open gripper Move to P1 and finish

वेरिएबल असेंबली भाषा पहली रोबोट 'भाषाओं' में से एक थी और इसका उपयोग युनिमेट रोबोट में किया गया था। वेरिएबल असेंबली भाषा के विभिन्न रूपों का उपयोग निपुण प्रौद्योगिकी (एडेप्ट टेक्नोलॉजी) सहित अन्य निर्माताओं द्वारा किया गया है। स्टैबली वर्तमान में वेरिएबल असेंबली भाषा (तृतीया) का उपयोग करता है।

उदाहरण कार्यक्रम:

PROGRAM PICKPLACE 1. MOVE P1  2. MOVE P2   3. MOVE P3   4. CLOSEI 0.00 5. MOVE P4  6. MOVE P5   7. OPENI 0.00 8. MOVE P1 .END

स्टैबली वेरिएबल असेंबली भाषा(तृतीया) प्रोग्राम का उदाहरण:

begin movej(p1,tGripper,mNomSpeed) movej(appro(p3,trAppro),tGripper,mNomSpeed) movel(p3,tGripper,mNomSpeed) close(tGripper) movej(appro(p5,trAppro),tGripper,mNomSpeed) movel(p5,tGripper,mNomSpeed) open(tGripper) movej(p1,tGripper,mNomSpeed) end

टी आर एप्रो कार्तीय परिवर्तन चर है। यदि हम एप्रो कमांड के साथ उपयोग करते हैं, तो हमें पी2 और पी4 बिंदु सिखाने की आवश्यकता नहीं है, लेकिन हम प्रक्षेपवक्र पीढ़ी के लिए पिक और प्लेस की स्थिति के लिए एक दृष्टिकोण को गतिशील रूप से बदलते हैं।

एप्सन आरसी+ (वैक्यूम पिकअप के लिए उदाहरण)

Function PickPlace Jump P1       Jump P2        Jump P3        On vacuum Wait .1 Jump P4       Jump P5        Off vacuum Wait .1 Jump P1 Fend

रोबोफोर्थ (फोर्थ पर आधारित भाषा)।

(रोबोफोर्थ के साथ आप स्थानों के लिए अभिगम दृष्टिकोण (एप्रोच पोजीशन) को निर्दिष्ट कर सकते हैं जिससे आपको पी2 और पी4 की आवश्यकता न पड़े।)

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

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

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

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

<वाक्यविन्यास लैंग = urbiscript> whenever(face.Visible) {  headPan.val  += camera.xfov * face.x   & headTilt.val += camera.yfov * face.y } 

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

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

सुरक्षा विचार
प्रोग्रामिंग त्रुटियां एक गंभीर सुरक्षा विचार का प्रतिनिधित्व करती हैं, विशेष रूप से बड़े औद्योगिक रोबोटों में। औद्योगिक रोबोटों की शक्ति और आकार का मतलब है कि अगर गलत तरीके से प्रोग्राम किया गया या असुरक्षित तरीके से इस्तेमाल किया गया तो वे गंभीर चोट पहुंचाने में सक्षम हैं। औद्योगिक रोबोटों के द्रव्यमान और उच्च गति के कारण, स्वचालित संचालन के दौरान रोबोट के कार्य क्षेत्र में मानव का रहना हमेशा असुरक्षित होता है। सिस्टम अप्रत्याशित समय पर गति शुरू कर सकता है और एक इंसान कई स्थितियों में जल्दी से प्रतिक्रिया करने में असमर्थ होगा, भले ही ऐसा करने के लिए तैयार हो। इस प्रकार, भले ही सॉफ्टवेयर प्रोग्रामिंग त्रुटियों से मुक्त हो, औद्योगिक रोबोट को मानव श्रमिकों या मानव संपर्क के लिए सुरक्षित बनाने के लिए बहुत सावधानी बरतनी चाहिए, जैसे भागों को लोड करना या उतारना, आंशिक जाम को साफ़ करना, या रखरखाव करना। ANSI/RIA R15.06-1999 औद्योगिक रोबोट और रोबोट सिस्टम के लिए अमेरिकी राष्ट्रीय मानक - रोबोटिक इंडस्ट्रीज एसोसिएशन की सुरक्षा आवश्यकताएँ (ANSI/ R15.06-1992 का संशोधन) पुस्तक रोबोट सुरक्षा पर स्वीकृत मानक है। इसमें औद्योगिक रोबोटों के डिजाइन, और कारखाने के तल पर औद्योगिक रोबोटों के कार्यान्वयन या एकीकरण और उपयोग दोनों के लिए दिशानिर्देश शामिल हैं। सुरक्षा नियंत्रकों, शिक्षण मोड के दौरान अधिकतम गति, और भौतिक बाधाओं के उपयोग जैसी कई सुरक्षा अवधारणाएँ शामिल हैं .

यह भी देखें

 * व्यवहार आधारित रोबोटिक्स और सदस्यता वास्तुकला
 * विकासात्मक रोबोटिक्स
 * एपिजेनेटिक रोबोटिक्स
 * विकासवादी रोबोटिक्स
 * औद्योगिक रोबोट
 * संज्ञानात्मक रोबोटिक्स
 * रोबोट नियंत्रण
 * रोबोलॉजिक्स
 * स्वचालित योजना और शेड्यूलिंग
 * साइबरनेटिक्स
 * कृत्रिम होशियारी
 * रोबोटिक्स सूट
 * telerobotics / telepresence
 * रोबोटिक ऑटोमेशन सॉफ्टवेयर
 * झुंड रोबोटिक्स प्लेटफॉर्म

बाहरी संबंध

 * Linux Devices.
 * ANSI/RIA R15.06-1999 American National Standard for Industrial Robots and Robot Systems - Safety Requirements (revision of ANSI/RIA R15.06-1992)