अज्ञात बाधाओं के साथ ग्रिड पर प्रत्येक पहुंच योग्य स्थान पर जाने का एक प्रभावी तरीका क्या है?


13

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

उदाहरण ग्रिड http://www.eriding.net/resources/general/prim_frmwrks/images/asses/asses_y3_5d_3.gif (उदाहरण के लिए)

प्रक्रिया पूरी हो गई है जब सभी उपलब्ध वर्गों का दौरा किया गया है। दूसरे शब्दों में, कुछ स्थान पूरी तरह से पहुंच से बाहर हो सकते हैं, भले ही उनके पास बाधाएं न हों क्योंकि वे घिरे हुए हैं। यह अपेक्षित है।

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

अधिक परिष्कृत विधि में, उचित काम करने के लिए बूस्ट्रोफेडोन कोशिका अपघटन लगता है ।
बूस्ट्रोफेडोन कोशिका अपघटन

हालाँकि, मैं बूस्ट्रोफेडन सेल अपघटन एल्गोरिथ्म का एक अच्छा विवरण नहीं ढूँढ सकता है (अर्थात, सरल विवरण में पूर्ण विवरण)। इस तरह के संसाधन हैं , या ऊर्ध्वाधर सेल अपघटन पर यह सामान्य है , लेकिन वे उच्च-स्तरीय एल्गोरिदम में बहुत अधिक अंतर्दृष्टि प्रदान नहीं करते हैं और न ही निम्न-स्तरीय डेटा संरचनाएं शामिल हैं।

मैं इस ग्रिड को कुशलता से कैसे (मानचित्र) देख सकता हूं? यदि यह मौजूद है, मैं एक एल्गोरिथ्म चाहते हैं कि प्रदर्शन की तुलना में बेहतर सम्मान के साथ ग्रिड वर्गों की कुल संख्या के ( यानी की तुलना में बेहतर एक के लिए ग्रिड)।O(n2)हे ( एन 4 ) n * nO(n4)nn


बहुत दिलचस्प समस्या है। स्पष्टता के लिए, क्या आप किसी भी दिए गए सेल में सबसे कम बार-बार आने वाले दौरे के रूप में "कुशल" को परिभाषित कर रहे हैं?
डेमनमेकर

यह कहने का एक तरीका हो सकता है। वास्तव में, मैं एल्गोरिदम से बचने की कोशिश कर रहा हूं जो या ग्रिड वर्गों की कुल संख्या के संबंध में बदतर हैं। O(n2)
इयान

मुझे लगता है कि यह एक ऐसी ही समस्या है जिसका सामना सीएनसी मशीनिंग सॉफ्टवेयर को करना पड़ता है जिसे काटने वाले उपकरण के साथ जाकर सामग्री को हटाना चाहिए।
राकेटमग्नेट

@Rocketmagnet: काफी नहीं है, क्योंकि सीएनसी मशीन एक प्राथमिकता को "बाधाएं" जानता है , जबकि मैं उन्हें ले जाते समय उनका पता लगा रहा हूं।
इयान

हां, यह एक बंधे हुए वातावरण की एक ऑनलाइन खोज है जहां रोबोट को अपना स्थान पता है। बाधाओं की मात्रा, स्थान और आकार पूरी तरह से अज्ञात हैं - वे उत्तल नहीं हो सकते हैं।
इयान

जवाबों:


11

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

चौसेट, होवी। "कवरेज ऑफ़ नोज़ स्पेसेस: द बाउस्ट्रोफेडन सेल्युलर डिकम्पोज़िशन" स्वायत्त रोबोट , 2000।


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

कोड में इसे पूरा करने के लिए, आपको केवल एक लाइन-सेगमेंट चौराहा परीक्षण, किनारों की एक क्रमबद्ध सूची, और कोने की क्रमबद्ध सूची की आवश्यकता है।

  1. बाएं से दाएं क्रम में प्रत्येक शीर्ष से,vi
  2. एक खड़ी रेखा बनाएं प्रत्येक में , पहले किनारे तक बढ़ा या शिखर यह intersectslivi
  3. प्रत्येक चौराहे पर, एक नया शिखर बनाएं।

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


  1. प्रारंभ की स्थिति से, ऊपर जाएं और तब तक बाएं रहें जब तक आप पर्यावरण के ऊपरी-बाएं कोने तक नहीं पहुंच जाते। यदि आप पहले एक बाधा का सामना करते हैं, तो आपको इसके चारों ओर यात्रा करनी चाहिए। आपको पता है कि कुछ एक बाधा है, अगर इसे परिचालित किया जा सकता है (टक्कर और चाल)।

  2. ऊपरी बाएँ से, दाईं ओर बढ़ें जब तक आप सीमा का सामना न करें। फिर नीचे जाएं और बाएं (हम पूरे स्थान का एक बस्ट्रोफेडॉन कर रहे हैं)।

  3. जब आप बाईं-दाईं रेखा पर होते हैं और एक बाधा का सामना करते हैं, तो आपके पास दो विकल्प होते हैं। (i) जब तक हम बायीं-दायीं रेखा को ढँकने की कोशिश नहीं करते, तब तक हम जारी रख सकते हैं। (ii) जब तक हम बाधा को पार करने या इस स्थिति को फिर से समाप्त करने के लिए अपना रास्ता नहीं तलाशते, तब तक हम एक नई बाईं-दाईं रेखा को चारों ओर घुमा सकते हैं। मैं बताता हूँ।

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

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

ध्यान दें कि यह आपके बैस्ट्रोफेडोन अपघटन को ऑनलाइन तरीके से परिभाषित करता है : आप बाधाओं के बीच या बाधाओं और सीमा के बीच के क्षेत्र को कवर करते हैं।

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

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

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


अपडेट: मुझे छवियों को हटाना था (https नहीं), और इसे पोस्ट करूंगा जो अक्सर व्यावहारिक वास्तविक दुनिया अनुप्रयोगों में उपयोग किया जाता है। http://www.cs.cmu.edu/~motionplanning/papers/sbp_papers/integrated1/yamauchi_frontiers.pdf


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

मैंने एक साधारण बस्ट्रोफेडोन अपघटन उदाहरण जोड़ा है।
जोश वेंडर हुक

3

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

दक्षता काफी उचित लगती है।


मेरी तरह, आप सीमा के आधार पर अन्वेषण की खोज की है cs.cmu.edu/~motionplanning/papers/sbp_papers/integrated1/... और यह वास्तव में अच्छी तरह से काम करता है
smirkingman
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.