ड्रोन और सेल्फ़-ड्राइविंग की बुनियादी बातेंमध्यमपाठ 2836 मिनट का पाठ

आप कहाँ हैं, यह जानना

अपने कदमों की गिनती भटक जाती है। GPS इधर-उधर उछलता रहता है। दोनों को मिला दें, तो आपको किसी एक से कहीं बेहतर नतीजा मिलता है। इसे लोकलाइज़ेशन (localisation) कहते हैं।

पाठ वीडियो में

60 सेकंड में

आप कहाँ हैं, यह जानना

अपने कदमों की गिनती भटक जाती है। GPS इधर-उधर उछलता रहता है। दोनों को मिला दें, तो आपको किसी एक से कहीं बेहतर नतीजा मिलता है। इसे लोकलाइज़ेशन (localisation) कहते हैं।

1/4
आसान शब्दों में
एक अंधेरे गलियारे में अपने कदम गिनते हुए चलें: "बीस कदम, यानी मैं क्लासरूम के दरवाज़े पर हूँ।" हर कदम आपके अंदाज़े से थोड़ा छोटा या बड़ा होता है, इसलिए सौ कदमों के बाद आप सही जगह से काफी दूर निकल जाते हैं। अब कोई हर कुछ सेकंड में आवाज़ लगाता है "तुम वॉटर कूलर के पास हो"। उनकी आवाज़ भी बिल्कुल सटीक नहीं है, लेकिन यह आपकी गिनती की गलती को लगातार बढ़ने से रोक देती है। दोनों को मिला दें, तो आपको पता चल जाता है कि आप कहाँ हैं।
इससे पहले कि कोई मशीन तय करे कि कहाँ जाना है, उसे पता होना चाहिए कि वह कहाँ है। इसे लोकलाइज़ेशन कहते हैं। यह सुनने में आसान लगता है, लेकिन हर तरीके में गलतियाँ (errors) होती हैं, और वे गलतियाँ अलग-अलग तरह से पेश आती हैं।

डेड रेकनिंग (Dead reckoning): अपनी ही गति को गिनना

डेड रेकनिंग का मतलब है अपनी ही गति से अपनी स्थिति (position) का पता लगाना: पहियों के घूमने से, स्पीड, दिशा और समय से। एक रोबोट कार पहियों के चक्कर गिनती है। एक ड्रोन अपने IMU से मिलने वाली रीडिंग को जोड़ता जाता है। यह तरीका बहुत स्मूद और तेज़ होता है, और यह कहीं भी काम करता है, यहाँ तक कि कमरों के अंदर या किसी सुरंग में भी।
परेशानी है ड्रिफ्ट (drift) यानी भटकना। अगर पहिया थोड़ा घिसा हुआ है, तो हर मीटर को एक मीटर से थोड़ा कम या ज़्यादा गिना जाएगा। हर कदम पर एक छोटी सी गलती बार-बार जुड़ती जाती है, इसलिए आप जितनी दूर जाते हैं, कुल गलती उतनी ही बड़ी होती जाती है। रेत या कीचड़ पर पहियों का फिसलना, और दिशा का महज़ एक डिग्री भटक जाना, इसे और भी बिगाड़ देता है।
Python: how a small wheel error growspython
# A robot thinks each wheel turn moves it 1.00 m.
# In truth the wheel is slightly worn and moves 0.98 m per turn.
believed_per_turn = 1.00
real_per_turn = 0.98

for turns in [10, 100, 1000, 5000]:
    believed = turns * believed_per_turn
    real = turns * real_per_turn
    print(f"after {turns:5d} turns: believes {believed:7.1f} m, really {real:7.1f} m, "
          f"error {believed - real:6.1f} m")

GPS: इसमें शोर (noise) है लेकिन यह भटकता नहीं

