फुटबॉल रोबोट के लिए स्पिन नियंत्रक लिखने के लिए सही तरीका क्या है?


14

एक 3 पहिया फुटबॉल रोबोट प्रोग्रामिंग की कल्पना करो। इसे कताई के लिए आप किस प्रकार के नियंत्रक का उपयोग करेंगे? पी? पीआईडी?

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

मैं अपने रोबोट के लिए स्टेपर मोटर्स का उपयोग करता हूं न कि सर्वोस का ताकि मुझे अपने सॉफ्टवेयर में इसे लागू करने की आवश्यकता हो!

मैंने एक नमूना पी प्रकार नियंत्रक पहले से ही लिखा है और आंदोलन काफी अच्छा है। लेकिन अगर संभव हो तो मैं इसे बेहतर बनाना चाहूंगा। कोड निम्नानुसार है:

void spinSpeed(int devidedValue, int addedValue, int correction) {

    if(degree<correction && degree>-correction) {
        motorSpeed = 0;
    } else {
        if(degree > 0) {
            motorSpeed = ((degree)/(devidedValue) + (addedValue));
        } else {
            motorSpeed = ((degree)/(devidedValue) - (addedValue));  
        }
    }
}

correctionएक सीमा है, जिसमें रोबोट की कोई गति नहीं है। degree-127 और 128 के बीच एक संख्या है जो कम्पास से वापस आ जाती है। motorSpeed0 और 255 के बीच एक संख्या है जो PWM पर लागू होती है।


मुमकिन है कि यह दिनचर्या हर बार चलायी जाती है, जिसके लिए कम्पास एक नया मूल्य उत्पन्न करता है degree?
मार्क बूथ

@MarkBooth में मेरा कोड थोड़ी देर में (1) है, इसलिए हर चक्र में इसे कम्पास से मान मिलता है जो इसे फंक्शन में देता है और फिर मोटर्स पर परिणाम लागू करता है।
मिरो मार्कारेवन्स

मैं जाँच करूँगा कि किस प्रकार के नियंत्रक का उपयोग करता है, क्योंकि आप सॉफ्टवेयर में सर्वो व्यवहार की नकल करने की कोशिश कर रहे हैं।
क्रिस लैपलेंट

मैं servos का उपयोग नहीं करते। मैं कदम मोटर्स का उपयोग करता हूं इसलिए मोटर में पहले से ही ऐसा व्यवहार नहीं है।
मिरो मार्कार्वेंस

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

जवाबों:


7

PID नियंत्रण लूप के बारे में याद रखने वाली महत्वपूर्ण बात यह है कि प्रत्येक शब्द का उद्देश्य एक चाल के दौरान अलग-अलग समय पर नियंत्रण पर हावी होना है।

आनुपातिक शब्द का इरादा हावी होना और एक बड़ा टॉर्क प्रदान करना है (या आपके मामले की गति में) जो आप अपने लक्ष्य की स्थिति से दूर हैं।

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

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

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

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

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

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


8

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

मैं पहले से ही इस क्षेत्र में कुछ रोबोटिक्स किया है इस हम क्या हमारे रोबोट में इस्तेमाल किया, तुम्हारा करने के लिए एक नहीं बहुत भिन्न कार्य कर रही है ...


1
आपके उत्तर के लिए धन्यवाद। मैं उत्तर स्वीकार करना चाहता था, लेकिन मैं अधिक उत्तर देखना चाहता हूं, इसलिए जब अधिक उत्तर मिलेंगे तो मैं स्वीकार करूंगा;)
मिरो मार्करावैन्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.