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

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

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

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

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

Go to Jig 1

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

Tell axis 1 move 30 degrees.

प्रायः डेटा और प्रोग्राम रोबोट कंट्रोलर मेमोरी के भिन्न-भिन्न अनुभागों में उपस्थित होते हैं। किसी प्रोग्राम को बदले बिना और इसके विपरीत डेटा को बदल सकता है। उदाहरण के लिए, कोई एक ही जिग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 की आवश्यकता न पड़े।)

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

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

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

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

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

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

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

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

यह भी देखें

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

बाहरी संबंध

 * 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)