मेरे द्वारा यहां पूछे गए प्रश्न की निरंतरता में: स्वायत्त मोड में सरल टेकऑफ़ के साथ क्वॉडकॉप्टर अस्थिरता ... मैं एपीएम 2.6 मॉड्यूल द्वारा नियंत्रित क्वाड्रोटर के लिए एक बुनियादी पीआईडी को लागू करने के बारे में कुछ सवाल पूछना चाहूंगा। (मैं 3DRobotics से एक फ्रेम का उपयोग कर रहा हूं)
मैंने पूरे नियंत्रण प्रणाली को सिर्फ दो पीआईडी ब्लॉक, एक को नियंत्रित करने वाले रोल के लिए और दूसरा पिच को नियंत्रित करने के लिए (यॉ और बाकी सब कुछ ... मैं बाद में उनके बारे में सोचूंगा) को छीन लिया है।
मैं इस सेटअप को एक रिग पर परीक्षण कर रहा हूं, जिसमें एक स्वतंत्र रूप से घूर्णन बीम होता है, जिसमें मैंने क्वाड्रोटर की दो भुजाओं को बांधा है। अन्य दो स्थानांतरित करने के लिए स्वतंत्र हैं। इसलिए, मैं वास्तव में एक बार में एक डिग्री की स्वतंत्रता (रोल या पिच) का परीक्षण कर रहा हूं।
नीचे दी गई छवि की जांच करें: यहां ए, बी स्वतंत्र रूप से घूर्णन बीम को चिह्नित करता है जिस पर सेटअप माउंट किया गया है।
पी और डी मापदंडों के सावधानीपूर्वक ट्यूनिंग के साथ, मैं लगभग 30 सेकंड की निरंतर उड़ान प्राप्त करने में कामयाब रहा।
लेकिन 'निरंतर' द्वारा, मेरा मतलब है कि एक ऐसा परीक्षण जिसमें ड्रोन एक तरफ से ऊपर नहीं जा रहा है। रॉक स्टेबल फ़्लाइट अभी भी देखने में नहीं है, और उड़ान के 30 से अधिक सेकंड भी काफी मुश्किल दिखते हैं। यह शुरू से ही लड़खड़ाता है। जब तक यह 20 - 25 सेकंड तक पहुंचता है, तब तक यह एक तरफ झुकना शुरू कर देता है। 30 सेकंड के भीतर, यह अस्वीकार्य मार्जिन द्वारा एक तरफ झुका हुआ है। जल्द ही, मुझे लगता है कि यह उल्टा आराम कर रहा है
पीआईडी कोड के लिए ही, मैं gyro + एक्सेलेरोमीटर डेटा के 'मानार्थ फ़िल्टर' से आनुपातिक त्रुटि की गणना कर रहा हूँ। अभिन्न शब्द शून्य पर सेट है। P शब्द लगभग 0.39 पर आता है और D शब्द 0.0012 पर है। (मैं उद्देश्य पर Arduino PID लाइब्रेरी का उपयोग नहीं कर रहा हूं, बस अपने खुद के PID को यहां लागू करना चाहता हूं।)
इस वीडियो को देखें, यदि आप यह देखना चाहते हैं कि यह कैसे काम करता है।
http://www.youtube.com/watch?v=LpsNBL8ydBA&feature=youtu.be [ये, सेटअप बहुत प्राचीन है! मैं सहमत हूँ। :)]
कृपया मुझे बताएं कि मैं इस स्तर पर स्थिरता को बेहतर बनाने के लिए क्या कर सकता हूं।
@ इयान: मैंने अपने सेटअप के साथ किए गए कई परीक्षणों में, मैंने धारावाहिक मॉनीटर से रीडिंग का उपयोग करते हुए कुछ परीक्षणों के लिए प्लॉट ग्राफ़ बनाए। यहाँ रोल बनाम 'Motor1 & Motor2 - PWM इनपुट' (रोल को नियंत्रित करने वाले दो मोटर्स) का एक नमूना पढ़ना है:
इनपुट / आउटपुट के लिए:
इनपुट: रोल और पिच मान (डिग्री में), जैसा कि एक्सेलेरोमीटर + जाइरो के संयोजन से प्राप्त होता है
आउटपुट: मोटर्स के लिए PWM मान, सर्वो लाइब्रेरी के मोटर। राइट () फ़ंक्शन का उपयोग करके दिया गया
संकल्प
मैंने समस्या का समाधान किया। ऐसे:
इस मुद्दे की क्रूरता ने उस तरीके से झूठ बोला जिस तरह से मैंने Arduino प्रोग्राम को लागू किया था। मैं सर्वो कोणों को अद्यतन करने के लिए लेखन () फ़ंक्शन का उपयोग कर रहा था, जो तर्क में केवल पूर्णांक चरणों को स्वीकार करने के लिए होता है (या किसी तरह केवल पूर्णांक इनपुट पर प्रतिक्रिया करता है, 100 और 100.2 एक ही परिणाम उत्पन्न करता है)। मैंने इसे लिखने के लिए बदल दिया मैक्माइक्रोसेकंड () और इससे कॉप्टर काफी हद तक स्थिर हो गया।
मैं एक मोटर पर आरपीएम जोड़ रहा था जबकि दूसरे को स्थिर मूल्य पर रख रहा था। मैंने विरोध मोटर को कम करते हुए RPM को एक मोटर में बढ़ाने के लिए इसे बदल दिया। उस थोड़े कुल क्षैतिज जोर को अपरिवर्तित रखता है, जो मुझे इस चीज पर ऊर्ध्वाधर ऊंचाई पकड़ पाने की कोशिश कर रहा है।
मैं आरपीएम को अधिकतम सीमा तक बढ़ा रहा था, यही वजह है कि क्वाडकॉप्टर पूरे गला घोंटकर नियंत्रण खो रहा था। आरपीएम में वृद्धि के लिए कोई जगह नहीं थी जब उसने एक झुकाव महसूस किया।
मैंने देखा कि एक मोटर दूसरे की तुलना में स्वाभाविक रूप से कमजोर थी, मुझे नहीं पता कि क्यों। मैंने उस मोटर्स PWM इनपुट में एक ऑफसेट को हार्डकोड किया।
समर्थन के लिए धन्यवाद।
सोर्स कोड:
यदि आप रुचि रखते हैं, तो यहां मेरे नंगे-हड्डियों के स्रोत कोड पीआईडी कार्यान्वयन: पीआईडी स्रोत कोड है
कृपया इसे अपने हार्डवेयर में परीक्षण करने के लिए स्वतंत्र महसूस करें। परियोजना में किसी भी योगदान का स्वागत किया जाएगा।