Aplikasi Transit Melacak Posisi Kereta Bawah Tanah Tanpa GPS
(blog.transitapp.com)- Di dalam terowongan, meski GPS, seluler, dan Wi‑Fi terputus, GO trip dari Transit kini tetap dapat menampilkan posisi prediksi, jumlah stasiun tersisa, dan ETA
- Kuncinya adalah mengklasifikasikan apakah pengguna berada di dalam kereta yang sedang bergerak melalui sinyal getaran akselerometer ponsel, lalu menghitungnya bersama posisi terakhir yang terkonfirmasi dan jadwal kereta
- Tim Transit mengumpulkan data berlabel manual dari ratusan perjalanan dan beberapa kota; di subway New York City, mereka menaiki semua jalur sambil merekam getaran kereta, eskalator, dan lift
- Model prediksi posisi akhir The Mixer menebak posisi saat ini dengan probabilitas 90%, dan dalam pengujian awal mendukung deteksi 1,5 juta stasiun bawah tanah dari sekitar 400.000 perjalanan
- Kedua model dikompresi menjadi file kecil dan berjalan di ponsel, sehingga penghitungan stasiun offline dimungkinkan, dan data getaran tidak dikirim ke server Transit
Mengapa sulit menentukan posisi di bawah tanah
- Di dalam terowongan kereta bawah tanah, metro, atau U-Bahn, layanan seluler, Wi‑Fi, dan GPS sering kali tidak berfungsi dengan stabil
- Sebelumnya, untuk memeriksa stasiun pemberhentian atau ETA di bawah tanah, pengguna harus bergantung pada papan informasi platform, pengumuman stasiun, atau layar digital di dalam kereta
- Alih-alih membuat satelit GPS yang menembus permukaan tanah, Transit memprediksi posisi kereta di dalam terowongan menggunakan pola getaran ponsel
Informasi yang terlihat di GO trip
- Pengguna cukup memulai GO trip di Transit
- Bisa dimulai langsung dari layar detail rute
- Bisa juga dimulai dari perjalanan yang sudah direncanakan
- Aplikasi menampilkan informasi berikut meski tidak mengetahui koordinat GPS
- Posisi prediksi di peta
- Hitung mundur jumlah stasiun tersisa
- ETA yang diperbarui
Tahap 1: Mengklasifikasikan gerakan di dalam kereta
- Saat memasuki terowongan dengan GPS yang buruk, pertama-tama perlu ditentukan apakah pengguna berada di kereta yang sedang bergerak
- Stephen, staf Transit, merekam data akselerometer dengan ponselnya saat berangkat ke kantor Montreal dan memberi label pada tiap segmen perjalanannya
- Saat mulai berjalan
- Saat menuruni tangga
- Saat menunggu di platform
- Saat kereta berangkat dan berhenti
- Data akselerasi disusun dengan metode yang terinspirasi dari Fourier transform dan diubah menjadi data frekuensi
- Di kereta yang bergerak, ponsel bergetar pada sekitar 5Hz, sedangkan saat berjalan muncul sekitar 2Hz
- Karena noise acak dan frekuensi harmonik, pola sederhana saja tidak cukup; dibutuhkan model machine learning yang mengklasifikasikan jenis gerakan dan banyak data latih
Tahap 2: Mengumpulkan data jawaban benar
- Tim Transit memberi label data dari ratusan perjalanan dan puluhan kota untuk membuat model generalisasi yang dapat mendeteksi “kereta yang sedang bergerak” terlepas dari jenis kereta atau rel
- Étienne dan Elijah mengumpulkan data getaran di subway New York City, sistem bawah tanah paling populer di aplikasi
- Keduanya membawa iPhone, Android, dan MetroCard, lalu selama seminggu menaiki bus dan kereta MTA sambil memberi label pada setiap tahap perjalanan
- Tujuannya adalah menemukan petunjuk yang membedakan getaran di dalam kereta dari getaran lain di stasiun
- Mereka naik-turun eskalator dan lift, serta memberi anotasi hingga titik berhenti
- Mereka menaiki semua jalur subway New York, dari Bronx sampai Brighton Beach, termasuk Manhattan Bridge, Williamsburg Bridge, dan Canarsie Tunnel
Tahap 3: Melatih pengklasifikasi gerakan
- Berdasarkan data sensor yang telah dirapikan dan diproses, motion classifier dilatih untuk membedakan “kereta yang sedang bergerak” dan “bukan kereta yang sedang bergerak”
- Model menerima data sensor tanpa label sebagai input dan memperkirakan apakah ponsel berada di kereta yang bergerak, kereta yang berhenti, saat berjalan kaki, atau saat berada di eskalator
- Transit membandingkan estimasi ini dengan ground truth yang dibuat lewat anotasi manual, lalu menyesuaikan logikanya untuk prediksi yang lebih akurat
- Setelah penyesuaian, model dapat membedakan apakah pengguna benar-benar berada di kereta yang sedang bergerak atau sekadar ponselnya saja yang bergetar
Tahap 4: Model prediksi posisi The Mixer
- Setelah mengetahui apakah pengguna bergerak, berikutnya perlu diprediksi secara tepat di mana kereta pengguna berada
- Model terakhir, The Mixer, menghitung posisi saat ini dengan memberi bobot pada faktor-faktor berikut
- Prediksi jenis gerakan, yaitu apakah pengguna berada di kereta yang sedang bergerak
- Posisi terakhir pengguna yang terkonfirmasi
- Apakah posisi terakhir yang terkonfirmasi itu masih baru atau sudah lama
- Jadwal kereta
- The Mixer menebak prediksi posisi saat ini dengan probabilitas 90%
- Dalam contoh perjalanan Paris RER, pembaruan posisi sesekali melalui GPS dan pemindaian Bluetooth/Wi‑Fi masuk di segmen bawah tanah, dan pembaruan ini mengoreksi prediksi posisi bawah tanah di segmen tanpa komunikasi
- Saat pengguna naik ke permukaan dan masuk ke area dengan layanan seluler, aplikasi kembali menggunakan posisi GPS standar
Operasi offline dan penanganan privasi
- Jika prediksi posisi dimungkinkan, ETA pengguna dapat diperbarui bahkan di bawah tanah
- Penghitungan stasiun dapat dilakukan tanpa bergantung pada GPS yang tidak stabil atau memeriksa layar di dalam kereta
- Penghitungan stasiun bekerja sepenuhnya secara offline
- motion classifier dan The Mixer dikompresi menjadi file kecil dan berjalan di ponsel
- Data getaran tidak dikirim ke server Transit
- Tidak ada pelacakan
- Tidak ada cookie
- Data getaran tetap berada di perangkat pengguna
Cara penggunaan dan skala pengujian awal
- Pengguna cukup mencari subway, membuka Transit, dan memulai perjalanan dengan GO untuk melihat stasiun dihitung mundur satu per satu
- Selama pengujian awal, Transit mendukung deteksi 1,5 juta stasiun bawah tanah dari sekitar 400.000 perjalanan
- Navigasi langkah demi langkah GO sudah digunakan oleh jutaan pelaku perjalanan di permukaan di lebih dari 600 kota
- Setelah GO Bike diluncurkan bulan lalu, pesepeda juga menggunakan GO
- Dengan fitur ini, pengguna kereta bawah tanah dapat lebih memercayai GO bahkan di segmen dengan kondisi komunikasi buruk
- Aplikasi tersedia di halaman unduhan Transit
1 komentar
Pendapat di Hacker News
Sekitar 10 tahun lalu saya membaca tulisan blog dari perusahaan Prancis snips; caranya adalah aplikasi mendeteksi momen ketika kereta masuk atau keluar stasiun dengan sensor tekanan udara
Saat kereta masuk atau keluar dari terowongan di antara stasiun, terjadi kenaikan/penurunan tekanan udara yang tiba-tiba, sehingga katanya sinyalnya cukup jelas
Ketemu: https://medium.com/snips-ai/underground-location-tracking-3e...
Tabung ini dapat mendeteksi lonjakan tekanan untuk mengetahui apakah pintu menjepit tangan orang, dan juga dipakai untuk mengurangi efek “bang” akibat perbedaan tekanan saat masuk terowongan
Tidak semua ponsel punya sensor tekanan udara, dan kualitas pengukurannya juga sangat berbeda antar-model. Misalnya, di beberapa perangkat nilainya bisa melonjak hanya karena ponsel digenggam seperti diremas
Transit juga tidak punya izin membaca sensor tekanan udara, dan untuk kebutuhan kami sulit membenarkan permintaan izin itu
Namun akurasinya tampaknya bergantung pada apakah arus di jaringan listriknya DC atau AC, bahkan juga pada usia gerbong
Karena bangunannya sudah selesai tetapi belum beroperasi, selama hampir 10 tahun perusahaan kereta regional harus menjalankan kereta keluar-masuk gedung
Benar-benar keren
Saat ini saya sedang mengerjakan proyek rekaman suara London Underground yang benar-benar lewat di bawah saya
Northern Line yang melintas di bawah kami terdengar sangat jelas, dan kedalamannya bahkan kurang dari 30 m
Saya jadi terobsesi menangkap suara kereta yang lewat dengan rekaman frekuensi rendah berkualitas tinggi. Entah kenapa, itu tidak bisa lepas dari pikiran saya
Misalnya, ada dua terowongan arah utara/selatan, dan saya penasaran apakah tanda suara masing-masing bisa dibedakan dengan mengorelasikannya dengan data TfL yang sebenarnya
Yang lebih menarik lagi adalah apakah kita bisa “menangkap” kendaraan pemeliharaan yang berjalan di bawah kami setelah jam operasional berakhir
Saya tidak tahu apa lagi yang bisa dilakukan dengan proyek ini, tetapi saya terpikat oleh gagasan menangkap suara semacam makhluk setengah fana yang bergerak di bawah saya
Saya tertarik pada getaran frekuensi tinggi yang sangat lemah dari benda sehari-hari yang diam, jadi mungkin targetnya hampir berkebalikan. Saya belum banyak kemajuan dalam mendapatkan sensornya
Saya ingin punya laser Doppler vibrometer, tapi harganya mahal
Saya akan coba cari siapa orangnya
[0] https://lamont.columbia.edu/
Saya tidak tahu apakah itu sisa suara dari pintu darurat di trotoar, atau tanahnya yang beresonansi seperti lonceng
Saya juga ingin sebentar mengakui bahwa nada percakapan tulisannya benar-benar bagus
Bahkan saat masuk ke penjelasan yang cukup detail seperti grafik frekuensi, tetap enak dibaca. Saya membaca versi bahasa Inggrisnya
Penulisnya benar-benar berhasil melakukannya dengan sangat baik
Transit App adalah aplikasi yang seperti permata
Istilah “classifier” terasa akrab. Menarik bahwa sepanjang tulisan mereka tidak sekalipun menyebut AI
Beberapa kota memasang BLE beacon di terowongan untuk menyiarkan lokasi, lalu posisi saat ini ditentukan dari sinyal beacon terkuat
Cara ini terlihat bagus karena mencari tahu hal itu tanpa memasang hardware
Tentu, agar adil, layar itu sering sekali salah sampai menggelikan, dan memutar pesan tidak berguna seperti “jangan lupa barang bawaan Anda”, sehingga untuk melihat informasi yang diinginkan harus menunggu sekitar 20 detik. Di dalam kereta, itu sangat buruk
Progres di antara stasiun sepertinya bisa dilacak lebih baik dengan mendeteksi tanda akselerasi tiap segmen rel
Terutama jika relnya tidak sepenuhnya lurus dan datar; ini terlihat seperti navigasi kendaraan awal sebelum GPS. Saat itu mereka memakai dead reckoning, lalu mencocokkan bentuk rute yang diukur dengan data peta untuk mengoreksi drift
Cara yang lebih andal mungkin adalah memakai akselerometer untuk mengenali fitur rel: kemiringan, tikungan, guncangan, atau kombinasi semuanya
Suara saat berbelok, perubahan latar saat terowongan bergabung, dan sebagainya juga bisa dipakai. Akselerasi yang diintegrasikan memberikan kecepatan kereta, sehingga berguna bersama input lain
Mengumpulkan tanda akan keren, tetapi untuk mencakup banyak kota dan ponsel itu pekerjaan yang sangat besar. Perusahaan seperti Google atau Apple mungkin punya data dan kapasitasnya, tetapi perusahaan kecil kecil kemungkinannya bisa
Ada dengungan yang sangat khas yang berkaitan dengan putaran roda. Dulu saya pernah membuat speedometer kasar dengan SFT, deteksi puncak, dan Kalman filtering
Sebagai pengguna Transit, terima kasih sudah membuat aplikasi sekeren ini; ini memang selalu menjadi salah satu ketidaknyamanan terbesar
Bukan hanya Transit, hal yang sama berlaku untuk aplikasi apa pun yang mendukung navigasi transportasi umum, termasuk Apple Maps
Saya memang mengira pasti ada seseorang yang sedang mengerjakan ini, tetapi membaca pertimbangan desain dan tingkat detailnya benar-benar menyegarkan. Ini pasti upaya yang luar biasa besar
Tim Transit boleh bangga karena telah menyelesaikan salah satu keluhan kecil tapi besar dalam aplikasi transportasi umum
Benar-benar keren. Karena sering naik BART, saya selalu berpikir akan menarik membuat pengklasifikasi lokasi berdasarkan suara berdecit yang berbeda di tiap titik terowongan
Namun memakai data akselerometer tampaknya jauh lebih praktis
Mungkin saja merekam suara kereta berjalan untuk memahami pergerakan, tetapi pengguna akan curiga aplikasinya sedang menguping mereka
Selain machine learning, bukankah akan jauh lebih baik jika melakukan dead reckoning dengan akselerometer dan giroskop?
Di dalam kereta yang bergerak, gerakannya dibatasi agar mengikuti jalur terowongan yang diketahui, dan ketika keberangkatan kereta terdeteksi, pengguna dibatasi berada di dalam persegi area pemberhentian kereta
Atau apakah hardware smartphone terlalu tidak akurat meskipun ada informasi tambahan?
Giroskop saja bekerja sangat baik untuk perjalanan singkat, tetapi menjadi hampir tidak berguna pada tikungan panjang dan landai. Giroskop MEMS mengalami drift cukup besar dalam puluhan detik
Jika bisa melakukan sensor fusion dengan magnetometer dan akselerometer, masalahnya berkurang, tetapi pada kereta cepat sulit menemukan arah “bawah” karena akselerasi/deselerasi dan gaya di tikungan. Saya juga tidak tahu seberapa baik kompas bekerja di dalam terowongan subway
Pengalaman saya hanya memakai aplikasi “artificial horizon” di pesawat, dan di sana akselerometer sama sekali tidak berguna untuk menemukan “bawah”. Satu manuver dengan beberapa G saja membuat horizon sama sekali tidak tahu sudut pitch. Jika lingkungan magnetiknya berisik dan GPS juga mati, ia juga tidak tahu ke mana arahnya
Hanya saja dead reckoning umumnya sangat tidak akurat, jadi jika bisa mengenali bahwa pengguna sudah naik kereta, mereka bisa tahu persis keretanya ada di mana dan meningkatkan akurasi secara signifikan
Setiap kali kereta berhenti, jika pengguna cukup diam berdiri atau duduk, bias IMU mungkin bisa dikalibrasi, tetapi dead reckoning tetap tampaknya akan mengalami drift besar
Tinggal memperkirakan kecepatan saat ini dibanding catatan historis dan memprediksi waktu kedatangan. Jadi lebih baik fokus pada kecepatan daripada akselerasi
Minggu lalu saya mencoba fitur ini di New York subway. Saya tidak tahu itu fitur baru
Idenya keren, tetapi tidak berfungsi untuk saya; aplikasi menampilkan kereta berada beberapa stasiun di belakang posisi sebenarnya