कमरे की सफाई करने वाले रोबोट को प्रोग्राम करने के लिए मुझे क्या एल्गोरिदम लागू करना चाहिए?


25

इस प्रश्न के लिए मान लें कि निम्नलिखित चीजें अज्ञात हैं:

  • कमरे का आकार और आकार
  • रोबोट का स्थान
  • किसी भी बाधाओं की उपस्थिति

यह भी मान लें कि निम्नलिखित चीजें स्थिर हैं:

  • कमरे का आकार और आकार
  • सभी की संख्या, आकार और स्थान (यदि कोई हो) बाधाएं

और मान लें कि रोबोट में निम्नलिखित गुण हैं:

  • यह केवल पूर्ण इकाइयों के वेतन वृद्धि में आगे बढ़ सकता है और डिग्री में बदल सकता है। इसके अलावा जो चाल चलती है वह सच हो जाएगी यदि वह सफल हुई या गलत अगर वह एक अवरोध के कारण आगे बढ़ने में विफल रही
  • बिजली का एक यथोचित असीमित स्रोत (मान लें कि यह एक सौर ऊर्जा से चलने वाला रोबोट है जो एक अंतरिक्ष स्टेशन पर रखा गया है जो हर समय बिना छत के सूर्य का सामना करता है)
  • हर आंदोलन और रोटेशन को हर बार पूर्ण सटीकता के साथ किया जाता है (अविश्वसनीय डेटा के बारे में चिंता न करें)

अंत में कृपया रोबोट के पर्यावरण के निम्नलिखित गुणों पर विचार करें:

  • सीलिंग-कम स्पेस स्टेशन पर होने के कारण कमरा एक सुरक्षित लेकिन निराशाजनक रूप से पास होने वाली धूमकेतु से दूरी है, इसलिए धूल (और बर्फ) पर्यावरण को लगातार नुकसान पहुंचा रहे हैं।

मुझसे इस प्रश्न का बहुत सरल संस्करण पूछा गया था (कमरा एक आयत है और कोई बाधा नहीं है, आप इस पर कैसे आगे बढ़ेंगे, यह गारंटी देते हुए कि आप कम से कम एक बार हर हिस्से पर पहुँच सकते हैं) और बाद में मैं सोचने लगा कि आप इसे कैसे अपनाएँगे 'आकार या बाधाओं की उपस्थिति की गारंटी नहीं देता है। मैंने इसे दिक्जस्ट्रा के एल्गोरिदम के साथ देखना शुरू कर दिया है , लेकिन मैं यह सुनकर रोमांचित हूं कि अन्य लोग इस पर कैसे पहुंचते हैं (या अगर इस बारे में एक अच्छी तरह से स्वीकार किया गया उत्तर है? रोम्बो यह कैसे करता है?)


+ एल्गोरिथ्म और + सिद्धांत जैसे टैग इस तरह के एक प्रश्न की मदद करेंगे, लेकिन मेरे पास उन्हें जोड़ने के लिए अभी तक प्रतिष्ठा नहीं है
जेसन स्पर्सके

निश्चित रूप से Roomba से बेहतर कुछ
ऑक्टोपस

दिलचस्प। मेरे पास बोबस्वेप है और इसे पूरी तरह से momblogsociety.com/meet-newest-addition-family-bobsweep द्वारा क्रमादेशित किया गया है, मैं इसे सभी को सुझाता हूं। घणी खम्मां!

1
क्या यह एक विज्ञापन है? यदि नहीं, तो आप केवल लिंक के बजाए जानकारी पोस्ट करना चाह सकते हैं, यह बता सकते हैं कि रोबोट कैसे व्यवहार करता है और यह एकदम सही क्यों है।
शाहबाज़

जवाबों:


18

जहाँ तक मुझे पता है, यह समस्या "हल नहीं हुई है।"

