एक मिनी रोबोट बनाएंशुरुआतीपाठ 2657 मिनट का पाठ

सेंसर: रोबोट दुनिया को कैसे महसूस करता है

लाइन सेंसर अंधेरे और उजाले को देखते हैं, अल्ट्रासोनिक सेंसर आवाज़ से दूरी नापते हैं, और हर सेंसर में थोड़ा-बहुत नॉइज़ होता है। जानें कि वास्तव में हर सेंसर आपको क्या बताता है।

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

60 सेकंड में

सेंसर: रोबोट दुनिया को कैसे महसूस करता है

लाइन सेंसर अंधेरे और उजाले को देखते हैं, अल्ट्रासोनिक सेंसर आवाज़ से दूरी नापते हैं, और हर सेंसर में थोड़ा-बहुत नॉइज़ होता है। जानें कि वास्तव में हर सेंसर आपको क्या बताता है।

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

इंफ्रारेड (IR) लाइन सेंसर

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

अल्ट्रासोनिक दूरी सेंसर

एक आम अल्ट्रासोनिक सेंसर, HC-SR04, में दो गोल "आँखें" होती हैं: एक आवाज़ का एक छोटा सा ऐसा झटका भेजती है जो हमारी सुनने की क्षमता से बहुत ऊँची होती है, और दूसरी उसकी गूँज (इको) सुनती है। बोर्ड नापता है कि गूँज को लौटने में कितना समय लगा। कमरे के तापमान पर हवा में आवाज़ लगभग 343 मीटर प्रति सेकंड की रफ़्तार से चलती है, जो लगभग 0.0343 सेमी प्रति माइक्रोसेकंड है। आवाज़ वहाँ जाती है और वापस आती है, इसलिए:
Python: from echo time to distancepython
SPEED_OF_SOUND = 0.0343          # cm per microsecond, in air at about 20 °C

def echo_to_cm(echo_microseconds):
    return echo_microseconds * SPEED_OF_SOUND / 2   # divide by 2: there and back

for us in [580, 1166, 2915, 5830]:
    print(f"echo took {us:5} microseconds  ->  about {echo_to_cm(us):5.1f} cm")
  • यह एक पतली रेखा में नहीं, बल्कि एक शंकु (cone) के आकार में देखता है। हमारा वर्चुअल सेंसर तीन किरणों के ज़रिए इसी की नकल करता है।
  • मुलायम चीज़ें (कपड़ा, सोफ़ा) आवाज़ को सोख लेती हैं और हो सकता है कोई गूँज वापस न आए। एक तीखे कोण पर बनी दीवार आवाज़ को दूसरी तरफ़ उछाल सकती है, जिससे सेंसर को कुछ भी "दिखाई" नहीं देता।
  • बहुत पास की चीज़ें, जो कुछ सेंटीमीटर से भी ज़्यादा करीब हों, अक्सर सही ढंग से नहीं नापी जाती हैं।

हर सेंसर में नॉइज़ होता है

असली रीडिंग ऊपर-नीचे होती रहती हैं। एक स्थिर दीवार की तरफ़ मुँह किए हुए दूरी सेंसर की रीडिंग 40, 41, 39, 40 हो सकती है, और फिर अचानक 250, क्योंकि एक गूँज छूट गई। अगर आपका रोबोट उस एक ग़लत संख्या पर भरोसा कर ले, तो वह तेज़ी से दीवार से टकरा सकता है। इसका एक आसान उपाय यह है कि पिछली कुछ रीडिंग को सँभाल कर रखें और मीडियन (median) (क्रम में लगाने पर बीच का मान) का इस्तेमाल करें। एक अजीब रीडिंग मीडियन को ज़्यादा नहीं बदल सकती।
Python: a median filter removes a wild readingpython
import numpy as np

rng = np.random.default_rng(7)
true_cm = np.linspace(80, 20, 30)                  # robot drives towards a wall
readings = true_cm + rng.normal(0, 1.5, 30)        # small noise
readings[[9, 20]] = [250, 3]                       # two wild readings (missed echo, glitch)

def median3(values, i):
    return float(np.median(values[max(0, i - 2): i + 1]))

for i in range(6, 24, 2):
    print(f"true {true_cm[i]:5.1f}   raw {readings[i]:6.1f}   median of last 3 {median3(readings, i):6.1f}")
