Show HN: GPS रिसीवर बनाने का प्रोजेक्ट
(axleos.com)- gypsum एक ऐसा प्रोजेक्ट है जिसमें GPS signal को शुरुआत से decode करके location प्राप्त करने वाला receiver बनाया जा रहा है, और 4-भागों की श्रृंखला का भाग 1 noise के नीचे दबे satellite signal को खोजने पर केंद्रित है
- GPS लगभग 30 satellites द्वारा पूरी पृथ्वी पर भेजा जाने वाला broadcast signal है, इसलिए satellite यह नहीं जान सकता कि कौन सुन रहा है और कोई data center उपयोगकर्ता की radio reception की जगह नहीं ले सकता
- ज़मीन पर एंटेना तक पहुँचने वाला GPS signal आसपास के noise से 100,000 गुना कम power का हो सकता है, और सामान्य cellular signal से 10 करोड़ गुना कमजोर होता है, इसलिए यह सीधे लगभग दिखाई नहीं देता
- receiver, satellite और receiver दोनों को ज्ञात C/A code की बार-बार तुलना करके random noise का औसत निकाल देता है और 1Mbps PRN code के ऊपर मौजूद 50bps data signal को खोजता है
- acquisition एक computation-intensive चरण है जिसमें हर satellite के PRN, ±5kHz Doppler shift, और code phase को साथ में खोजकर दिख रहे satellites तथा लगभग time delay और relative velocity का पता लगाया जाता है
GPS signal को सीधे सुनने का प्रोजेक्ट
- gypsum एक GPS receiver को शुरुआत से बनाने का प्रोजेक्ट है
- 4-भागों की यह श्रृंखला GPS signal को decode करके location प्राप्त करने की प्रक्रिया को कवर करती है, और भाग 1 signal खोजने और satellite acquisition के चरण पर केंद्रित है
- GPS में लगभग 30 satellites पूरी पृथ्वी पर signal भेजते हैं, और यह signal ऊँचाई या मौसम की परवाह किए बिना हमेशा आसपास मौजूद रहता है
- GPS की शुरुआत 1978 में हुई थी, और लेख लिखे जाने के समय इसे 45 वर्ष हो चुके थे
शांत beacon और server से replace न की जा सकने वाली location computation
- GPS satellite signal transmit होते समय लगभग घरेलू bulb जितनी शक्ति का होता है, लेकिन ज़मीन तक पहुँचते-पहुँचते बेहद कमजोर हो जाता है
- GPS लगभग send-and-forget तरीके से काम करता है, इसलिए satellite यह नहीं जान सकता कि कौन सुन रहा है
- FM radio और broadcast TV में भी यही विशेषता होती है
- इसी संरचना के कारण GPS access पर सीधे शुल्क लगाना मुश्किल है
- location computation को किसी web service द्वारा प्रोसेस करके वापस भेजने वाली संरचना से GPS मेल नहीं खाता
- GPS के लिए उपयोगकर्ता की जगह तक पहुँची radio waves को सीधे सुनना पड़ता है
- data center उपयोगकर्ता की location पर पहुँचने वाली radio waves को उसकी जगह नहीं सुन सकता
SDR से GPS frequency खोजना
- GPS signal को software से receive और post-process करने के लिए एक tunable RF receiver चाहिए, और यही उपकरण software-defined radio(SDR) है
- spectrum खोजने के लिए SDR++ का उपयोग किया गया
- SDR का उपयोग करते समय कुछ अवधारणाएँ समझनी पड़ती हैं
- bias tee: SDR की internal circuitry, SMA से जुड़ी antenna को DC power देती है। उपयोग किया गया SDR डिफ़ॉल्ट रूप से बंद था, इसलिए इसे manually चालू करना पड़ा
- automatic gain control(AGC): यह hardware circuit या software feature है जो कमजोर signal को amplify करके received data का signal-to-noise ratio(SNR) बेहतर करने की कोशिश करता है
- IQ samples: I का अर्थ in-phase और Q का अर्थ quadrature या imaginary component है, जिससे time, amplitude और polarity के दृष्टिकोण से processing संभव होती है
- SDR में tuned center frequency पर एक बड़ा spike दिखाई देता है
- शुरुआती उपयोगकर्ता को लग सकता है कि हर जगह कोई मजबूत signal मौजूद है
- center frequency से थोड़ा हटकर tune करने या software की IQ correction का उपयोग करने से इस spike को कम किया जा सकता है
noise के नीचे दबे signal को खोजने का तरीका
- ground antenna पर GPS signal आसपास की energy और signal की तुलना में 100,000 गुना कम power के साथ पहुँचता है
- GPS signal thermal noise floor से अधिकतम 50dB नीचे हो सकता है
- आधुनिक GPS satellites ऐसे signal भेजते हैं जो receiver तक लगभग -130dBm स्तर पर पहुँचते हैं
- C/A bandwidth में सामान्य residential environment का thermal noise floor लगभग -110dBm होता है
- तुलना के लिए cellular signal लगभग -50dBm होता है, यानी GPS signal से 10 करोड़ गुना अधिक शक्तिशाली
- GPS इस तरह noise के नीचे दबे signal को पहचानने और decode करने के लिए spread-spectrum तकनीक का उपयोग करता है
C/A code और PRN से अदृश्य signal को सुनना
- GPS satellites, receiver को अज्ञात data के साथ ऐसा signal भी भेजते हैं जिसे satellite और receiver दोनों जानते हैं
- इस signal को C/A code, PRN code, या chipping code कहा जाता है, और यह satellite द्वारा प्रति सेकंड 1,000 बार दोहराया जाता है
- C/A का अर्थ coarse acquisition है
- मूल रूप से military उपयोग के लिए कल्पित GPS में C/A code, अधिक सटीक P code पर lock होने से पहले का low-resolution चरण था
- आज C/A code अधिकांश civilian GPS की नींव है, जबकि P code अब भी केवल military उपयोग के लिए उपलब्ध है
- civilian receiver, P code का उपयोग नहीं कर सकते क्योंकि उन्हें chipping sequence के मान ज्ञात नहीं होते
- यदि P code का generation formula सार्वजनिक हो, तो उस पर भी C/A code जैसी तकनीक से lock किया जा सकता है
- P code अधिक सटीक इसलिए है क्योंकि यह अधिक ऊँचे chipping rate पर चलता है
- receiver अपेक्षित PRN और वास्तविक received signal की बार-बार summation और comparison करता है
- random noise समय के साथ औसतन 0 की ओर चला जाता है
- PRN signal लगातार accumulate होकर बड़ा होता जाता है
- GPS कई satellites को एक साथ संभालने के लिए code-division multiple access(CDMA) का उपयोग करता है
- वास्तविक data signal, PRN code में मिलाकर transmit किया जाता है
- PRN code 1Mbps पर चलता है
- data signal काफी धीमे 50bps पर भेजा जाता है
- कम data rate के कारण PRN code अपेक्षाकृत लंबे समय तक एक स्थिर reference signal बना रहता है
हर satellite के लिए C/A code बनाना
- चूँकि satellites कई हैं, receiver को यह जानना होता है कि कौन-से satellites दिखाई दे रहे हैं
- हर GPS satellite का अपना विशिष्ट और स्थिर PRN code होता है
- यह code civilian GPS specification IS-GPS-200L के
Table 3-I (Code Phase Assignments)में परिभाषित है - ऑनलाइन PRN code generation method समझाने वाले संसाधन बहुत हैं, लेकिन पूरे PRN code का मिलान करके पुनरुत्पादन दिखाने वाली सामग्री अपेक्षाकृत कम मिली
acquisition चरण: दिखाई देने वाले satellites खोजना
- GPS receiver आकाश में दिखाई देने वाले satellites को खोजने के लिए हर satellite द्वारा भेजे जाने वाले PRN की copy बनाता है और antenna से एकत्र किए गए data में उस PRN को ढूँढता है
- यही चरण acquisition कहलाता है, और इसका लक्ष्य उपयोगकर्ता के ऊपर मौजूद satellites पर lock होना है
- receiver लगभग 1 second का छोटा antenna data snapshot लेता है और हर replicated PRN के साथ correlation की गणना करता है
- यदि replicated PRN और वास्तविक data के बीच मजबूत correlation हो, तो यह पता चलता है that उस PRN वाला satellite ऊपर से signal भेज रहा है
- वास्तविक received signal आदर्श PRN जैसा नहीं होता
- GPS signal पृथ्वी के atmosphere से गुजरते समय कमजोर हो जाता है
- satellite तेज़ी से चल रहा होता है, इसलिए received signal Doppler-shifted होता है
- GPS satellite की orbital velocity अच्छी तरह ज्ञात है, इसलिए अपेक्षित Doppler shift की सीमा भी तय है
- पास आते satellite में अधिकतम +5kHz frequency increase हो सकती है
- दूर जाते satellite में -5kHz frequency decrease हो सकती है
- receiver जिस समय reception शुरू करता है वह arbitrary होता है, इसलिए PRN transmission के बीच से भी सुनना शुरू हो सकता है
- acquisition चरण में तीन axes पर एक साथ खोज की जाती है
- हर satellite का PRN code
- अपेक्षित Doppler shift range
- received PRN से match कराने के लिए replicated PRN को shift करने वाला phase
- computation बहुत अधिक होती है, लेकिन सही parameters मिलते ही correlation spike साफ़ दिखाई देता है
implementation तरीका और भाग 1 का परिणाम
- implementation में हर PRN को time domain से frequency domain में बदला जाता है, और incoming satellite data की frequency को हर PRN code के spectrum के साथ correlate किया जाता है
- यह तरीका frequency-domain cross correlation के अंतर्गत आता है
- time domain का phase offset frequency components के shift में बदल जाता है, इसलिए Doppler shift search और phase search को एक ही computation में संभाला जा सकता है
- Doppler shift को हर visible satellite के लिए उस मान की ओर converge कराया जाता है जहाँ सबसे मजबूत correlation spike मिलता है, और इसके लिए binary search जैसी पद्धति अपनाई जाती है
- भाग 1 के परिणामस्वरूप यह निर्धारित किया जाता है कि वर्तमान में उपयोगकर्ता के ऊपर कौन-से GPS satellites हैं, और हर satellite के लिए लगभग phase/time delay तथा Doppler shift/relative velocity प्राप्त होती है
- अगला चरण Part 2: Tracking Pinpricks में जारी है
1 टिप्पणियां
Hacker News राय
GPS के लिए पर्याप्त तेज़ direct RF sampling या direct RF conversion receiver मिल सकते हैं। उदाहरण: Xilinx RFSoc https://www.mouser.com/datasheet/2/903/ds889_zynq_usp_rfsoc_..., National Instruments लेख https://www.ni.com/en/solutions/aerospace-defense/radar-elec..., संबंधित off-the-shelf hardware https://www.ni.com/en-us/shop/category/flexrio-custom-instru...
यह थोड़ा अजीब है कि NI direct RF conversion को cost-effective मानता है, फिर भी equipment 30,000 डॉलर में बेचता है। लेकिन अगर आप 3GHz के आसपास phase-coherent broadband reception का prototype बना रहे हैं और आपके पास ढंग की lab और budget है, तो कुछ units खरीदना समझ में आता है। Mass production के लिए शायद मैं अपने बनाए board की cost और घटने का इंतज़ार करूँगा, या देखूँगा कि पारंपरिक heterodyne receiver से काम चल सकता है या नहीं
अगर military use में आपको advanced RF tracking weapons की चिंता है, तो direct conversion receiver अच्छा हो सकता है, क्योंकि इसमें ऐसा local oscillator leakage नहीं होता जिसे दुश्मन का equipment detect कर सके
“from scratch” expression देखकर यह जानने की उत्सुकता होती है कि सच में कितने नीचे से शुरू किया गया है, और hardware RTL-SDR देखकर थोड़ी निराशा हुई। फिर भी protocol decoding बेहद दिलचस्प है और result भी शानदार है
GPS 1978 में शुरू हुआ था, लेकिन 2000 तक “selective availability” नाम के तरीके से signal को जानबूझकर degrade किया जाता था। इस वजह से कई use cases में GPS व्यावहारिक रूप से बेकार था, road navigation के लिए तो निश्चित रूप से अनुपयुक्त था, और remote-area exploration या marine navigation में सीमित रूप से उपयोगी था
gypsum का antenna signal को एक मिनट से भी कम सुनकर cold start से position और accurate time तक lock कर लेना बहुत impressive है, और आज के commercial receivers से भी बेहतर लगता है। 2000 के शुरुआती दशक में car trips के दौरान GPS receiver को position fix करने के लिए निकलने से पहले सड़क किनारे 15–20 मिनट इंतज़ार करना पड़ता था, और अगर fix न मिले तो बस paper map देखकर निकल पड़ते थे
46 साल बाद भी radio layer पूरी backward और forward compatibility बनाए हुए है, और time to first fix तथा user equivalent range error जैसे key metrics protocol-incompatible बदलावों के बिना 10–1000 गुना बेहतर हुए हैं
पूरी पृथ्वी को service देने वाली कुल RF transmit power एक सामान्य अमेरिकी घर की power consumption से कम है, और 5G, TV, AM/FM radio से बहुत कम है तथा noise floor के नीचे है। यह stacked Gold codes के उपयोग के कारण संभव है
इसे Galileo जैसे competing systems के साथ frequency sharing करने योग्य भी design किया गया है, जो mobile networks में कम ही देखने को मिलता है। Modulated data और carrier की phase fixed है, जिससे carrier phase decoding जैसी चीजें संभव हुईं, और उसी से बेहतर pseudorange और accuracy मिलती है
कुल मिलाकर लगता है कि designers में ज़बरदस्त दूरदर्शिता थी, या वे बेहद lucky थे, या दोनों
यहाँ मेरा मतलब यह था कि शुरुआत ऐसे hardware से की गई जो GPS के बारे में कुछ नहीं जानता—यानी ऐसा device जो सिर्फ electromagnetic field को sample कर सकता है—और फिर receiver को उसके ऊपर बनाया गया
पुराने hardware में time to first fix धीमा होने की वजह मूल रूप से processing power की प्रगति से जुड़ी है। पारंपरिक GPS receiver को सभी satellites का ‘almanac’ download करना पड़ता था, और GPS data transmission format तथा speed के कारण सही conditions में भी इसमें कम से कम 12.5 मिनट लगते थे
आधुनिक processing power के साथ receivers, जिनमें gypsum भी शामिल है, हवा से आने वाले hints का इंतज़ार करने के बजाय search space को brute force करके दिखाई देने वाले satellites खोज सकते हैं। यही technique part 1 के अंत में बताए गए तरीके में है
1999 में मैंने Delorme Earthmate Hyperformance GPS receiver का RS-232 version एक Toughbook से जोड़ा और शायद Delorme Street Atlas USA 6.0 चलाकर car trip की थी
देश पार करते हुए उसने पर्याप्त रूप से उपयोगी directions दिए। Lane guidance नहीं थी, लेकिन हर turn से पहले road name सहित turn बता देता था
उस version में voice recognition भी था, इसलिए “अभी कितना दूर है?” जैसी बात कहने पर वह अगले waypoint और final destination तक estimated arrival time और current location बता देता था, और यह काफ़ी मज़ेदार था
selective availability के तहत सामान्य worst-case circular error probable अगर लगभग 30m हो, तो बहुत dense areas को छोड़कर road navigation के लिए यह पर्याप्त accurate है। ऐसे इलाकों में भी map एक बार देख लेना काफी था, और खुली सड़कों पर यह बेहतरीन था
पुराने GPS receivers tracking channels की संख्या को marketing point बनाते थे; सस्ते receivers में 6–8 satellites track करने लायक hardware होता था, जबकि महंगे receivers 12 track कर सकते थे
इसलिए यह software-defined receiver उन हिस्सों में से काफी कुछ implement करता है जो मूल रूप से hardware करता, और यह दिखने वाले सभी satellites को track कर सकता है
Software-defined approach के मजबूत फायदे हैं। उदाहरण के लिए, initial satellite acquisition received signal और कई Gold codes के बीच cross-correlation calculate करता है; इसे Fourier domain में process करने पर signal काफी जल्दी acquire किया जा सकता है
अगर आपको ऐसा hardcore DIY GPS रिसीवर चाहिए जो transistor level तक उतरता हो, तो https://lea.hamradio.si/~s53mv/navsats/theory.html पढ़ना मज़ेदार लगेगा। यह 1990s-style DIY GPS receiver है, जिसमें हाथ से बनाए circuit diagrams, hand-drawn PCB, और handmade antenna तक हैं
ऊपर से, 1990s के आखिर में घने शहरी माहौल में यह ideal नहीं था, लेकिन यह ऐसा क्षेत्र है जहाँ modern receivers भी अक्सर struggle करते हैं, और in-vehicle differential GPS correction भी संभव था। NYC जैसे coastal megacity population-dense इलाकों में इसका इस्तेमाल हो सकता था
पुराने car navigation systems भद्दे थे और map data भी कुल मिलाकर खराब था, लेकिन selective usability की वजह से उन्हें “बिल्कुल बेकार” कहना मुश्किल है
बेशक, यह मानता हूँ कि वे काफी खराब थे। मगर selective usability सिर्फ एक factor था, और आज की processing power और बेहतर maps होते तो selective usability वाली position error के बावजूद उसे ज्यादा आसानी से correct किया जा सकता था
updated regulations https://www.space.commerce.gov/itar-controls-on-gps-gnss-rec... की legal wording इतनी complex है कि यह समझना भी मुश्किल है कि क्या यह अब भी लागू होता है
SDR की बात करें तो, ITAR ही वह वजह भी है जिसके चलते Kraken RF team का बनाया passive radar GNU Radio module हटाया गया था
इस explanation के साथ देखने के लिए शानदार visuals वाला https://ciechanow.ski/gps/ भी मुझे पसंद है
वे interactive graphics beat करना नामुमकिन है
analysis में मदद करने और final solution implement करने वाला software बनाने की क्षमता के साथ मिलकर यह बेहतरीन project बन गया है। मैंने GPS पढ़ा है और कई सालों तक professionally इस पर काम किया है, फिर भी सब कुछ नहीं जानता। code देखने का इंतजार है
पीछे मुड़कर देखें तो लगता है कि यह सच में बहुत अच्छा किया। अब RF वाला domain मुझे बहुत ज्यादा tangible तरीके से समझ आता है और मैं उसे tool की तरह इस्तेमाल कर सकता हूँ। यह मुझे computers के उन्हीं हिस्सों की याद दिलाता है जो मुझे पसंद हैं
अगर P code generate करने का formula public हो, तो civilian GPS receivers भी C/A code जैसी ही technique से lock कर सकते होंगे
मैंने पूरा नहीं पढ़ा, लेकिन जिज्ञासा है। ज्यादा precise GPS के लिए P code chipping sequence को brute-force करने या किसी दूसरे तरीके से हासिल करने का कोई तरीका है?
अगर GPS development की कहानी में दिलचस्पी है, तो Richard Easton की “GPS Declassified” एक interesting तरीके से बताई गई किताब थी
GPS airplane mode में भी काम करता है, और literally airplane के अंदर भी। यह cellular service या Wi-Fi के बिना भी चलता है। US GPS satellite constellation को control करता है, और जरूरत पड़ने पर किसी specific region में GPS बंद कर सकता है और वास्तव में ऐसा कर चुका है। इसलिए दूसरे देशों ने अपने GNSS constellations launch किए
यह भी मज़ेदार है कि GPS satellites location नहीं भेजते, बल्कि सिर्फ time भेजते हैं। phone से मिले data के साथ यह करना सच में fun exercise है, और phone सीधे satellites से connected होता है
जोड़कर कहूँ तो, हाल ही में मैंने stars का इस्तेमाल करके navigation के basics सीखे, और यह symmetry मज़ेदार लगी कि mechanism पूरी तरह अलग है, लेकिन वह भी accurate time बनाए रखने पर बहुत depend करता है
मैंने जिन शुरुआती GPS receivers का इस्तेमाल किया, वे बिना किसी data connection के standalone devices थे, इसलिए यह obvious लगा कि GPS को data की जरूरत नहीं होती
हालांकि phones जैसे devices आम तौर पर वह data दूसरे sources से लेते हैं, क्योंकि यह GPS data transmission का इंतजार करने से बहुत तेज होता है
मेरी समझ के अनुसार किसी specific region में GPS को मनचाहे तरीके से बंद कर देने वाली capability नए GPS satellites में अब नहीं है, और शायद currently operating सभी satellites में भी न हो
iPhone इस्तेमाल करने पर लैंडिंग के बाद वे तस्वीरें शूटिंग के समय की लोकेशन से जुड़ जाती हैं। इसकी वजह से बाद में वह रोचक भू-आकृति ढूंढी जा सकती है जो संयोग से दिखी थी।
इसमें इस्तेमाल किए गए search terms और अंदरूनी monologue तक शामिल हैं। यह सिर्फ मछली पकड़ना सिखाने जैसा नहीं है, बल्कि खुद fishing machine बनाने के लिए parts कैसे जुटाते हैं, यह दिखाने जैसा है—यही मेरी सबसे पसंदीदा तरह का tutorial है।
फिर भी, आपने इस approach को अच्छा माना—इसके लिए सच में धन्यवाद।