औपचारिक रूप से, यह एक ऑनलाइन कवरेज समस्या है। कवरेज, क्योंकि हमें फर्श पर प्रत्येक बिंदु को कवर करना होगा, और ऑनलाइन क्योंकि हमारे पास मानचित्र तक ऑफ़लाइन पहुंच नहीं है। यदि आप सबसे हाल के परिणामों में रुचि रखते हैं, तो मैं आपको " विद्वान ऑनलाइन कवरेज एल्गोरिदम " देखने का सुझाव देता हूं , शायद Google विद्वान में ( बहुत सारे और बहुत अच्छे परिणाम हैं)। @ Embed.kyle की बहुत रंगीन (पुनः) पोस्ट के अलावा, मैं कुछ विवरण जोड़ूंगा (मैं कुछ परिणाम प्राप्त करने के लिए जल्दी से प्रयास करूंगा:

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

  • इस तरह के ऑनलाइन एल्गोरिदम को अक्सर "बग" एल्गोरिदम कहा जाता है, क्योंकि वे एक क्षेत्र में घूमते हुए बग की तरह दिखते हैं, किसी चीज में टकराते हुए, फिर थोड़ा घूमते हुए।

  • बिना किसी बाधा और एक आयताकार कमरे के साथ, और यह मानकर कि आप सीमा पर शुरू करते हैं एक बैस्ट्रोफेडोन (बैल का रास्ता) इष्टतम है। यहाँ छवि विवरण दर्ज करें

मजेदार है कि किसानों को यह हमेशा के लिए किया गया है, है ना? http://en.wikipedia.org/wiki/Boustrophedon । यह लगभग आयताकार क्षेत्र को खोजने के लिए बाधाओं के साथ कमरे में बढ़ाया जा सकता है जो बाधाओं से मुक्त हैं। होवी चॉसेट ने इस पर थोड़ा काम किया

  • अज्ञात परिधि वाले क्षेत्र को कवर करने के लिए, और यह मानकर कि आप परिधि पर शुरू नहीं करते हैं , तो इष्टतम रणनीति क्या है? ठीक है, कल्पना कीजिए कि आप दुनिया में आते हैं, और परिधि नहीं देख सकते। आप एक सीधी रेखा में चल सकते हैं जब तक कि आप परिधि तक नहीं पहुंच जाते हैं, तब एक बुफ़्रोफेडोन करते हैं, है ना? सिवाय अब आप परिधि को खोजने में बिताए समय को "बर्बाद" कर देंगे, क्योंकि आप उस हिस्से को दो बार कवर करेंगे। यही कारण है कि रोबोट सर्पिल करते हैं: जब तक आप एक सीमा तक पहुंचते हैं, तब तक आपने बहुत सारे क्षेत्र को कवर किया है ( जहां d निकटतम सीमा की दूरी है , ठीक है?)। यह सहायक है: अब आपको निकटतम सीमा खोजने की गारंटी दी गई है, और इसे ट्रेस किया जा सकता है।π*2
  • यह एक विशाल, आकर्षक क्षेत्र है। मुझे क्षमा करें मैं एक बेहतर सारांश प्रदान नहीं कर सकता हूँ!

सबसे बड़ी समस्या यह है कि आपके पास नक्शा नहीं है। नक्शे के बिना, आप परिधि जैसे सरल कार्यों तक सीमित हैं, और एक पथ के साथ आगे बढ़ रहे हैं (जैसे सर्पिल का उल्लेख किया गया है)। इसलिए, कुछ ऐसे रोबोट मौजूद हैं जो वास्तव में सफाई करते समय मानचित्र का निर्माण करते हैं, मैप किए गए क्षेत्र को आकृतियों में विघटित करते हैं, फिर कवरेज को सुनिश्चित करने के लिए प्रत्येक आकार को कवर करते हैं। देखें: http://mintcleaner.com/


9

Roomba एक सर्पिल में शुरू होता है जब तक यह कुछ हिट नहीं करता है, तब एक परिधि स्वीप करता है। फिर यह चारों ओर उछलता है। रूंबा घरेलू रोबोटिक वैक्यूम क्लीनर में वास्तविक मानक होने के नाते, मुझे लगता है कि आप इसे "स्वीकृत समाधान" कह सकते हैं। लेकिन व्यक्तिगत अनुभव (मैं खुद दो) से, निश्चित रूप से सुधार की गुंजाइश है।

से हाउ स्टफ वर्क्स :

कलन विधि

नैन्सी डसॉल्ट स्मिथ के साथ एक साक्षात्कार से , iRobot में विपणन संचार के उपाध्यक्ष:

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

यह नीचे के गंदगी सेंसर के साथ समान है, जब उन सेंसर में से एक ट्रिप हो जाता है तो यह उस क्षेत्र को कवर करने के लिए अपने व्यवहार को बदल देता है। यह फिर सीधे रास्ते में एक और गंदे क्षेत्र की तलाश में रवाना होगा। जिस तरह से ये अलग-अलग पैटर्न एक-दूसरे पर ढेर हो जाते हैं जैसे कि हम जाते हैं, हम जानते हैं कि यह एक कमरे को कवर करने का सबसे प्रभावी तरीका है।

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

उन पर एलईडी के साथ रोम्बा के कुछ लंबे एक्सपोज़र पिक्स बताते हैं कि यह कैसे व्यवहार में काम करता है:

यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें यहाँ छवि विवरण दर्ज करें


क्या यह लिंक से कॉपी-पेस्ट सामग्री है?
जोश वेंडर हुक 19

@Josh प्रश्न का उत्तर देने के लिए प्रासंगिक सामग्री को लिंक किए गए साइटों से कॉपी किया गया है और लिंक रोट को रोकने के लिए ब्लॉकचोट में रखा गया है।
एम्बेडेड

7

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

नीसो में लेजर रेंज फाइंडर को अक्सर रोबोटिक्स के लिए कैनबिल किया जाता है, क्योंकि यह एसएलएएम एल्गोरिदम के लिए एक लागत प्रभावी सेंसर है।

अगर मुझे आपका काम सौंपा गया, तो सबसे पहले मुझे एक उपयुक्त SLAM कार्यान्वयन मिलेगा , जो मेरे पास मौजूद हार्डवेयर पर आधारित है।

तब मैं एक सीएनसी आईएसलैंड मोशन प्लानिंग एल्गोरिथ्म का उपयोग करता हूं । मेरा अनुभव है कि वे कम से कम आंदोलन के साथ एक मनमाना क्षेत्र को कवर करने में बहुत कुशल हैं।


SLAM इस समस्या के लिए बिल्कुल उपयुक्त नहीं है क्योंकि यह एक सिमुलेशन है जिसमें स्थिति में अनिश्चितता नहीं है। एक असली रोबोट के लिए, आप हालांकि बिल्कुल सही हैं।
इयान

मुझे याद आया कि (यदि वहां है)। वास्तव में यह कहता है कि निम्नलिखित अज्ञात हैं; रोबोट का स्थान।
Spiked3

मैं सोच रहा था कि स्थान अज्ञात के रूप में शुरू हुआ, लेकिन जैसे ही कमरे की एक टोपोलॉजी बनाई गई, यह ज्ञात हो सकता है।
जेसन स्पर्सके

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

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

6

पहली चीज जिसे आपको स्थापित करने की आवश्यकता है, वह रोबोट का लक्ष्य है - आपके प्रश्न से बिल्कुल स्पष्ट नहीं। दो मुख्य कार्य हैं जिन्हें आपके रोबोट को पूरा करना है: स्वच्छ-सक्षम क्षेत्र के आकार की खोज करना, और फिर उसे साफ करना।

लेकिन क्या गंदगी की मात्रा स्थिर है? क्या लगातार गंदगी डाली जाती है? क्या यह आपका लक्ष्य है कि फर्श पर गंदगी बनी रहे या औसत समय कम से कम हो? क्या मंजिल को समान रूप से साफ रखना लक्ष्य है? या यह सिर्फ एक बार साफ करना है, जितनी जल्दी हो सके? क्या गंदगी के संचय में ऐसे पैटर्न हैं जिन्हें आप अपने लक्ष्य को पूरा करने में अपने लाभ के लिए माप और उपयोग कर सकते हैं?

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

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


खैर जब से मैं दुखी हूँ एक साक्षात्कार प्रश्न अपने आप पर कठिन बना रहा हूँ मुझे लगता है मैं कुछ और जानकारी के साथ आ सकता है। मुझे आपके द्वारा उठाए जा रहे अंक पसंद हैं :)
जेसन स्पर्सके