सैटेलाइट नेविगेशन सीधे पोज़िशन बताता है। समय के साथ इसकी गलती बढ़ती नहीं है, लेकिन हर रीडिंग कुछ मीटर गलत हो सकती है, यह इधर-उधर उछलता है, यह हर सेकंड में कुछ ही बार अपडेट होता है, और ऊँची इमारतों के पास सिग्नल टकराकर लौटते हैं, जिससे स्थिति और बिगड़ सकती है। इनडोर, किसी फ्लाईओवर के नीचे या सुरंग में तो यह शायद बिल्कुल भी काम न करे।
डेड रेकनिंगGPS
कम समय के लिए (Short-term)स्मूद और सटीकउछलने वाला, कुछ मीटर का शोर (noise)
लंबे समय के लिए (Long-term)गलती लगातार बढ़ती जाती है (drift)गलती लगभग एक जैसी ही रहती है
कमरों के अंदर, सुरंगों मेंफिर भी काम करता हैअक्सर फेल हो जाता है
अपडेट की स्पीडबहुत तेज़एक सेकंड में कुछ ही बार

दोनों को मिलाना: पहले अंदाज़ा लगाएँ, फिर सुधारें

सबसे अच्छे तरीके दो कदमों को दोहराते हैं। प्रेडिक्ट (Predict): अपने अंदाज़े को उतना आगे बढ़ाएँ जितना डेड रेकनिंग कहता है, और यह मान लें कि अब आप पहले से थोड़े कम पक्के हैं। करेक्ट (Correct): जब कोई GPS रीडिंग मिले, तो अपने अंदाज़े को थोड़ा-बहुत उसकी तरफ खिसकाएँ। कितना खिसकाना है, यह इस बात पर निर्भर करता है कि आप किस पर कितना भरोसा करते हैं।
  1. 1

    शुरुआत

    पोज़िशन का एक अंदाज़ा, और आप कितने अनिश्चित हैं इसके लिए एक संख्या (variance)।
  2. 2

    प्रेडिक्ट

    पहियों या IMU से हुई हलचल को जोड़ें। अनिश्चितता थोड़ी बढ़ जाती है।
  3. 3

    नापना

    GPS की रीडिंग मिलती है, अपनी अनिश्चितता के साथ।
  4. 4

    करेक्ट

    वेटेड एवरेज (weighted average) निकालें: जिस पर कम अनिश्चितता हो, उस पर ज़्यादा भरोसा करें। अनिश्चितता घट जाती है।
  5. 5

    दोहराएँ

    हर कदम पर। ड्रिफ्ट कभी बड़ा नहीं हो पाता, और GPS का शोर भी शांत हो जाता है।
अगर दोनों अंदाज़े बराबर अनिश्चित हैं, तो जवाब दोनों के बिल्कुल बीच में होगा। अगर GPS में बहुत ज़्यादा शोर है, तो जवाब प्रेडिक्शन के करीब रहेगा और बहुत थोड़ा ही खिसकेगा। कदम-दर-कदम किया जाने वाला यह वेटेड एवरेज ही कलमन फ़िल्टर (Kalman filter) का मूल आधार है, जिसका इस्तेमाल नेविगेशन में बहुत बड़े पैमाने पर होता है।
नोट
ड्रिफ्ट को ठीक करने के और भी तरीके हैं। कोई रोबोट पहले से देखी गई जानी-पहचानी चीज़ों (लैंडमार्क्स) को पहचान सकता है, या अपने lidar या कैमरे से दिखने वाली चीज़ों का किसी नक्शे से मिलान कर सकता है। नक्शा बनाना और उसी समय उसमें अपनी स्थिति ढूँढना SLAM (साइमल्टेनियस लोकलाइज़ेशन एंड मैपिंग) कहलाता है। घर के अंदर चलने वाले कई रोबोट और वैक्यूम क्लीनर इसी तरह के तरीकों का इस्तेमाल करते हैं।
असली उदाहरण
पंजाब में एक खेत का रोबोट गेहूँ की कतारों के बीच चलता है। खुले खेत में सैटेलाइट नेविगेशन उसे सही रास्ते पर रखता है। जब वह ऊँचे पेड़ों की एक कतार के नीचे से गुज़रता है, तो कुछ देर के लिए सिग्नल कमज़ोर हो जाता है। उसके पहियों की गिनती और IMU उसे आगे निकालते हैं, और जब सिग्नल वापस आता है तब तक गलती बहुत कम ही रहती है। इनमें से कोई भी एक तरीका अकेले इतना अच्छा काम नहीं कर पाता।
इसे आज़माएँ। कोड में, हर चक्कर की असली दूरी को बदलकर 1.01 कर दें। क्या समय के साथ गलती कम होती है, या सिर्फ उसकी दिशा बदलती है?

