क्या इसमें कोई समस्या है?
इसके साथ मुख्य मुद्दा यह है कि जबकि आपका प्रस्तावित समाधान मोटर्स के प्रदर्शन के बीच एक बेमेल के लिए तुरंत सही होगा, यह संचित त्रुटि के लिए सही नहीं होगा, अकेले स्थिति में और अधिक जटिल त्रुटियों जैसे कि एबे त्रुटि (बाद में देखें) दें।
एक बेहतर तरीका क्या है?
ऐसी कई चीजें हैं जो आप कर सकते हैं, इस पर निर्भर करता है कि त्रुटियों के लिए आपकी सहिष्णुता क्या है और आप उन्हें सुधारने में कितना प्रयास करना चाहते हैं।
पहला कदम पीआईडी छोरों की एक जोड़ी स्थापित करना होगा, प्रत्येक पहिया के लिए एक, दोनों को एक ही मांग की स्थिति देगा। जैसा कि मैंने एक समान प्रश्न के उत्तर में सुझाव दिया है , यदि आप दोनों पहियों को बहुत तंग त्रुटि के दायरे में रखते हैं, जहां आप उन्हें होने के लिए कहते हैं, तो ध्यान देने योग्य वीर पैदा करने के लिए पर्याप्त त्रुटि संचित करने में कुछ समय लगेगा।
एकल जटिल, अन्योन्याश्रित संयुक्त प्रणाली की तुलना में दो नाममात्र स्वतंत्र मोटर स्तर पीआईडी लूप को ट्यून करना बहुत आसान होगा। काम कर रहे उच्च स्तर के नियंत्रण के किसी भी बदलाव को खड़ा करने के लिए आपको वास्तव में प्रत्येक मोटर की आवश्यकता होती है ताकि जितना संभव हो उतना समय के लिए अन्य मोटर के समान व्यवहार किया जा सके और इसके लिए वास्तव में अलग सर्वो लूप की आवश्यकता होती है।
हालाँकि और भी कई जटिलताएँ हैं, और यह निर्भर करता है कि आपको किस सटीकता की आवश्यकता है और आप उनके लिए सही करने के लिए कितना प्रयास करने के लिए तैयार हैं। यह हो सकता है कि डेड रेकिंग पर्याप्त है, या आपको अपने रोबोट में सापेक्ष या निरपेक्ष स्थिति निर्धारण को जोड़ने की आवश्यकता हो सकती है।
एक समस्या यह है कि भले ही आपके बाएं और दाएं दोनों पहिए 1000 एनकोडर की संख्या को आगे बढ़ाते हैं, फिर भी आप दो अलग-अलग रनों पर एक अलग स्थिति में समाप्त हो सकते हैं ।
उदाहरण के लिए, मान लें कि आपके पास 10 एनकोडर काउंट्स की अधिकतम त्रुटि है, और आपकी मोटरें पीआईडी लूप पुनरावृत्ति के अनुसार 10 एनकोडर काउंट्स की गति से चल रही हैं। आपकी बाईं मोटर ५,१०,१०,१० ... १०,५ आगे बढ़ सकती है, जबकि आपकी दाहिनी मोटर में ४,११,१०,१० ... १०,५ की प्रोफाइल हो सकती है और शुरू में त्वरण में मामूली अंतर भी। इस कदम के कारण रोबोट थोड़ी सी गलत दिशा में जा सकता है। केवल इतना ही नहीं बल्कि आप जिस दिशा में आगे बढ़ेंगे, त्रुटि उतनी ही बड़ी हो जाएगी। जब हम अब्बे त्रुटि की बात करते हैं , और एक जटिल गतिज मॉडल या किसी प्रकार के बाहरी संदर्भ के बिना हम इस बारे में बात कर रहे हैं, तो आप कभी भी इसके लिए सही नहीं हो पाएंगे।
अधिक जानकारी के लिए, एक समान लेकिन बिल्कुल डुप्लिकेट प्रश्न के समान मेरा उत्तर देखें : मैं एक सीधी रेखा में रोबोट को चलाने के लिए Arduino PID लाइब्रेरी का उपयोग कैसे कर सकता हूं?
और संबंधित लाइन अनुयायी अनुकूलन के लिए मेरा जवाब