2

मुझे यकीन नहीं है कि अगर आपको अभी भी इसकी आवश्यकता है, लेकिन उन लोगों के लिए जो इस थ्रेड के लिए Google पर गए थे, मैंने एल्गोरिथ्म का एक सरल संस्करण बनाया है।

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

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

https://github.com/dungba88/cleaner_robot

अद्यतन: मैंने यहां एक डेमो बनाया है और इसकी तुलना एक डीट्रैकिंग बैकएफएस के साथ की है। इसलिए भले ही मेरा एल्गोरिथ्म ओ (एन ^ 2) है, यह चाल और घुमावों की संख्या के मामले में बहुत अधिक अनुकूलित है।

http://jenova.dungba.org/cleaner/showdown


दिलचस्प है, इसलिए यह एक 2 डी ग्रिड में कमरे को तोड़ता है, मैं अभी भी आपके कोड को पढ़ रहा हूं, आप अपने अशुद्ध क्षेत्रों तक पहुंचने के लिए किस पथ का उपयोग कर रहे हैं? डिज्कस्ट्रा?
जेसन स्पर्सके

मैंने निकटतम अशुद्ध स्थिति का पता लगाने के लिए BFS का उपयोग किया।
ù

-1

सरल समस्या को देखते हुए जो आपसे पूछा गया था - एक आयताकार कमरा, जिसमें कोई बाधा नहीं है और कम से कम एक बार हर भाग को साफ करें ।

समाधान कमरे के एक कोने को खोजने के लिए है, और एक कोने को ढूंढना एक बड़ी समस्या नहीं होगी। एक बार जो हासिल हो गया है, तो बस कमरे के केंद्र के लिए एक सर्पिल पथ का पालन करें।

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