और देखें और पढ़ें

लैब

एक fuse() फ़ंक्शन जो डेड रेकनिंग और GPS को मिलाता है, और बनावटी डेटा पर दोनों से बेहतर साबित होता है।

~25 min

समस्या

यह आपके ब्राउज़र में चलता है। एक रोबोट सीधी सड़क पर चल रहा है। इसके पहियों की रीडिंग 5% ज़्यादा है (drift), और इसके GPS में लगभग 3 मीटर का शोर (noise) है। सारे नंबर बनावटी हैं।

  1. fuse(estimate, est_var, measurement, meas_var) को पूरा करें। वेट k = est_var / (est_var + meas_var) का इस्तेमाल करें। नया अंदाज़ा माप की तरफ k हिस्से जितना खिसक जाता है। नया वैरियंस (variance) (1 - k) × est_var होता है।
  2. इसे चलाएँ और तीनों गलतियों की तुलना करें। प्लॉट को देखें।
  3. GPS_VAR को बदलकर 100 कर दें (यानी आप GPS पर बहुत कम भरोसा करते हैं)। फ़्यूज़ की गई (fused) लाइन का क्या होता है? दो वाक्य लिखें।

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1पहियों की रीडिंग में बायस (bias) है (5% ज़्यादा), लेकिन फ़िल्टर सिर्फ रैंडम गलती मानकर चलता है। फिर भी दोनों को मिलाना (फ्यूज़न) इतना अच्छा काम क्यों करता है?दिखाएं

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

Q2अगर 30 सेकंड के लिए GPS गायब हो जाए, तो फ़्यूज़ किए गए अंदाज़े का क्या होगा?दिखाएं

सिग्नल न होने के दौरान, सिर्फ प्रेडिक्ट वाला कदम ही चलता है। अंदाज़ा डेड रेकनिंग का पीछा करता है और भटकता जाता है, और हर कदम पर वैरियंस बढ़ता जाता है। जब GPS वापस आता है, तो बड़े वैरियंस का मतलब होता है कि फ़िल्टर पहली नई GPS रीडिंग पर बहुत ज़्यादा भरोसा करता है और झटके से उसकी तरफ आ जाता है। अच्छे सिस्टम भरोसा करने से पहले यह भी जाँचते हैं कि वापस आने वाली रीडिंग समझदारी भरी है या नहीं।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

इसे 'डेड रेकनिंग' क्यों कहा जाता है?

यह जहाज़ी नेविगेशन का एक पुराना शब्द है, जहाँ नाविक स्पीड, दिशा और समय की मदद से अपनी स्थिति का हिसाब लगाते थे। इस नाम की सही शुरुआत कैसे हुई, यह पूरी तरह साफ नहीं है। आज रोबोट्स में भी यही विचार काम करता है।

सैटेलाइट नेविगेशन कितना सटीक हो सकता है?

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

क्या कलमन फ़िल्टर को GPS की ज़रूरत होती ही है?

नहीं। यह किसी भी प्रेडिक्शन को किसी भी माप (measurement) के साथ मिला सकता है: पहियों की गिनती को कैमरे के साथ, IMU को बैरोमीटर के साथ, वगैरह। GPS तो बस सबसे आम उदाहरण है।

अगर GPS रीडिंग बहुत ज़्यादा गलत हो जाए तो क्या होगा?

एक भी बेहद गलत रीडिंग पूरे अंदाज़े को भटका सकती है। अच्छे सिस्टम हर रीडिंग को प्रेडिक्शन से मिलाते हैं और जो बहुत ज़्यादा अलग होती हैं, उन्हें छोड़ देते हैं। इसे आउटलायर रिजेक्शन (outlier rejection) या गेटिंग (gating) कहा जाता है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें