अंतर ड्राइव रोबोट की स्थिति की गणना करें


14

आप वृद्धिशील सेंसर के साथ अंतर ड्राइव रोबोट की स्थिति की गणना या अद्यतन कैसे करते हैं?

दो भिन्न पहियों में से प्रत्येक के लिए एक वृद्धिशील सेंसर होता है। दोनों सेंसर दूरी सम्मान निर्धारित करते हैं । Δ r मैं टी उनके पहिया एक ज्ञात समय के दौरान लुढ़का है Δ टीΔleftΔrightΔt

सबसे पहले, मान लें कि दोनों पहियों के बीच केंद्र रोबोट की स्थिति को चिह्नित करता है। इस स्थिति में, कोई इस स्थिति की गणना कर सकता है:

x=xleft+xright2y=yleft+yright2

"व्युत्पन्न" उन समीकरणों के तहत जो दोनों पहियों एक सीधी रेखा में लुढ़के (जो कि छोटी दूरी के लिए लगभग सही होना चाहिए) I

ΔxΔt=12(ΔleftΔt+ΔrightΔt)cos(θ)ΔyΔt=12(ΔleftΔt+ΔrightΔt)sin(θ)

कहाँ रोबोट के उन्मुखीकरण का कोण है। इस कोण के परिवर्तन के लिए मुझे समीकरण मिलाθ

ΔθΔt=1w(ΔleftΔtΔrightΔt)

जहाँ दोनों पहियों के बीच की दूरी है।w

क्योंकि और Δ y पर निर्भर θ , मुझे आश्चर्य है कि क्या मैं पहली बार नई गणना चाहिए θ जोड़कर Δ θ या अगर मैं नहीं बल्कि "पुराने" का उपयोग करना चाहिए θ ? क्या एक के ऊपर एक प्रयोग करने का कोई कारण है?ΔxΔyθθΔθθ

फिर, चलो अब मान लें कि दोनों पहियों के बीच का केंद्र रोबोट की स्थिति को चिह्नित नहीं करता है । इसके बजाय मैं एक बिंदु का उपयोग करना चाहता हूं जो रोबोट के बाउंडिंग बॉक्स के ज्यामितीय केंद्र को चिह्नित करता है। फिर और y में परिवर्तन करें:xy

x=xleft+xright2+lcos(θ)y=yleft+yright2+lsin(θ)

"डाइविंग" पहला देता है:

ΔxΔt=12(ΔleftΔt+ΔrightΔt)cos(θ)lsin(θ)ΔθΔt

Δθθ

क्या स्थिति और अभिविन्यास के simulatenous अद्यतन करने के लिए कोई बेहतर तरीका है? जटिल संख्याओं का उपयोग कर सकते हैं (3 डी में चतुर्धातुक के समान दृष्टिकोण?) या समरूप निर्देशांक?

जवाबों:


8

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

तो, बस कल्पना करें कि प्रत्येक समय कदम पर, या हर बार जब आप वृद्धिशील सेंसर में परिवर्तन की गणना करते हैं, तो रोबोट इस तरह से चाप पर बिंदु ए से बिंदु बी तक यात्रा करता है: यहाँ छवि विवरण दर्ज करें यहां गणित के साथ कुछ नमूना कोड सरल किए गए हैं:

// leftDelta and rightDelta = distance that the left and right wheel have moved along
//  the ground

if (fabs(leftDelta - rightDelta) < 1.0e-6) { // basically going straight
    new_x = x + leftDelta * cos(heading);
    new_y = y + rightDelta * sin(heading);
    new_heading = heading;
} else {
    float R = unitsAxisWidth * (leftDelta + rightDelta) / (2 * (rightDelta - leftDelta)),
          wd = (rightDelta - leftDelta) / unitsAxisWidth;

    new_x = x + R * sin(wd + heading) - R * sin(heading);
    new_y = y - R * cos(wd + heading) + R * cos(heading);
    new_heading = boundAngle(heading + wd);
}

मैंने स्टीयरिंग के विभिन्न तरीकों को प्रदर्शित करने के लिए एक सिम्युलेटर में इसी तरह के गणित का उपयोग किया: http://www.cs.utexas.edu/~rjnevels/RobotSimulator4/demos/SteeringDemo/


1
उपरोक्त कोड स्निपेट में उपयोग किए गए समीकरण यहां दिए गए हैं: rossum.sourceforge.net/papers/DiffSteer
kamek

महान व्याख्या! सिम्युलेटर लिंक टूट गया है
smirkingman

2

एक दोहराया गणना के लिए, यह कोई फर्क नहीं पड़ता कि आप पाते हैं Δθ आवेदन करने से पहले या बाद में θ को Δएक्स,Δyगणना। आप हमेशा एक स्थिति और एक अभिविन्यास गणना के बीच बारी-बारी से करेंगे।

व्यावहारिक अर्थ में, गणना करना बेहतर हो सकता है Δθ गणना के बाद Δएक्स,Δy, क्योंकि लूप के माध्यम से आपके पहले पुनरावृत्ति के लिए प्रारंभिक मूल्य की आवश्यकता होती है θ

याद रखें कि यह वैसे भी एक त्रुटि-रहित माप पद्धति है - यह 1 डी माप की एक जोड़ी है जो 3 डी दुनिया के 2 डी सन्निकटन को खिलाती है। भले ही आप एΔटी बहुत करीब 0, यह अभी भी व्हील स्लिपेज और असमान इलाके के लिए जिम्मेदार नहीं होगा।


"फॉरवर्ड कीनेमेटीक्स ऑफ़ डिफरेंशियल ड्राइव व्हीकल्स" की खोज करने से इस सवाल पर अधिक गणितीय दृष्टिकोण के साथ लेखों का एक गुच्छा उपलब्ध होना चाहिए।
इयान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.