डेवलपमेंट डायरी / RideMeter-Simple GPS Computer

RideMeter डेवलपमेंट जर्नल: एक साधारण जीपीएस साइक्लिंग कंप्यूटर

फोल्डिंग बाइक के साथ सैर से लेकर फोन-आधारित साइक्लिंग कंप्यूटर तक: RideMeter की ऑटो-पॉज़, राइड रिकॉर्डिंग, मैपकिट नेविगेशन और समन्वय-रूपांतरण चुनौतियाँ।

वाइब कोडिंग की खोज के बाद आईओएस ऐप पर यह मेरा पहला प्रयास था। मेरा पिछला प्रोग्रामिंग कार्य हमारी चीन यात्रा से एक वर्ष से भी पहले का था। उस समय, मैंने मुख्य रूप से वे चीजें लिखीं जिनकी मुझे काम के लिए आवश्यकता थी, आमतौर पर उपयोगकर्ता स्क्रिप्ट और क्रोम एक्सटेंशन।

यूजरस्क्रिप्ट क्या है?

यूजरस्क्रिप्ट एक छोटा प्रोग्राम है जो किसी मौजूदा वेब पेज को संशोधित करने या बढ़ाने के लिए आपके ब्राउज़र में चलता है। यह एक ब्राउज़र एक्सटेंशन के समान है, लेकिन आमतौर पर हल्का है, प्रत्येक स्क्रिप्ट एक विशिष्ट समस्या का समाधान करती है। एक उपयोक्तास्क्रिप्ट विज्ञापनों को हटा सकती है, पेज लेआउट को समायोजित कर सकती है, डाउनलोड बटन जोड़ सकती है, फॉर्म भर सकती है, या यहां तक ​​कि वेबसाइट को ऐसी सुविधाएं भी दे सकती है जो मूल रूप से इसमें नहीं थीं। चीनी उपनाम "यूहोउ" आमतौर पर टैम्परमॉन्की ब्राउज़र एक्सटेंशन को संदर्भित करता है। टैम्परमॉन्की इंस्टॉल करें, फिर एक स्क्रिप्ट इंस्टॉल करें, और जब आप संबंधित वेबसाइट पर जाते हैं तो स्क्रिप्ट स्वचालित रूप से चलने लगती है। दूसरे शब्दों में, वेबसाइट मूल पृष्ठ प्रदान करती है, और उपयोगकर्तास्क्रिप्ट इसे आपके ब्राउज़र के अंदर अनुकूलित करती है।

यह विचार कहां से आया

मेरे पहले iOS ऐप पर वापस जाएँ:

चीन की अपनी यात्रा से हांगझू लौटने के बाद, यांग और मैं कभी-कभी साइकिल चलाने जाते थे। मैंने अपनी बनाई हुई सड़क बाइक को 15,000 आरएमबी में बेच दिया और यांग को एक चीनी निर्मित ब्रॉम्पटन-शैली की फोल्डिंग बाइक खरीदी। मेरी दाहोन फोल्डिंग बाइक के साथ, दोनों कार की डिक्की में आसानी से फिट हो जाते हैं, इसलिए हम एक आरामदायक सवारी के लिए कहीं भी जा सकते हैं। इससे पहले, मैं उस तरह का साइकिल चालक था जो यात्रा के दौरान भी 30 किमी/घंटा बनाए रखना चाहता था और साइकिलिंग कंप्यूटर के बिना खुद को खोया हुआ महसूस करता था। मैंने स्ट्रावा के लिए भी भुगतान किया, जो बहुत महंगा था।

मेरे जैसे सवारों के पास आमतौर पर बाइक पर एक साइक्लिंग कंप्यूटर होता है, कभी-कभी प्रत्येक बाइक के लिए एक अलग कंप्यूटर होता है। लेकिन यह हमेशा आपके साथ नहीं होता है: शायद आप साझा बाइक चला रहे हों, या बस घर पर कंप्यूटर छोड़ गए हों। मैं चार्ज करने के लिए अपना सामान घर ले जाता हूं और आमतौर पर पार्किंग के समय इसे अलग कर देता हूं ताकि यह चोरी न हो जाए। उन क्षणों में, एक फ़ोन उसकी जगह ले सकता है।

RideMeter के पीछे साइक्लिंग सेटअप
RideMeter के पीछे साइक्लिंग सेटअप

एक साइक्लिंग कंप्यूटर एक सामान्य नेविगेशन ऐप से कई महत्वपूर्ण तरीकों से भिन्न होता है:

  1. नेविगेशन में साइकिलिंग मार्गों का उपयोग करना चाहिए। अमैप भी ऐसा कर सकता है.

  2. जब आप रुकें तो टाइमर रुक जाना चाहिए। अधिकांश नेविगेशन ऐप्स ऐसा नहीं करते हैं, और आकस्मिक सवारों को इसकी आवश्यकता नहीं हो सकती है, लेकिन प्रशिक्षण और प्रतिस्पर्धी सवारी के लिए यह मायने रखता है। यदि स्थिर समय मायने रखता है, तो यह आपकी औसत गति को कम कर देता है और यह आकलन करना कठिन बना देता है कि आपने उस अनुभाग में कैसे सवारी की।

  3. रिकॉर्डिंग के लिए गति सीमा समायोज्य होनी चाहिए, उदाहरण के लिए 5 किमी/घंटा या 10 किमी/घंटा से ऊपर की गिनती शुरू करने के लिए। प्रभावशाली स्ट्रावा आँकड़ों का पीछा करने वाले कुछ लोग उस सीमा को बहुत अधिक, 15 या 20 किमी/घंटा पर निर्धारित करते हैं। 15 किमी/घंटा की सीमा के साथ, धीमे सेक्शन और ट्रैफिक लाइट पर समय रिकॉर्ड किए गए प्रदर्शन को कम नहीं करता है।

RideMeter का परिचय

RideMeter
RideMeter

इसलिए मेरा अभ्यास प्रोजेक्ट एक अत्यंत सरल साइक्लिंग कंप्यूटर है। इसके गहरे इंटरफ़ेस का लक्ष्य OLED स्क्रीन पर यथासंभव कम बिजली का उपयोग करना है, जबकि काले और पीले रंग गति और गति का सुझाव देते हैं।

सुविधा सूची संक्षिप्त है: नेविगेशन; लाइव गति, औसत गति, दूरी और सवारी का समय; और सवारी डेटा साझा करना। रूट रिकॉर्डिंग और डेटा डिस्प्ले क्रूज़ मोड में सक्रिय नेविगेशन के बिना भी काम करता है। व्यवसाय मॉडल बिल्कुल सरल है: AdMob विज्ञापन और उन्हें हटाने के लिए एक बार की खरीदारी।

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

एक विकास ख़तरा

सबसे बड़ी समस्या मानचित्र निर्देशांक परिवर्तित करने की थी। यदि आपने कभी कोई मानचित्र ऐप नहीं बनाया है, तो आप नहीं जानते होंगे कि मुख्य भूमि चीन में मानचित्र अक्सर एक अलग समन्वय प्रणाली का उपयोग करते हैं। "अक्षांश और देशांतर" का मतलब हमेशा एक ही संदर्भ प्रणाली नहीं होता है। जीपीएस सामान्यतः WGS-84 निर्देशांक प्रदान करता है। स्थानीय नियमों और मानचित्रण आवश्यकताओं के तहत, चीनी इंटरनेट मानचित्र आमतौर पर रूपांतरित निर्देशांक का उपयोग करते हैं: अमैप और टेनसेंट मुख्य रूप से GCJ-02 का उपयोग करते हैं, जिसे अक्सर "मंगल निर्देशांक" उपनाम दिया जाता है, और Baidu अपना BD-09 परिवर्तन जोड़ता है। प्लॉट रॉ जीपीएस उन मानचित्रों पर समन्वयित करता है और परिणाम सैकड़ों मीटर दूर हो सकता है।

डेमो बनाने के बाद, यांग और मैं इसका परीक्षण करने के लिए कई यात्राओं पर गए, और हर बार नेविगेशन स्थिति गलत थी। फिर मुझे 2015 में कारपूलिंग उत्पाद Aipinche पर काम करने की एक समान समस्या याद आई। मैंने GPT से जांच की, जिसने WGS-84 ⇄ GCJ-02 रूपांतरण समस्या की पुष्टि की। मैंने कोडेक्स से समन्वय रूपांतरण जोड़ने के लिए कहा, और ऑफसेट गायब हो गया।