सेंसरयह आपको क्या बताता हैआम समस्या
IR लाइन सेंसरक्या मेरे नीचे का फ़र्श अंधेरा है या हल्का?सूरज की रोशनी, चमकदार फ़र्श, ग़लत ऊँचाई या थ्रेशोल्ड
अल्ट्रासोनिक (HC-SR04)सामने सबसे नज़दीकी चीज़ लगभग कितनी दूर है?मुलायम या तिरछी सतहें, बहुत नज़दीक की चीज़ें, छूटी हुई गूँज
व्हील एन्कोडरहर पहिया कितना घूमा है?पहिया फिसलने का मतलब है कि रोबोट वास्तव में उतनी दूर नहीं गया
बंप स्विचक्या मैंने किसी चीज़ को छुआ?केवल छूने के बाद ही बताता है
सावधान रहें
अगर कोई सेंसर खामोश है, तो इसका मतलब यह नहीं कि "वहाँ कुछ नहीं है"। कई अल्ट्रासोनिक कोड गूँज न लौटने पर 0 या एक बहुत बड़ी संख्या देते हैं। सोच-समझकर तय करें कि तब आपके रोबोट को क्या करना चाहिए। एक सतर्क रोबोट अनिश्चित होने पर धीमा हो जाता है।
इसे आज़माएँ। मीडियन वाले कोड में, इंडेक्स 20 पर मौजूद अजीब रीडिंग को बदलकर 150 कर दें। क्या मीडियन अभी भी इसे छिपा लेता है? अगर एक के बाद एक दो अजीब रीडिंग आ जाएँ तो क्या होगा?

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

लैब

एक decide फ़ंक्शन जो दूरी सेंसर का इस्तेमाल करके किसी भी शुरुआती बिंदु से दीवार से 10–30 सेमी पहले धीमा हो जाए और रुक जाए।

~20 min

समस्या

यह आपके ब्राउज़र में चलता है। रोबोट कमरे के दाईं ओर एक दीवार का सामना करता है। s["distance"] रोबोट के बीच से आगे की सबसे नज़दीकी चीज़ तक की दूरी सेमी में है (अधिकतम 100)।

  1. स्टार्टर कोड चलाएँ। रोबोट दीवार से टकरा जाता है।
  2. decide को बदलें ताकि रोबोट आगे बढ़े, दीवार पास आने पर धीमा हो जाए, और दीवार से 10–30 सेमी की दूरी पर उसका मध्य भाग रुक जाए।
  3. इसे अलग-अलग शुरुआती बिंदुओं से काम करना चाहिए, इसलिए सेंसर का इस्तेमाल करें, न कि स्टेप्स की गिनती का। यह जाँच एक ऐसे शुरुआती बिंदु को भी आज़माती है जिसे आप देख नहीं सकते।
  4. सुझाव: एक सहज नियम है speed = (distance − 20) / 40, जिसे np.clip के साथ 0 और 1 के बीच रखा जाए। एक वाक्य में समझाएँ कि एक असली रोबोट पर अचानक रुकने की तुलना में धीमा होना क्यों ज़्यादा सुरक्षित है।

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

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

आउटपुट

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

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

कठिन सवाल

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

Q1सिम्युलेटर में आपका रोबोट 20 सेमी पर रुकता है। असली रोबोट पर यह दीवार से टकरा जाता है। इसके दो संभावित कारण बताइए।दिखाएं

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

Q2सिर्फ़ एक अल्ट्रासोनिक सेंसर का इस्तेमाल करने वाला रोबोट फिर भी कुर्सी की टांग से क्यों टकरा सकता है?दिखाएं

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

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

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

मेरा IR सेंसर घर पर काम करता है लेकिन स्कूल में क्यों नहीं?

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

क्या अल्ट्रासोनिक सेंसर किसी पतली छड़ी या कुर्सी की टांग को देख सकता है?

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

क्या मीडियन हमेशा ऐवरेज से बेहतर होता है?

कभी-कभार आने वाली अजीब रीडिंग के लिए, हाँ, यह आमतौर पर बेहतर होता है। लेकिन पिछली कुछ रीडिंग का मीडियन असली बदलावों पर थोड़ा देर से प्रतिक्रिया देता है। एक छोटी विंडो का इस्तेमाल करें, जैसे 3 या 5 रीडिंग, ताकि रोबोट समय रहते प्रतिक्रिया दे सके।

क्या तापमान अल्ट्रासोनिक रीडिंग को बदलता है?

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

पाठ का टेस्ट

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

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