PID के साथ स्मूथ स्टीयरिंग
एक PID कंट्रोलर इस आधार पर स्टीयर करता है कि आप लाइन से कितनी दूर हैं, कितनी देर से दूर हैं, और एरर कितनी तेज़ी से बदल रही है। वर्चुअल रोबोट पर P, I और D को तब तक ट्यून करें जब तक कि वह लाइन को स्मूथली ट्रैक न करने लगे।
60 सेकंड में
PID के साथ स्मूथ स्टीयरिंग
एक PID कंट्रोलर इस आधार पर स्टीयर करता है कि आप लाइन से कितनी दूर हैं, कितनी देर से दूर हैं, और एरर कितनी तेज़ी से बदल रही है। वर्चुअल रोबोट पर P, I और D को तब तक ट्यून करें जब तक…
s["offset"] है: टेप के बाईं (+) या दाईं (−) ओर की सेंटीमीटर में दूरी। अब हम स्मूथली स्टीयर कर सकते हैं।तीनों टर्म्स
| टर्म | यह क्या देखता है | यह क्या करता है | इसकी बहुत ज़्यादा मात्रा से क्या होता है |
|---|---|---|---|
| P (प्रपोर्शनल) | अभी का एरर | जब आप ज़्यादा दूर हों तो ज़्यादा मुड़ें | तेज़ लहराव (ऑसिलेशन) |
| I (इंटीग्रल) | समय के साथ जुड़ता हुआ कुल एरर | एक छोटी लगातार एरर को हटाता है, उदाहरण के लिए जब एक मोटर कमज़ोर हो | धीमे, बड़े झूले और ओवरशूट |
| D (डेरिवेटिव) | एरर कितनी तेज़ी से बदल रही है | लाइन के करीब पहुँचते ही मुड़ने की रफ़्तार को धीमा करता है, जिससे लहराव शांत होता है | घबराहट भरी, झटकेदार स्टीयरिंग जो शोर (नॉइज़) पर भी रिएक्ट करती है |
turn = KP × error + KI × sum_of_errors + KD × change_in_error। फिर बाएँ पहिये को base + turn और दाएँ पहिये को base − turn मिलता है। KP, KI और KD संख्याएँ गेन्स (gains) हैं। ट्यूनिंग का मतलब है इन्हें चुनना।KP, KI, KD = 0.1, 0.0, 0.2
base = 0.6
total, previous = 0.0, None
for error in [8.0, 6.5, 4.0, 2.0, 0.5, -0.3]: # cm, the robot is closing in on the line
total += error
change = 0.0 if previous is None else error - previous
previous = error
turn = KP * error + KI * total + KD * change
print(f"error {error:5.1f} change {change:5.1f} turn {turn:6.2f} "
f"wheels ({base + turn:.2f}, {base - turn:.2f})")ट्यून करने का एक आसान तरीका
- 1
सारे गेन्स 0 से शुरू करें
रोबोट सीधा चलता है और लाइन छोड़ देता है: ऐसा होना स्वाभाविक है। - 2
KP को धीरे-धीरे बढ़ाएँ
तब तक बढ़ाएँ जब तक रोबोट लाइन पर चलने न लगे। अगर वह लहराने लगे, तो थोड़ा पीछे आएँ। - 3
थोड़ा KD जोड़ें
इससे लहराव कम होना चाहिए और आप ज़्यादा KP का इस्तेमाल कर पाएँगे। - 4
ज़रूरत पड़ने पर ही ज़रा-सा KI जोड़ें
अगर रोबोट हमेशा एक तरफ थोड़ा हटकर रहता है, तो थोड़ा-सा KI इसे ठीक कर देता है। बहुत ज़्यादा होने पर यह झूलने लगेगा। - 5
एक बार में एक ही चीज़ बदलें और उसे लिख लें
गेन्स और नतीजों की एक टेबल बनाएँ।
असली रोबोट्स पर PID के लिए दो सुरक्षा आदतें
- टर्न को सीमित रखें। टर्न को क्लिप (सीमित) करें ताकि पहिये कभी भी अपनी सुरक्षित रेंज से बाहर न जाएँ। लैब कोड टर्न को बेस स्पीड तक क्लिप करता है।
- इंटीग्रल को सीमित रखें। अगर रोबोट अटक जाता है या उसे उठा लिया जाता है, तो एरर लगातार जुड़ती रहती है (इसे इंटीग्रल वाइंडअप कहते हैं)। जब उसे वापस नीचे रखा जाता है, तो वह ज़ोर से झूल सकता है। इस जोड़ पर एक सीमा (cap) लगाएँ, या जब रोबोट रुके तो इसे रीसेट कर दें।
और देखें और पढ़ें
लैब
ट्यून किए गए P, I और D गेन्स जो दो अलग-अलग शुरुआती बिंदुओं से वर्चुअल रोबोट को लाइन पर वापस लाते हैं और उसे 2 सेमी के भीतर रखते हैं।
समस्या
यह आपके ब्राउज़र में चलता है। रोबोट लाइन से 10 सेमी दूर, उससे उल्टी दिशा में मुँह करके शुरू होता है। PID कोड पहले से लिखा हुआ है; आपका काम KP, KI और KD को ट्यून करना है।
- सभी गेन्स को 0 पर रखकर स्टार्टर चलाएँ। रोबोट दूर चला जाता है।
KPको धीरे-धीरे बढ़ाएँ (0.01, 0.05, 0.1, 0.3, 1.0 आज़माएँ)। तस्वीर और संख्याओं को देखें।- फिर
KD(0.1, 0.3, 1.0) और ज़रा-साKI(0.01, 0.05) जोड़कर देखें। - लक्ष्य: स्टेप 40 के बाद से, रोबोट का मध्य भाग टेप के 2 सेमी के भीतर रहे, वह कम से कम x = 140 सेमी तक पहुँचे, और क्रैश न हो। यह जाँच दूसरी तरफ से एक दूसरी शुरुआत भी आज़माती है।
- अपने द्वारा आज़माई गई कम से कम पाँच गेन सेटिंग्स और क्या हुआ, इसकी एक टेबल बनाएँ। यहाँ किस टर्म ने सबसे ज़्यादा मदद की? किसने स्थिति को बिगाड़ दिया?
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1लैब टर्न को बेस स्पीड तक क्लिप (सीमित) क्यों करती है?दिखाएं
क्लिप के बिना, एक बड़ी एरर बहुत बड़ा टर्न देती है, जिससे एक पहिया पूरी स्पीड से आगे और दूसरा पूरी स्पीड से पीछे घूमने लगता है। रोबोट फिर एक ही जगह पर घूमने लगता है, और चूँकि वह आगे मुश्किल से ही बढ़ पाता है इसलिए वह गोल-गोल घूमते हुए अटक सकता है। क्लिप करने से दोनों पहिये शून्य या उससे ऊपर रहते हैं, जिससे मुड़ते समय भी रोबोट हमेशा आगे बढ़ता रहता है। असली रोबोट्स पर, इस तरह की सीमाएँ मोटरों की सुरक्षा भी करती हैं और गति को अनुमान के मुताबिक बनाए रखती हैं।
Q2आपके गेन्स सिम्युलेटर में बिल्कुल सही काम करते हैं। असली रोबोट पर, वही गेन्स बहुत ज़्यादा लहराव पैदा करते हैं। दो कारण बताइए और आप क्या बदलाव करेंगे।दिखाएं
असली मोटरों को तेज़ या धीमा होने में समय लगता है, और असली सेंसर ज़्यादा नॉइज़ी होते हैं और हो सकता है कि कम बार रीडिंग लें, इसलिए कंट्रोलर पुरानी या अस्थिर जानकारी पर प्रतिक्रिया देता है। इससे वही गेन्स बहुत ज़्यादा ताक़तवर हो जाते हैं। असली रोबोट पर कम KP और KD के साथ शुरुआत करें, सेंसर रीडिंग को स्मूथ करें, और धीरे-धीरे फिर से ट्यून करें। यह वास्तविक जीवन में सिम-टू-रियल गैप (sim-to-real gap) का उदाहरण है।
अक्सर पूछे जाने वाले सवाल
क्या PID सिर्फ़ लाइन फ़ॉलोअर्स के लिए है?
नहीं। PID का इस्तेमाल बहुत बड़े पैमाने पर होता है: ड्रोन को सीधा रखना, मोटर को एक तय स्पीड पर चलाना, ओवन या वॉटर हीटर को एक तय तापमान पर बनाए रखना, और कई फ़ैक्ट्री मशीनों में। जहाँ कहीं भी आप चाहते हैं कि कोई माप एक टारगेट पर बना रहे, वहाँ PID पहली आम पसंद होती है।
क्या मुझे हमेशा तीनों टर्म्स की ज़रूरत होती है?
नहीं। कई रोबोट सिर्फ़ P, या PD का इस्तेमाल करते हैं। I का इस्तेमाल तभी करें जब कोई ऐसी लगातार एरर बची रह जाए जिसे P और D ठीक न कर पा रहे हों। जितना सरल होगा, ट्यून करना और समझना उतना ही आसान होगा।
D शोर (नॉइज़) पर ख़राब तरीके से रिएक्ट क्यों करता है?
D यह देखता है कि एरर कितनी तेज़ी से बदल रही है। एक नॉइज़ी सेंसर की वजह से एरर एक रीडिंग से दूसरी रीडिंग में ऊपर-नीचे उछलती है, जो एक तेज़ बदलाव जैसा लगता है। तब D तीखे, झटकेदार टर्न लेता है। सेंसर रीडिंग को स्मूथ करना, या छोटे KD का इस्तेमाल करना मदद करता है।
क्या PID से बेहतर तरीके हैं?
कुछ कामों के लिए, हाँ। इंजीनियर्स मॉडल-बेस्ड कंट्रोलर्स और रिसर्च में सीखे हुए (learned) कंट्रोलर्स का भी इस्तेमाल करते हैं। लेकिन PID सरल है, अच्छी तरह समझा गया है और अक्सर काफ़ी अच्छा काम करता है, यही वजह है कि सीखने के लिए यह पहला क्लासिक कंट्रोलर है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।