सेंसर: रोबोट दुनिया को कैसे महसूस करता है
लाइन सेंसर अंधेरे और उजाले को देखते हैं, अल्ट्रासोनिक सेंसर आवाज़ से दूरी नापते हैं, और हर सेंसर में थोड़ा-बहुत नॉइज़ होता है। जानें कि वास्तव में हर सेंसर आपको क्या बताता है।
60 सेकंड में
सेंसर: रोबोट दुनिया को कैसे महसूस करता है
लाइन सेंसर अंधेरे और उजाले को देखते हैं, अल्ट्रासोनिक सेंसर आवाज़ से दूरी नापते हैं, और हर सेंसर में थोड़ा-बहुत नॉइज़ होता है। जानें कि वास्तव में हर सेंसर आपको क्या बताता है।
इंफ्रारेड (IR) लाइन सेंसर
- वे फ़र्श के बेहद करीब होने पर सबसे अच्छा काम करते हैं, आमतौर पर कुछ मिलीमीटर से लेकर लगभग एक सेंटीमीटर की दूरी पर। अपने मॉड्यूल की डेटाशीट देखें।
- कई मॉड्यूल्स में लाइट/डार्क की सीमा (थ्रेशोल्ड) तय करने के लिए एक छोटा पेंच (पोटेंशियोमीटर) होता है। इसे अपने असली फ़र्श पर एडजस्ट करें।
- सूरज की रोशनी में भी इंफ्रारेड लाइट होती है और यह उन्हें भ्रमित कर सकती है। उसी कमरे में टेस्ट करें जहाँ रोबोट चलेगा।
- कुछ मॉड्यूल काले रंग पर HIGH और सफ़ेद पर LOW देते हैं, जबकि कुछ इसके उलट। हमेशा पहले रीडिंग को टेस्ट करके प्रिंट कर लें।
अल्ट्रासोनिक दूरी सेंसर
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) के आकार में देखता है। हमारा वर्चुअल सेंसर तीन किरणों के ज़रिए इसी की नकल करता है।
- मुलायम चीज़ें (कपड़ा, सोफ़ा) आवाज़ को सोख लेती हैं और हो सकता है कोई गूँज वापस न आए। एक तीखे कोण पर बनी दीवार आवाज़ को दूसरी तरफ़ उछाल सकती है, जिससे सेंसर को कुछ भी "दिखाई" नहीं देता।
- बहुत पास की चीज़ें, जो कुछ सेंटीमीटर से भी ज़्यादा करीब हों, अक्सर सही ढंग से नहीं नापी जाती हैं।
हर सेंसर में नॉइज़ होता है
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) | सामने सबसे नज़दीकी चीज़ लगभग कितनी दूर है? | मुलायम या तिरछी सतहें, बहुत नज़दीक की चीज़ें, छूटी हुई गूँज |
| व्हील एन्कोडर | हर पहिया कितना घूमा है? | पहिया फिसलने का मतलब है कि रोबोट वास्तव में उतनी दूर नहीं गया |
| बंप स्विच | क्या मैंने किसी चीज़ को छुआ? | केवल छूने के बाद ही बताता है |
और देखें और पढ़ें
लैब
एक decide फ़ंक्शन जो दूरी सेंसर का इस्तेमाल करके किसी भी शुरुआती बिंदु से दीवार से 10–30 सेमी पहले धीमा हो जाए और रुक जाए।
समस्या
यह आपके ब्राउज़र में चलता है। रोबोट कमरे के दाईं ओर एक दीवार का सामना करता है। s["distance"] रोबोट के बीच से आगे की सबसे नज़दीकी चीज़ तक की दूरी सेमी में है (अधिकतम 100)।
- स्टार्टर कोड चलाएँ। रोबोट दीवार से टकरा जाता है।
decideको बदलें ताकि रोबोट आगे बढ़े, दीवार पास आने पर धीमा हो जाए, और दीवार से 10–30 सेमी की दूरी पर उसका मध्य भाग रुक जाए।- इसे अलग-अलग शुरुआती बिंदुओं से काम करना चाहिए, इसलिए सेंसर का इस्तेमाल करें, न कि स्टेप्स की गिनती का। यह जाँच एक ऐसे शुरुआती बिंदु को भी आज़माती है जिसे आप देख नहीं सकते।
- सुझाव: एक सहज नियम है speed = (distance − 20) / 40, जिसे
np.clipके साथ 0 और 1 के बीच रखा जाए। एक वाक्य में समझाएँ कि एक असली रोबोट पर अचानक रुकने की तुलना में धीमा होना क्यों ज़्यादा सुरक्षित है।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1सिम्युलेटर में आपका रोबोट 20 सेमी पर रुकता है। असली रोबोट पर यह दीवार से टकरा जाता है। इसके दो संभावित कारण बताइए।दिखाएं
पहला, एक असली रोबोट तुरंत नहीं रुकता: मोटर बंद होने के बाद भी वह थोड़ा आगे खिसकता है, चिकने फ़र्श पर या भारी बैटरी के साथ यह और ज़्यादा होता है। दूसरा, असली सेंसर कम बार रीडिंग लेता है और कोई गूँज मिस कर सकता है, जिससे कोड देर से प्रतिक्रिया दे सकता है। इसके अलावा, असली सेंसर रोबोट के बीच से नहीं, बल्कि आगे से नापता है। पहले से धीमा हों और एक सुरक्षा मार्जिन जोड़ें।
Q2सिर्फ़ एक अल्ट्रासोनिक सेंसर का इस्तेमाल करने वाला रोबोट फिर भी कुर्सी की टांग से क्यों टकरा सकता है?दिखाएं
सेंसर बिल्कुल सामने एक शंकु (cone) के आकार में देखता है, और पतली, गोल चीज़ें बहुत कम आवाज़ रिफ्लेक्ट करती हैं। मुड़ते समय कुर्सी की टांग शंकु के बाहर हो सकती है, या इतनी पतली हो सकती है कि साफ़ गूँज न दे सके। असली रोबोट कई सेंसरों को मिलाते हैं: एक बंप स्विच, साइड सेंसर या एक कैमरा।
अक्सर पूछे जाने वाले सवाल
मेरा IR सेंसर घर पर काम करता है लेकिन स्कूल में क्यों नहीं?
फ़र्श, टेप और रोशनी अलग-अलग होते हैं। चमकदार फ़र्श, खिड़की से आने वाली तेज़ धूप या कोई दूसरा टेप रीडिंग को बदल सकता है। नए फ़र्श पर थ्रेशोल्ड को एडजस्ट करें और फिर से टेस्ट करें।
क्या अल्ट्रासोनिक सेंसर किसी पतली छड़ी या कुर्सी की टांग को देख सकता है?
कभी-कभी नहीं। पतली या गोल चीज़ें बहुत कम आवाज़ वापस रिफ्लेक्ट करती हैं। उनके लिए, रोबोट में अन्य सेंसर जोड़े जाते हैं, जैसे बंप स्विच, IR दूरी सेंसर, या कैमरा।
क्या मीडियन हमेशा ऐवरेज से बेहतर होता है?
कभी-कभार आने वाली अजीब रीडिंग के लिए, हाँ, यह आमतौर पर बेहतर होता है। लेकिन पिछली कुछ रीडिंग का मीडियन असली बदलावों पर थोड़ा देर से प्रतिक्रिया देता है। एक छोटी विंडो का इस्तेमाल करें, जैसे 3 या 5 रीडिंग, ताकि रोबोट समय रहते प्रतिक्रिया दे सके।
क्या तापमान अल्ट्रासोनिक रीडिंग को बदलता है?
हाँ, थोड़ा सा। ठंडी हवा की तुलना में गर्म हवा में आवाज़ थोड़ी तेज़ चलती है। दीवारों से बचने वाले एक छोटे रोबोट के लिए आमतौर पर इस अंतर से कोई फ़र्क नहीं पड़ता; बेहद सटीक माप के लिए पड़ सकता है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।