विशिष्ट तथ्य
पीआईडी बेसिक उदाहरण को देखते हुए मुझे लगता है कि आपको पीआईडी नियंत्रक की दो प्रतियों को तत्काल भरने की आवश्यकता है, प्रत्येक पहिया के लिए एक, एनकोडर और pwm:
PID leftPID(&InputLeft, &OutputLeft, &SetpointLeft,2,5,1, DIRECT);
PID rightPID(&InputRight, &OutputRight, &SetpointRight,2,5,1, DIRECT);
फिर, अपने loop()
समकक्ष में, आप बस दोनों एन्कोडर्स को पढ़ते हैं, प्रत्येक एनकोडर मान को संबंधित के पास करते हैं PID
और अंत में दोनों PWM मान लिखते हैं।
अभी के लिए SetpointLeft
और SetpointRight
वास्तव में एक ही मूल्य पर इंगित कर सकते हैं, लेकिन उन्हें इस तरह अलग-अलग परिभाषित करना आपको बाद में मुड़ने की क्षमता जोड़ने की अनुमति देता है।
अवधारणाओं
हालांकि यह मूल मामले के लिए काम कर सकता है, क्या यह वास्तव में पर्याप्त है यह इस बात पर निर्भर करता है कि आपको अपनी सीधी रेखा की आवश्यकता कितनी सटीक है।
यह देखते हुए कि आपके पास प्रत्येक पहिये पर एनकोडर हैं, यदि आप दो पीआईडी लूप चलाते हैं और प्रत्येक पहिए की निम्न त्रुटि की तुलना करते हैं , तो आप संभावित रूप से दूरी पर अपने अधिकतम एब त्रुटि की गणना कर सकते हैं , यह मानते हुए कि आपके पहिए फिसलते नहीं हैं। यदि वह त्रुटि आपकी आवश्यकताओं से छोटी है, तो मृत गणना आपको सभी की आवश्यकता है।
यदि आपके पहिए फिसलने की संभावना है, तो आप निम्नलिखित त्रुटि को छिपा सकते हैं, जो आपके नियंत्रण प्रणाली का पता नहीं लगा सकती है और आपको अपने पहिया एनकोडर से स्वतंत्र रूप से स्लिप का पता लगाने या स्थिति की गणना करने के लिए किसी तरह की आवश्यकता होगी और फिर सही करने के लिए उच्च स्तर के सॉफ़्टवेयर का उपयोग करें एक सीधी रेखा बनाए रखने के लिए व्हील पोजीशन / वेलोसिटी की मांग की।
सापेक्ष स्थिति निर्धारण
जैसा कि जॉन का सुझाव है , आप स्थिति निर्धारित करने के लिए एक्सेलेरोमीटर का उपयोग करने में सक्षम हो सकते हैं, लेकिन उनकी सटीकता और समय के साथ संचित त्रुटियों के प्रभाव को देखते हुए, आप व्हील स्लिपेज का पता लगाने और सही करने के लिए एक्सेलेरोमीटर डेटा का उपयोग करके बेहतर हो सकते हैं।
मोबाइल रोबोटिक्स में, कलमन फ़िल्टरिंग तकनीकों का उपयोग आमतौर पर कई स्रोतों से डेटा को फ्यूज करने के लिए किया जाता है, जैसे कि एक्सेलेरोमीटर और पहिया एनकोडर वर्तमान स्थिति को बेहतर ढंग से निर्धारित करने के लिए।
आप जो भी करते हैं, वह सापेक्ष स्थिति निर्धारण के साथ करते हैं, लेकिन समय के साथ जिस स्थिति के बारे में आप मानते हैं कि वह आपकी वास्तविक भौतिक स्थिति से दूर हो जाएगी ।
पूर्ण स्थिति निर्धारण
इसके चारों ओर जाने का एकमात्र तरीका आपके वाहनों के संदर्भ के फ्रेम के बाहर एक संदर्भ बिंदु है।
उदाहरण के लिए एक रूमबा आम तौर पर एक कमरे में घूमने के लिए मृत रेकिंग का उपयोग करता है, लेकिन जब भी इसे डॉक करने की आवश्यकता होती है, तो यह चार्जिंग डॉक द्वारा भेजे गए इन्फ्रा-रेड लाइट की एक बीम की तलाश करता है। जैसा कि रूमबा बेतरतीब ढंग से उस बीम से गुजरता है, वह इसका पता लगाता है, बीम पर ताला लगाता है और अपने स्रोत पर वापस जाता है। यह टक्कर सेंसर के साथ संयोजन में, यह चार्जिंग संपर्कों पर खुद को सही ढंग से स्थिति दे सकता है।
आपके रोबोट के लिए, यह एक घर की स्थिति हो सकती है, जहां यह वापस जा सकता है और पता लगा सकता है कि यह उस ज्ञात स्थान पर है। उस बिंदु पर यह वास्तव में जानता है कि यह कहां है और यह रिपोर्ट कर सकता है कि इसकी गणना वास्तविक स्थिति से कितनी दूर है।
एक अन्य विकल्प, यदि आपको अपने रोबोट को सैकड़ों मीटर से अधिक की सीधी रेखा में यात्रा करने की आवश्यकता है, तो एक अलग तकनीक पर स्विच करना होगा, जैसे कि अरुडिनो जीपीएस शील्ड को जोड़ना ।
तकनीकों का एक संयोजन
अंततः, आपकी सटीकता की आवश्यकताओं के आधार पर, आपको इन तकनीकों के संयोजन का उपयोग करने की आवश्यकता हो सकती है।
यदि एक गाइड बीम संभव है, तो आप वह कर सकते हैं जो आप चाहते हैं कि एक अदृश्य रेखा निम्नलिखित तकनीक के साथ बहुत सरलता से चाहती है । यदि आपको किसी विवश क्षेत्र में किसी भी मनमानी सीधी रेखा में जाने की आवश्यकता है, तो रुम्बा की तरह आप एक कार्टेसियन अक्ष में अपनी संश्लेषित स्थिति को सही करने के लिए आपको गाइड बीम (एक दूसरे से समकोण पर) की एक जोड़ी का उपयोग करने में सक्षम हो सकते हैं। हर बार रोबोट बीम में से एक को पास करता है।
यहां बहुत सारे विकल्प हैं, और आपने जो चुना है वह इस बात पर निर्भर करेगा कि आपको क्या चाहिए।