GPS olmadan metro konumunu takip eden Transit uygulaması
(blog.transitapp.com)- Tünel içinde GPS, hücresel ağ ve Wi‑Fi kesilse bile Transit’in GO trip özelliği tahmini konumu, kalan durak sayısını ve ETA’yı göstermeye devam edebiliyor
- Bunun temelinde, telefonun ivmeölçer titreşim sinyali ile kullanıcının hareket halindeki bir trenin içinde olup olmadığını sınıflandırmak ve bunu son doğrulanmış konum ile tren tarifesiyle birlikte hesaplamak yatıyor
- Transit ekibi yüzlerce yolculuk ve birçok şehirden manuel etiketlenmiş veri topladı; New York City metrosunda ise tüm hatlara binerek tren, yürüyen merdiven ve asansör titreşimlerini kaydetti
- Nihai konum tahmin modeli The Mixer, mevcut konumu %90 olasılıkla doğru tahmin ediyor ve ilk testlerde yaklaşık 400.000 yolculukta 1,5 milyon yer altı istasyonu algılamasını destekledi
- İki model de küçük dosyalar halinde sıkıştırılıp telefonda çalıştırıldığı için çevrimdışı durak sayımı mümkün oluyor ve titreşim verileri Transit sunucularına gönderilmiyor
Yer altında konum belirlemek neden zor
- Metro, metro ve U-Bahn tünellerinde hücresel hizmet, Wi‑Fi ve GPS çoğu zaman kararlı çalışmıyor
- Daha önce yer altında durulan istasyonu ya da ETA’yı kontrol etmek için peron tabelalarına, istasyon anonslarına veya araç içi dijital ekranlara güvenmek gerekiyordu
- Transit, yere nüfuz eden GPS uyduları yapmak yerine telefonun titreşim desenleri ile tünel içindeki tren konumunu tahmin ediyor
GO trip içinde görülen bilgiler
- Kullanıcının Transit’te GO trip başlatması yeterli
- Hat detay ekranından doğrudan başlatılabiliyor
- Planlanmış yolculuktan da başlatılabiliyor
- Uygulama GPS koordinatlarını bilmese bile şu bilgileri gösteriyor
- Harita üzerindeki tahmini konum
- Kalan durak sayısı geri sayımı
- Güncellenmiş ETA
1. aşama: Tren içindeki hareketi sınıflandırma
- GPS’in kötü çektiği bir tünele girildiğinde önce kullanıcının hareket halindeki bir trende olup olmadığını belirlemek gerekiyor
- Transit çalışanı Stephen, Montreal ofisine gidip gelirken telefonuyla ivmeölçer verisi kaydetti ve yolculuğun her bölümünü etiketledi
- Yürümeye başladığı an
- Merdivenlerden indiği an
- Peronda beklediği an
- Trenin kalktığı ve durduğu an
- İvme verisi, Fourier transform’dan ilham alan bir yöntemle düzenlenip frekans verisine dönüştürüldü
- Hareket halindeki trende telefon yaklaşık 5Hz frekansında titreşirken, yürürken bu değer yaklaşık 2Hz olarak görüldü
- Rastgele gürültü ve harmonik frekanslar nedeniyle yalnızca basit desenler yeterli olmadı; hareket türlerini sınıflandıran bir makine öğrenimi modeli ve çok sayıda eğitim verisi gerekti
2. aşama: Doğru veri toplama
- Transit ekibi, tren ya da hat türünden bağımsız olarak “hareket halindeki tren” durumunu ayırt edebilen genellenmiş bir model oluşturmak için yüzlerce yolculuk ve onlarca şehirden veriyi etiketledi
- Étienne ve Elijah, uygulamadaki en popüler metro sistemi olan New York City metrosunda titreşim verisi topladı
- İkili, iPhone, Android ve MetroCard ile bir hafta boyunca MTA otobüs ve trenlerine binerek yolculuğun her aşamasını etiketledi
- Amaç, tren içi titreşimlerle istasyon içindeki diğer titreşimleri ayırmaya yarayacak ipuçlarını bulmaktı
- Yürüyen merdiven ve asansörlere defalarca binip inerek durma anlarına kadar açıklama eklediler
- Bronx’tan Brighton Beach’e, Manhattan Bridge, Williamsburg Bridge ve Canarsie Tunnel dahil New York’taki tüm metro hatlarına bindiler
3. aşama: Hareket sınıflandırıcısını eğitme
- Düzenlenip işlenen sensör verilerine dayanarak motion classifier, “hareket halindeki tren” ile “hareket halindeki tren değil” durumlarını ayırt edecek şekilde eğitildi
- Model, etiketsiz sensör verisini girdi olarak alıp telefonun hareket halindeki trende, durmuş trende, yürüyüşte ya da yürüyen merdivende olup olmadığını tahmin ediyor
- Transit bu tahmini, manuel açıklamalarla oluşturulan ground truth ile karşılaştırıyor ve daha doğru tahminler için mantığı ayarlıyor
- Yapılan ayarlamalar sonunda model, kullanıcının gerçekten hareket halindeki bir trende mi olduğunu yoksa sadece telefonun mu titreştiğini ayırt edebilir hale geldi
4. aşama: Konum tahmin modeli The Mixer
- Hareket durumunu öğrendikten sonra kullanıcının treninin tam olarak nerede olduğunu tahmin etmek gerekiyor
- Son model olan The Mixer, mevcut konumu hesaplamak için şu unsurları ağırlıklandırıyor
- Hareket türü tahmini, yani kullanıcının hareket halindeki bir trende olup olmadığı
- Kullanıcının son doğrulanmış konumu
- Son doğrulanmış konumun ne kadar yeni ya da eski olduğu
- Tren tarifesi
- The Mixer, mevcut konum tahminini %90 olasılıkla doğru yapıyor
- Paris RER yolculuğu örneğinde, yer altı bölümünde GPS ile Bluetooth/Wi‑Fi taramalarından gelen aralıklı konum güncellemeleri alınıyor ve bu güncellemeler iletişimin olmadığı bölümlerdeki yer altı konum tahminini düzeltiyor
- Kullanıcı yer üstüne çıkıp hücresel hizmet olan bir bölgeye girdiğinde uygulama yeniden standart GPS konumunu kullanıyor
Çevrimdışı çalışma ve gizlilik
- Konum tahmini mümkün olduğunda yer altında da kullanıcının ETA değeri güncellenebiliyor
- Kararsız GPS’e ya da araç içi ekranları kontrol etmeye bağımlı kalmadan durak sayımı yapılabiliyor
- Durak sayımı tamamen çevrimdışı çalışıyor
- motion classifier ve The Mixer küçük dosyalar halinde sıkıştırılarak telefonda çalıştırılıyor
- Titreşim verileri Transit sunucularına gönderilmiyor
- Takip yok
- Çerez yok
- Titreşim verileri kullanıcının cihazında kalıyor
Kullanım şekli ve ilk test ölçeği
- Kullanıcı metroya binmek için Transit’i açıp GO ile yolculuğu başlattığında durakların tek tek geri sayıldığını görebiliyor
- İlk testler sırasında Transit, yaklaşık 400.000 yolculukta 1,5 milyon yer altı istasyonu algılamasını destekledi
- GO’nun adım adım navigasyonu halihazırda 600’den fazla şehirde milyonlarca yer üstü yolcusu tarafından kullanılıyordu
- Geçen ay kullanıma sunulan GO Bike sonrasında bisiklet kullanıcıları da GO kullanmaya başladı
- Bu özellikle birlikte metro yolcuları, zayıf bağlantı olan bölümlerde bile GO’ya daha fazla güvenebilir hale geliyor
- Uygulama Transit indirme sayfasından edinilebiliyor
1 yorum
Hacker News yorumları
Yaklaşık 10 yıl önce Fransız şirket snips’in bir blog yazısını okumuştum; uygulama, trenin istasyona girdiği ya da istasyondan çıktığı anı basınç sensörüyle algılıyordu.
Tren istasyonlar arasındaki tünele girerken ya da tünelden çıkarken ani bir hava basıncı artışı/azalışı oluştuğu için oldukça net bir sinyal elde edildiği söyleniyordu.
Buldum: https://medium.com/snips-ai/underground-location-tracking-3e...
Bu tüp, basınç sıçramalarını algılayarak kapının birinin elini sıkıştırmak üzere olup olmadığını anlayabilir; ayrıca tünele girişte basınç farkından kaynaklanan “güm” etkisini azaltmak için de kullanılır.
Her telefonda basınç sensörü yok, ölçüm kalitesi de modele göre çok değişiyor. Örneğin bazı cihazlarda telefonu sıkıca tutmak bile değerin zıplamasına neden oluyordu.
Transit’in basınç sensörü okumalarına erişim izni de yoktu; bizim kullanımımız için bu izni istemeyi gerekçelendirmek zordu.
Ancak doğruluk, elektrik şebekesindeki akımın DC mi AC mi olduğuna, hatta vagonların yaşına göre bile değişiyor gibiydi.
Bina tamamlanmış ama işletmeye açılmamış olduğu için, neredeyse 10 yıl boyunca yerel demiryolu şirketi trenleri binanın içine ve dışına çalıştırmak zorunda kaldı.
Gerçekten harika.
Şu anda London Underground’un altımdan geçişinin ses kaydını alma üzerine bir proje yapıyorum.
Altımızdan geçen Northern Line çok belirgin duyuluyor ve derinliği 30 metreden bile az.
Yüksek kaliteli düşük frekanslı kayıtlarla tren geçişlerinin sesini yakalamaya takmış durumdayım. Nedenini bilmiyorum ama aklımdan çıkmıyor.
Örneğin kuzeye/güneye giden iki tünel var; bunların ses imzalarını gerçek TfL verileriyle korele ederek ayırt edebilir miyim, merak ediyorum.
Daha da ilginci, hizmet saatleri bittikten sonra altımızda çalışan bakım araçlarını “yakalayabilir” miyim sorusu.
Bu projeyle başka ne yapılabilir bilmiyorum ama altımda hareket eden yarı hayaletimsi bir canlının sesini yakalama fikrine kapılmış durumdayım.
Ben durağan gündelik nesnelerden gelen son derece zayıf yüksek frekanslı titreşimlerle ilgileniyorum; sanırım hedef neredeyse bunun tam tersi. Sensör bulma konusunda henüz pek ilerleme kaydedemedim.
Bir lazer Doppler vibrometre isterdim ama pahalı.
Kimin yaptığını bulmaya çalışacağım.
[0] https://lamont.columbia.edu/
Bunun kaldırım acil çıkışından kalan ses mi, yoksa yerin bir çan gibi çınlaması mı olduğunu bilmiyorum.
Yazının sohbet havasındaki tonunu gerçekten sevdiğimi de kısaca belirtmek istiyorum.
Frekans grafikleri gibi oldukça ayrıntılı açıklamalara girildiğinde bile okuması keyifliydi. İngilizce sürümünü okudum.
Yazan kişi gerçekten harika iş çıkarmış.
Transit App mücevher gibi bir uygulama.
“Sınıflandırıcı” demeleri hoşuma gitti. Yazının tamamında bir kez bile yapay zeka dememeleri etkileyici.
Bazı şehirler tünellere BLE beacon yerleştirip konumu yayınlıyor; en güçlü beacon sinyaliyle mevcut konum bulunuyor.
Bunu donanım kurmadan çözmeleri güzel görünüyor.
Tabii dürüst olmak gerekirse bu ekranlar gülünç derecede sık yanlış oluyor ve “eşyalarınızı unutmayın” gibi işe yaramaz mesajları döndürüp durduğu için istediğiniz bilgiyi görmek üzere yaklaşık 20 saniye beklemeniz gerekiyor. Tren içinde ölümcül derecede kötü.
İstasyonlar arasındaki ilerleme, her hat kesiminin ivme imzasını algılayarak daha iyi izlenebilir gibi geliyor.
Özellikle tamamen düz ve yatay olmayan hatlarda; GPS öncesi erken dönem araç navigasyonuna benziyor. O zamanlar dead reckoning kullanılıyor, ölçülen rotanın şekli harita verisiyle eşleştirilerek drift düzeltiliyordu.
Daha güvenilir bir yöntem, ivmeölçerle hat özelliklerini saptamak olabilir: eğim, dönüş, tümsekler ya da bunların kombinasyonları gibi.
Dönüş sırasındaki ses, tünel birleşimlerinde arka planın değişmesi gibi şeyler de kullanılabilir. Entegre edilmiş ivme tren hızını verdiği için diğer girdilerle birlikte faydalıdır.
İmza toplamak harika olurdu, ama şehirler ve telefonlar genelinde geniş kapsama sağlamak muazzam bir iş. Google ya da Apple gibi şirketlerin verisi ve kapasitesi olabilir, ama küçük bir şirket için pek olası değil.
Tekerlek devriyle bağlantılı, çok ayırt edici bir uğultu var. Eskiden SFT, tepe algılama ve Kalman filtreleme ile kaba bir hız ölçer yapmıştım.
Bir Transit kullanıcısı olarak, böyle harika bir uygulama yaptığınız için teşekkürler; bu her zaman en büyük sıkıntılardan biriydi.
Yalnızca Transit için değil, toplu taşıma navigasyonunu destekleyen herhangi bir uygulama için de geçerliydi; Apple Maps de buna istisna değil.
Birilerinin bunun üzerinde çalıştığını düşünüyordum ama tasarıma giren düşünceyi ve ayrıntı düzeyini okumak gerçekten ferahlatıcı. Muazzam bir emek olmuş.
Transit ekibi, toplu taşıma uygulamalarındaki küçük ama büyük şikâyetlerden birini çözdüğü için gurur duyabilir.
Gerçekten harika. BART’a sık binerken, tünelin farklı konumlarındaki farklı cıyaklama seslerine göre bir konum sınıflandırıcısı yapmak eğlenceli olur diye hep düşünmüştüm.
Ama ivmeölçer verisini kullanmak çok daha pratik görünüyor.
Trenin yuvarlanma gürültüsünü kaydedip hareketi anlamak mümkün olabilir, ama kullanıcılar uygulamanın onları dinlediğinden şüphelenir.
Makine öğrenmesine ek olarak ivmeölçer ve jiroskopla dead reckoning yapılsa çok daha iyi olmaz mı?
Hareket eden trenin içinde, bilinen tünel güzergâhı boyunca hareket edecek şekilde kısıtlamak; trenin kalkışı algılandığında da kullanıcının trenin durduğu dikdörtgenin içinde olduğunu varsaymak gibi.
Yoksa ek bilgi olsa bile akıllı telefon donanımı fazla mı hatalı?
Sadece jiroskop kısa hareketlerde çok iyi çalışır, ama uzun ve yumuşak virajlarda neredeyse işe yaramaz hale gelir. MEMS jiroskoplar onlarca saniye içinde epey drift yapar.
Manyetometre ve ivmeölçerle sensör füzyonu yapılabilirse sorun azalır, ama hızlı trenlerde hızlanma/yavaşlama ve viraj kuvvetleri yüzünden “aşağı” yönünü bulmak zordur. Metro tünelinde pusulanın ne kadar iyi çalışacağını da bilmiyorum.
Yalnızca uçakta “yapay ufuk” uygulaması kullanma deneyimim var; orada ivmeölçer “aşağı” yönünü bulmakta tamamen işe yaramazdı. Birkaç G’lik tek bir manevra, ufkun pitch açısını tamamen kaybetmesine yetiyor. Manyetik ortam gürültülüyse ve GPS de kapalıysa nereye gittiğini de bilmiyor.
Ancak dead reckoning genelde çok hatalı olduğundan, trene binildiğini fark ettiklerinde trenin nerede olduğunu kesin olarak bilip doğruluğu büyük ölçüde artırabiliyorlar.
Tren her durduğunda kullanıcı yeterince hareketsiz ayakta duruyor ya da oturuyorsa IMU bias’ı kalibre edilebilir, ama yine de dead reckoning’in çok drift yapacağını düşünüyorum.
Geçmiş kayıtlara göre mevcut hızı tahmin edip varış zamanını öngörmek yeterli. Bu yüzden ivmeden çok hıza odaklanmak daha iyi.
Geçen hafta New York metrosunda bu özelliği denedim. Yeni bir özellik olduğunu bilmiyordum.
Fikir güzel, ama bende çalışmadı; uygulama treni gerçek konumundan birkaç durak geride gösterdi.