GPS के बिना मेट्रो की लोकेशन ट्रैक करने वाला Transit ऐप
(blog.transitapp.com)- टनल के अंदर GPS·cellular·Wi‑Fi बंद हो जाने पर भी Transit का GO trip अनुमानित लोकेशन, बचे हुए स्टेशनों की संख्या और ETA दिखाता रह सकता है
- इसकी कुंजी फ़ोन के accelerometer vibration signal से यह वर्गीकृत करना है कि उपयोगकर्ता चलती ट्रेन में है या नहीं, और फिर आखिरी पुष्टि की गई लोकेशन को ट्रेन timetable के साथ मिलाकर गणना करना है
- Transit टीम ने सैकड़ों यात्राओं और कई शहरों से मैनुअली लेबल किया गया डेटा इकट्ठा किया, और New York City subway में सभी लाइनों पर सफर करते हुए ट्रेन, escalator और elevator के vibration रिकॉर्ड किए
- अंतिम लोकेशन prediction model The Mixer मौजूदा लोकेशन को 90% संभावना के साथ सही पहचानता है, और शुरुआती टेस्ट में लगभग 400,000 यात्राओं के 15 लाख underground station detections को सपोर्ट किया
- दोनों मॉडल छोटे फ़ाइलों में compress किए गए हैं और फ़ोन पर ही चलते हैं, इसलिए offline station counting संभव है, और vibration data Transit सर्वर पर भेजा नहीं जाता
भूमिगत लोकेशन पकड़ना कठिन क्यों है
- subway, metro, U-Bahn टनल के अंदर cellular service, Wi‑Fi, GPS अक्सर स्थिर रूप से काम नहीं करते
- पहले भूमिगत रहते हुए अगले स्टेशन या ETA जानने के लिए platform signboard, स्टेशन announcement या ट्रेन के अंदर digital display पर निर्भर रहना पड़ता था
- Transit ने ज़मीन के ऊपर से आर-पार जाने वाले GPS satellites बनाने के बजाय फ़ोन के vibration pattern से टनल के अंदर ट्रेन की लोकेशन का अनुमान लगाया
GO trip में क्या दिखता है
- उपयोगकर्ता को Transit में बस GO trip शुरू करना होता है
- route detail screen से इसे सीधे शुरू किया जा सकता है
- planned journey से भी इसे शुरू किया जा सकता है
- ऐप GPS coordinates न जानते हुए भी यह जानकारी दिखाता है
- मैप पर estimated location
- बचे हुए स्टेशनों की countdown
- अपडेटेड ETA
चरण 1: ट्रेन के अंदर की मूवमेंट का वर्गीकरण
- जब ट्रेन ऐसे टनल में जाती है जहाँ GPS खराब हो जाता है, तो पहले यह पता लगाना पड़ता है कि उपयोगकर्ता चलती ट्रेन में है या नहीं
- Transit के कर्मचारी Stephen ने Montreal ऑफिस जाते समय फ़ोन से accelerometer data रिकॉर्ड किया और यात्रा के हर हिस्से को लेबल किया
- जब उन्होंने चलना शुरू किया
- जब वे सीढ़ियाँ उतरने लगे
- जब वे platform पर इंतज़ार कर रहे थे
- जब ट्रेन चली और जब रुकी
- accelerometer data को Fourier transform से प्रेरित तरीके से व्यवस्थित कर frequency data में बदला गया
- चलती ट्रेन में फ़ोन लगभग 5Hz पर vibrate कर रहा था, जबकि चलते समय यह लगभग 2Hz था
- random noise और harmonic frequencies की वजह से सिर्फ साधारण pattern काफी नहीं थे, इसलिए movement type को classify करने के लिए machine learning model और बहुत सारे training data की ज़रूरत पड़ी
चरण 2: ground truth डेटा इकट्ठा करना
- Transit टीम ने सैकड़ों यात्राओं और दर्जनों शहरों से डेटा लेबल किया, ताकि ट्रेन या track के प्रकार से अलग एक generalized model बनाया जा सके जो “चलती ट्रेन” को पहचान सके
- Étienne और Elijah ने ऐप के सबसे लोकप्रिय subway systems में से एक New York City subway में vibration data इकट्ठा किया
- दोनों ने iPhone, Android और MetroCard लेकर एक हफ्ते तक MTA buses और trains में सफर किया और हर यात्रा चरण को लेबल किया
- लक्ष्य यह पता लगाना था कि ट्रेन के अंदर के vibration और स्टेशन के भीतर के दूसरे vibration में फर्क करने वाले संकेत क्या हैं
- उन्होंने escalator और elevator पर ऊपर-नीचे जाते हुए रुकने के क्षण तक annotation किया
- Bronx से Brighton Beach तक, Manhattan Bridge, Williamsburg Bridge और Canarsie Tunnel सहित New York की सभी subway lines पर सफर किया
चरण 3: movement classifier को train करना
- साफ़ और प्रोसेस किए गए sensor data के आधार पर motion classifier को “चलती ट्रेन” और “चलती ट्रेन नहीं” में फर्क करना सिखाया गया
- मॉडल बिना लेबल वाले sensor data को इनपुट के रूप में लेकर अनुमान लगाता है कि फ़ोन चलती ट्रेन, रुकी हुई ट्रेन, पैदल चलना या escalator movement में से किस स्थिति में है
- Transit ने इस अनुमान की तुलना मैनुअल annotation से बने ground truth से की और अधिक सटीक prediction के लिए logic को adjust किया
- adjustment के बाद मॉडल यह पहचानने लगा कि उपयोगकर्ता वास्तव में चलती ट्रेन में है या सिर्फ फ़ोन ही vibrate कर रहा है
चरण 4: लोकेशन prediction model The Mixer
- यह पता चल जाने के बाद कि उपयोगकर्ता चल रहा है या नहीं, अगला काम यह अनुमान लगाना है कि उसकी ट्रेन ठीक कहाँ है
- आखिरी मॉडल The Mixer नीचे दिए गए तत्वों को वज़न देकर मौजूदा लोकेशन की गणना करता है
- movement type prediction, यानी उपयोगकर्ता चलती ट्रेन में है या नहीं
- उपयोगकर्ता की आखिरी पुष्टि की गई लोकेशन
- यह कि आखिरी पुष्टि की गई लोकेशन हाल की है या पुरानी
- ट्रेन timetable
- The Mixer मौजूदा लोकेशन prediction को 90% संभावना के साथ सही पकड़ता है
- Paris RER यात्रा के उदाहरण में भूमिगत हिस्से के दौरान GPS और Bluetooth/Wi‑Fi scan से मिलने वाले बीच-बीच के लोकेशन updates आते हैं, और इन्हीं updates से बिना कनेक्टिविटी वाले हिस्सों की underground location prediction को सुधारा जाता है
- जब उपयोगकर्ता ज़मीन के ऊपर आकर cellular service वाले क्षेत्र में पहुँचता है, तो ऐप फिर से सामान्य GPS location का इस्तेमाल करता है
offline कामकाज और privacy handling
- लोकेशन prediction संभव होने पर भूमिगत रहते हुए भी उपयोगकर्ता का ETA अपडेट किया जा सकता है
- अस्थिर GPS या ट्रेन के अंदर लगे display को देखे बिना भी स्टेशन counting संभव है
- स्टेशन counting पूरी तरह offline काम करती है
- motion classifier और The Mixer छोटे फ़ाइलों में compress किए गए हैं और फ़ोन पर ही चलते हैं
- vibration data Transit सर्वर पर नहीं भेजा जाता
- कोई tracking नहीं
- कोई cookies नहीं
- vibration data उपयोगकर्ता की डिवाइस में ही रहता है
इस्तेमाल का तरीका और शुरुआती टेस्ट का पैमाना
- उपयोगकर्ता मेट्रो खोजकर Transit खोल सकता है और GO से यात्रा शुरू करके स्टेशनों को एक-एक कर countdown होते देख सकता है
- शुरुआती टेस्ट के दौरान Transit ने लगभग 400,000 यात्राओं में 15 लाख underground stations की detection को सपोर्ट किया
- GO का step-by-step navigation पहले से ही 600 से अधिक शहरों में लाखों surface commuters द्वारा इस्तेमाल किया जा रहा था
- पिछले महीने लॉन्च हुए GO Bike के बाद अब साइकिल उपयोगकर्ता भी GO का इस्तेमाल करते हैं
- इस फीचर से underground train उपयोगकर्ता खराब connectivity वाले हिस्सों में भी GO पर अधिक भरोसा कर सकते हैं
- ऐप Transit download page पर उपलब्ध है
1 टिप्पणियां
Hacker News टिप्पणियां
करीब 10 साल पहले फ्रांसीसी कंपनी snips का एक ब्लॉग पोस्ट पढ़ा था, जिसमें ऐप air pressure sensor से यह detect करता था कि ट्रेन कब स्टेशन में आ रही है या निकल रही है
जब ट्रेन स्टेशनों के बीच tunnel में प्रवेश करती या उससे बाहर निकलती है, तो air pressure में अचानक बढ़ोतरी/कमी होती है, जिससे काफी साफ signal मिलता है, ऐसा कहा गया था
मिल गया: https://medium.com/snips-ai/underground-location-tracking-3e...
ये tubes pressure spike detect करके जान सकते हैं कि दरवाजा किसी का हाथ फंसाने वाला है या नहीं, और tunnel में प्रवेश करते समय pressure difference से होने वाले “bang” effect को कम करने में भी इस्तेमाल होते हैं
हर phone में air pressure sensor नहीं होता, और model के हिसाब से measurement quality में भी बड़ा फर्क होता है. उदाहरण के लिए, कुछ devices में phone को बस कसकर पकड़ने से ही values उछल जाती थीं
Transit के पास air pressure sensor reading की permission भी नहीं है, और हमारे use case के लिए वह permission मांगना justify करना मुश्किल था
हालांकि accuracy शायद इस पर निर्भर करती थी कि power grid में current DC है या AC, और यहां तक कि coach की उम्र पर भी
Building पूरी हो गई थी लेकिन operate नहीं हो रही थी, इसलिए करीब 10 साल तक local railway company को trains को building के अंदर-बाहर चलाना पड़ा
वाकई कमाल है
अभी मैं असल में एक project कर रहा हूं जिसमें London Underground के मेरे नीचे से गुजरने की sound recording की जा रही है
हमारे नीचे से गुजरने वाली Northern Line बहुत साफ सुनाई देती है, और गहराई 30m से भी कम है
High-quality low-frequency recording से train के गुजरने की आवाज पकड़ने को लेकर मैं जुनूनी हो गया हूं. पता नहीं क्यों, लेकिन यह बात दिमाग से निकलती ही नहीं
मसलन, tunnel northbound/southbound दो हैं, तो सोचता हूं कि क्या वास्तविक TfL data से correlate करके हर एक की sound signature अलग की जा सकती है
और भी रोचक यह है कि क्या service बंद होने के बाद हमारे नीचे चलने वाली maintenance vehicles को “पकड़ा” जा सकता है
मुझे नहीं पता इस project से और क्या किया जा सकता है, लेकिन अपने नीचे चलती किसी आधी-अदृश्य जीव जैसी चीज की आवाज capture करने का विचार मुझे पूरी तरह जकड़े हुए है
मुझे stationary रोजमर्रा की चीजों से निकलने वाली बेहद कमजोर high-frequency vibrations में दिलचस्पी है, शायद लक्ष्य लगभग उल्टा है. sensors जुटाने में अभी खास progress नहीं हुई है
Laser Doppler vibrometer लेना चाहता हूं, लेकिन कीमत महंगी है
किसने किया था, यह खोजूंगा
[0] https://lamont.columbia.edu/
पता नहीं वह sidewalk emergency exit से बची हुई आवाज थी, या जमीन किसी घंटी की तरह गूंज रही थी
मैं यह भी थोड़ा acknowledge करना चाहता हूं कि article का conversational tone वाकई अच्छा था
frequency chart जैसी काफी detailed explanation में जाने पर भी पढ़ना मजेदार था. मैंने English version पढ़ा
लिखने वाले ने सच में बेहतरीन काम किया
Transit App एक gem जैसी app है
“classifier” सुनकर अपनापन सा लगा. पूरी post लिखते हुए AI शब्द एक बार भी नहीं निकाला, यह impressive है
कुछ cities tunnels में BLE beacons लगाती हैं, जो location broadcast करते हैं, और सबसे strong beacon signal से current location पता लगाई जाती है
Hardware लगाए बिना यह पता लगाने का तरीका है, इसलिए अच्छा लगता है
हां, fairness में कहें तो वे screens हास्यास्पद रूप से अक्सर गलत होती हैं, और “अपना सामान न भूलें” जैसे बेकार messages loop में दिखाती रहती हैं, इसलिए desired जानकारी देखने के लिए करीब 20 seconds इंतजार करना पड़ता है. Train के अंदर यह घातक रूप से खराब है
Stations के बीच progress शायद हर track segment की acceleration signature detect करके बेहतर track की जा सकती है
खासकर अगर track पूरी तरह सीधा और flat न हो, और यह GPS से पहले की शुरुआती in-car navigation जैसी लगती है. उस समय dead reckoning इस्तेमाल होता था, और measured path के shape को map data से match करके drift correct किया जाता था
ज्यादा reliable तरीका accelerometer से track features पहचानना हो सकता है. जैसे slope, turns, bumps, या इनका combination
Turn पर sound, tunnel merge sections में background बदलने जैसी चीजें भी इस्तेमाल हो सकती हैं. Integrated acceleration train speed देती है, इसलिए दूसरे inputs के साथ useful है
Signature collect करना शानदार होगा, लेकिन cities और phones की wide coverage के लिए यह बहुत बड़ा काम है. Google या Apple जैसी companies के पास data और capability हो सकती है, छोटी company के लिए संभावना कम है
Wheel RPM से जुड़ी एक बहुत distinctive humming होती है. पहले मैंने SFT, peak detection, Kalman filtering से एक crude speedometer बनाया था
Transit यूज़र के तौर पर, ऐसी शानदार ऐप बनाने के लिए धन्यवाद; यह हमेशा सबसे बड़ी परेशानियों में से एक रही है
सिर्फ Transit ही नहीं, public transport navigation सपोर्ट करने वाली किसी भी ऐप में यही हाल था, और Apple Maps भी अपवाद नहीं है
मुझे लगा था कि कोई न कोई इस पर काम कर रहा होगा, लेकिन design में लगी सोच और detail का स्तर पढ़कर वाकई अच्छा लगा। यह बहुत बड़ा effort था
Transit टीम को public transport apps की छोटी लेकिन बड़ी शिकायतों में से एक को हल करने पर गर्व होना चाहिए
वाकई शानदार। BART में अक्सर सफर करते हुए, मैं हमेशा सोचता था कि tunnel की हर location पर अलग-अलग चीखती/घिसटती आवाज़ के आधार पर position classifier बनाना मज़ेदार होगा
लेकिन accelerometer data इस्तेमाल करना शायद कहीं ज़्यादा practical होगा
train के चलने की आवाज़ रिकॉर्ड करके movement समझी जा सकती है, लेकिन user को शक होगा कि app उसकी बातें सुन रही है
machine learning के साथ accelerometer और gyroscope से dead reckoning करने पर क्या यह और बेहतर नहीं हो जाएगा?
चलती train के अंदर movement को ज्ञात tunnel route के साथ constrained रखा जाए, और train शुरू होने का पता लगते ही यह constraint लगाया जाए कि user train stop rectangle के अंदर है
या फिर extra जानकारी के बावजूद smartphone hardware बहुत inaccurate है?
सिर्फ gyroscope छोटी movements में बहुत अच्छा काम करता है, लेकिन लंबी और हल्की curves में लगभग बेकार हो जाता है। MEMS gyroscope कुछ दर्जन seconds में काफ़ी drift करता है
magnetometer और accelerometer से sensor fusion कर सकें तो समस्या कम होती है, लेकिन तेज़ train में acceleration/deceleration और curves पर लगने वाली forces की वजह से “नीचे” दिशा ढूँढना मुश्किल हो जाता है। subway tunnel में compass कितना अच्छा काम करेगा, यह भी पता नहीं
मैंने aircraft में “artificial horizon” app इस्तेमाल की है; वहाँ accelerometer “नीचे” ढूँढने में पूरी तरह बेकार था। कुछ G वाली एक maneuver के बाद horizon को pitch angle का कोई अंदाज़ा नहीं रहता। magnetic environment noisy हो और GPS भी बंद हो, तो यह भी नहीं पता चलता कि आप किस ओर जा रहे हैं
बस dead reckoning आम तौर पर बहुत inaccurate होती है, इसलिए अगर यह पहचान लिया जाए कि आप train में हैं, तो train कहाँ है यह ठीक-ठीक पता चल सकता है और accuracy बहुत बढ़ सकती है
हर बार train रुकने पर अगर user पर्याप्त देर तक स्थिर खड़ा या बैठा रहे तो IMU bias calibrate किया जा सकता है, लेकिन फिर भी dead reckoning काफ़ी drift करेगी
historical record के मुकाबले current speed estimate करके arrival time predict किया जा सकता है। इसलिए acceleration से ज़्यादा speed पर focus करना बेहतर है
पिछले हफ्ते New York subway में यह feature इस्तेमाल किया। मुझे नहीं पता था कि यह नया feature है
idea अच्छा है, लेकिन मेरे लिए यह काम नहीं किया; app ने दिखाया कि train असल location से कई stations पीछे है