Saatlerde GPS verisine yaklaşım

Geçen ay bir 100 km yarışı koştum. O yarışın raporunda şöyle yazmıştım:

GPS konusunda iki detaylı yazı yazdım. Bu kadar kompleks ve pahalı bir sistemde bileğimizdeki küçücük cihazların yine de güzel işler çıkardığını yazmıştım bu yazılarda. Ama şunu anlamıyorum, cihaz iki ölçüm arasında önceki yüzlerce ölçümünden çok farklı bir şey ölçtüğünde -bir saniyede 100 metre gidemeyeceğimi bilmesi için çok acayip bir sisteme ihtiyacı yok- neden dönüp bir düzeltme ya da yeniden değerlendirme yapmıyor bilmiyorum. Bu konuda teknik bilgisi olan birileri ile bunu konuşmak isterim açıkçası. Hadi saat bunu gerçekleştirmek için çok küçük ya da antrenman anında yapılmak için bu karmaşık bir şey diyelim, peki Strava’ya yüklediğimizde o neden “Arkadaşım bak bir antrenman yükledin ama çok tutarsız veriler var, bir incele istersen.” diye uyarmaz ve hatta segmentlerde değerlendirmeye alır anlamıyorum.

Sonunda biraz zaman bulabildim de o yarışın GPX dosyasını inceleme fırsatım oldu. Kaydı Garmin Fenix 5 ile smart modunda yaptım. Smart oldugu için farklı zamanlarda kayıt almış. Kayıtların aralıklarına göre dağılım şöyle:

1 sn: 1388 adet
2 sn: 1089 adet
3 sn: 864 adet
4 sn: 916 adet
5 sn: 1745 adet
6 sn: 1810 adet
7 sn: 525 adet
8 sn: 75 adet
9 sn: 27 adet
10 sn: 6 adet
11 sn: 1 adet

Yani çoğunlukla 7 sn veya daha kısa aralıklarla kayıt almış. Rotanın düz olduğunu ve gidiş geliş olduğunu düşününce çok uygun görünüyor.

Bu aralıklara karşılık her ölçüm arasında geçtiğimi kaydettiği mesafelerin dağılımı da şöyle:

< 1 metre 160 adet
< 5 metre 1700 adet
< 10 metre 1674 adet
< 20 metre 3887 adet
< 30 metre 1017 adet
< 50 metre 5 adet
50 metreden büyük 3 adet

Şimdi 5 dk/km peys ile koşan birisi saniyede 3,33 metre yol alır. 6 saniyede 20 metre, 9 saniyede 30 metre eder. Ben saatin içindeki yazılımı geliştiriyor olsam “7 saniye ve daha kısa aralıklarla kayıt alıyorsam o zaman 25 bilemedin 30 metre mesafe kaydetmem normal” diye düşünürüm ve bundan fazla mesafe buluyorsam bir terslik olduğunu varsayarım. Çok geniş bir yelpazeye hizmet veriyor olsam da saati kullananın maksimum ve minimumunu öğrenmiş olmam gerek. Hadi onu da bilmiyorum bu mesafeyi 50 veya 60 metreye çıkarırım. Ama daha ötesi benim için exception yani normal dışı bir durum olmalı.

Saatin 30 metreden daha aralıklı yaptığı ölçümler şunlar:

Aralık - Km - Saat
50.38 - 28.492 - 09:17:15
39.11 - 28.551 - 09:17:18
34.23 - 29.104 - 09:19:54
31.22 - 41.997 - 10:23:39
199.27 - 42.295 - 10:24:41
46.65 - 42.350 - 10:24:45
2165.29 - 44.602 - 10:36:32
38.90 - 53.915 - 11:26:41

42 ve 44. kmlerde ne kadar absürt kayıtlar olduğunu bilmek yazılımsal açıdan ters olmamalı diye düşünüyor insan. En acayibi olan 2165 metrelik aralığın başı ve sonundaki kayıtlara baktım, saatler şöyle 10:36:26 ve 10:36:32; yani 6 saniye. Bu 6 saniye aralığında lat=“51.8729430” lon=“0.4853420” noktasından lat=“51.8681540” lon=“0.4547520” noktasına gitmiş görünüyorum. Aşağıdaki resimde de net görünüyor zaten gariplik.

Bunun yazılımsal olarak bir çözümü olmalı. Bunu egzersiz sırasında yapmak zor olabilir ama bir uyarı verilebilir bilemiyorum. Ya da stop-save yapınca bir şeyler gösterebilir saat. Şimdi ayak üstü tasarım yapmayayım ama bu konuda teknik bilgisi olan varsa aramızda (mesela @cagatay.ulusoy olabilir, ya da başka yazılımcı/elektronik mühendisi arkadaşlar) ilginç bir tartışma olabilir. Ya da belki çok bilinen bir sorundur ve ben saçmalıyorumdur. Öyleyse de bilelim öğrenelim.

Not: Son olarak altını çizmek isterim; GPS sistemine ve kullandığımız küçücük saatlerin yaptıklarına büyük saygım var. Benimkisi “yahu niye benim saatim maratonu 300 metre uzun ölçtü” diyenlerden farklı bir tartışma.

7 Beğeni

Geçen yıla kadar Garmin Forerunner 735XT, GPS izini daha yumuşak hatlarla çiziyor ve neredeyse kusursuz bir sonuç çıkarıyordu. İki GPS koordinatı arasına düz bir çizgi çizerek ilerlediğini düşünmüşümdür. Ama son bir yıldır kullandığım Fenix 5 henüz düz bir çizgi çizmiş değil. Sürekli olarak zigzaglar halinde bir kayıt yapmakta ve insanoğlunun düz koşmaya meyilli olduğunu gözardı etmekte. Muhtemelen Forerunner 735XT bir şekilde istediğimiz düzeltmeyi yaparak ilerliyordu, Fenix 5 bu düzeltmeyi kesinlikle yapmıyor. Saati ilk kullanmaya başladığımda bunun zaman içinde yazılımla düzeleceğini düşünmüştüm. Bu saate kadar düzeltmeye yakın en ufak bir değişiklik olmadı. Belki de daha hassas ölçümler yaparak bu faydayı kaybetmiş olabilirler lakin yazılımla düzelebileceğine inancım yüksek. Saat üreticilerinin bu izleri düz ve yumuşak bir hat olarak çizmeyişlerinin sebebini ben de öğrenmek isterdim.

Bir yandan da, acaba bilmediğim bir ayar mı var diyorum. Mesela “smart” kayıttan çıkıp saati bir şekilde 5 saniyede bir kayda zorlasak daha doğru sonuç alma şansımız olur muydu? Malesef bu noktada iki seçenek var; “smart” ve 1sn. kayıt. Bana 5-10 saniyelik periyotlar çözüm olabilirmiş gibi geliyor.

2 Beğeni

Kullandığım saat kısmen basic bir model olduğu için özellikle şehir içi yüksekliklerde çok fazla hatalı veri veriyordu; Suunto ve Strava uygulamalarının bu veriyi düzeltmedigini görünce bir arayışa girdim. Kısa bir süredir Runalyze kullanıyorum ve hatalı okumaları onarıyor. Onu da ikinci bir harita üzerinde yapiyor. Yataydaki aşırı sapmaları henüz deneyimleme şansım olmadı ama bir veri oluşursa paylaşırım.

Bana da ilginç gelen veriyi Suunto üzerinden alıyor ama Strava ve Suunto’ya göre daha iyi işliyor.

Sizin bahsettiğiniz uygulama içi düzeltme de çok zor olmamalı gibi geliyor.

2 Beğeni

Yukseklik cok karisik bir kavram. Ben aslinda onunla iligli epey okuyup yazmistim. Yukseklikle ilgili veritabanlari var, degisik hasassliklarda. Uygulamalar o veritabanlarini kullaniyorlar. Ama iste yatay mesafede guvenilebilecek tek sey harita kayitlari olabilir ama ben haritada olmayan yollara izlere girerim diye ona yanasilmaz.

1 Beğeni

Kullandigimiz saatlerde, en azindan benim bildiklerimde, ogrenme diye bir ozellik yok. Saate bunu yaptirmak, islemciye yuksek ihtimal fazla gelir. Islemci bu isi yapabilse bile saatin pil omru ciddi sekilde azalir.

Strava ve benzerlerinin bunu yapmasi gorece daha kolay ama tabii her isin bir maliyeti var. TrainingPeaks, parali uyelere gps dosyasindaki bazi anormallikleri duzeltme izni veriyormus. Strava kendini benim bekledigimden cok daha yavas gelistiriyor. Ileride benzer bir ozelligi Strava’da da gorebiliriz.

GPS kayitlarinda, uzun mesafelerde hatalar birbirini buyuk olcude goturuyor ve dogruya yakin bir olcum elde ediyoruz. Nabiz kaydi ayri bir olay. Gogus bandi kullanildiginda bile yanlis okumalar oluyor ve bu durum kosunun analizlerini ciddi sekilde bozuyor. Ogrenme veya hata duzeltmeyi nabiz verisinde yapmak cok daha kolayken henuz bunu bile yapmiyor Strava.

1 Beğeni

@spinodal Guzel bir konu. Aciklamaya gecmeden once su notu paylasayim. Ben isin GPS algoritmalari kisminda calismiyorum. Alt katmanlar islenmis GPS verisini ust katmana yolluyor ve ben de bu veriyi uygulamada kullaniciya sunan kisimda calisiyorum. Dolayisiyla tam olarak bir uzman cevabi olmayacak benimkisi.
Antrenman sonrasi islem (post processing), veri duzeltme ve filtreleme sizin dediginiz gibi yapilabilir. Peki neden yapilmiyor? Cunku sahadaki testlere ve kullanicilardan gelen geri bildirimlere gore su an en ciddi problem bu degil. 100 metre gibi ziplamalar cok nadir oluyor. Wobble dedigimiz zikzaklar ise daha cok cip seviyesinde duzeltilmeye calisiliyor. Saat markalari kendi test verilerini Sony, Qualcomm gibi cip ureticisiyle paylasiyor. Sonrasinda bu firmalar kendi firmware guncellemelerini saat markalarina gonderiyor. Her defasinda bu zikzaklar ve titremelerin iyilestirilmesi hedefleniyor. Sunu da unutmamak lazim. GPS sinyalinin hata orani yatay duzlemde yaklasik 4-5 metre. [Kaynak]
Acikcasi cogu kullanici saat firmalarini ozellik istekleriyle darliyor. Ozellikle Suunto icin konusursak hemen hemen her gun su yorum geliyor: Su ozellik Garmin'de var, neden Suunto'da yok? Cok kucuk bir kullanici yuzdesi sizin gibi antrenman sonrasi dosyayi alip detayli hassasiyet incelemesi yapiyor. Bunu bilen firmalar fazla kurcalamiyor. Hatta soyle soyleyim, bence biraz kurnazlik yapip kullaniciyi bile yaniltanlar var. Ornegin asagida antrenman sonrasi uygulamada gidilen yolu Polar harita uzerinde soyle gosteriyor:


Ilk bakista ne kadar da guzel cizmis, hata orani neredeyse sifir, tam yolun uzerinde gostermis diyebilirsiniz. Fakat gercekte soyle bir durum var:

Kirmizi cizilen guzergahin altindaki beyaz kisim yol degil. Guzergah kirmizi ve beyaz birlestirilip gosterilmis. Yakinlastirinca hata orani gozukuyor.

Sonuc olarak soyle ozetleyeyim. Firmalar kendi GPS hassasiyetlerinin (accuracy) kullanicilardan gelen yorumlara gore yeterli oldugunu goruyor. Kaynaklarini veri analizi dayali iyilestirme algoritmalarini harcama yerine muzik calma, NFC ile odeme yapma, uyku analizi vs vs gibi ozelliklere aktariyorlar. Aslinda You have one job dedigimiz, spor saatinin asil isi en net sekilde mesafe olcmek olmali. Ama piyasa yaniyor ve farklilasmak icin surekli yeni ozellik istiyor. Pazarlama sirasinda ozellikler siralansin en cok ozellik bizde olsun isteniyor.

9 Beğeni

Benimki doğru bir veri/tahmin olmayabilir ama spor saatinde gps nfc’den, muzik çalmasından çok önce ve önemlidir.Belli başlı piyasa öncüsü spor saatlerinde o tarz süslemeler azınlıktaki modellerinde var. Yada piyasaya yeni çıkan markalar farklılaşma adına ekliyor.(Uyku analizi ihtiyaç gibi, nfc den daha koşuya etken🙂)
https://trends.google.com/trends/explore?q=Watch%20nfc,Watch%20gps

Bu cok fena cakallikmis yalniz.

Bu arada benim tek derdim 6 saniyede insanin 2000 metre gidemeyecegini anlayip buna gore onlemler alinmasi. Yoksa 4-5 metre sapmis cok dert degil.

Ben de ilk çakallık yazmıştım sonra düzenleyip daha hafif bir kelime kullandım. Rakip firma sonuçta :slight_smile: Evet 6 saniyede 2000 metrelik farkı bile temizlemeyi düşünmeyenler var. ¯_(ツ)_/¯

Şöyle bir şey okudum az önce. Güzel PR.

1 Beğeni

Yazılımsal olarak çözümü görece kolay bir şekilde aslında. Yukarıda da yazıldığı gibi koşucu 3 metre saniye civarı tempo ile koşarken birden 30 metreye çıkarsa bu, saat o noktayı görmezden gelmeli ve hatta sonraki noktaya göre konumunu belirleyebilir yine kabaca.
Ancak özellikle GPS sinyalinin çok yansıdığı yerlerde gelen saçma sapan veriyi işlemek çok zor olabilir. Bir de yazılım stabilite için gerektiği kadar basit tutulmaya çalışılıyor bence. Hani kaydedilen eski noktalara dönüp bakmıyor gibi sistem. Bu saatlerde genelde 256 KB civarı SRAM bellekler kullanılıyor. Zaten çalışan işletim sisteminin üstüne, koşu aktivitesini çalıştıran yazılım, bunun işlediği verilere bir de hata düzeltme algoritmalarının verileri de eklenince bellek sorunu yaşamamak için de üzerinde durulmuyor olabilir. GPS yongaları birkaç çeşit algoritma ile filtreleme yapıyor zaten aslında. Bu tür sorunların düzeltmesi sonraya bırakılmış olabilir diye de düşünüyorum.
Fenix 3’te bisiklet aktivitesinde bir kez böyle bir sorun yaşadım. Fenix 5X’te ise çok sefer yaşadım ve Garmin’le baya irtibattaydık, tüm sorunlu aktiviteleri istediler gönderdim. Bununla ilgili açık bir güncelleme çıkmadı ama zamanla toparlanmıştı yine değerler. Aslında toparlanmadı bence ama hatalı okumalara sebep olan ekstra neden neydi, onu da merak ediyorum. 6X’te şimdiye kadar görmedim böyle bir abartılı uçma.
Saatleri benim gibi Fenix 3’e Hakkari > Tekirdağ rotası atıp oradan araçta yol takibi yapanların da kullanabileceğini düşünüp inanılmaz gelen verilerin de inanılabilir olabildiğini de düşünüyor olabilirler. :smiley:

1 Beğeni

Sadece PR zaten. Madem bu cihazları böyle ciddi amaçlar için de kullanıyorlar, daha ciddi özellikler de olabilir bu saatlerde. Askeri ortamda kullanılan saat sivil konum sinyallerini destekliyor sadece. Bu şekilde en basit jammer girişiminde konumu kaybediyor el tipi Garmin’ler bile. Buna uygun filtreler ve özelliklerle donatılmalılar.

1 Beğeni

Aynı konuya ben de anlam veremiyorum. Bilgisayar Yüksek Mühendisiyim ve uzun süre Elektronik Ücret Toplama ve bunla ilişkili Filo takip sistemleriyle çalıştım. Bizlere benzer şekilde otobüsler sürekli konum göndererek seferlerini kayıt altına alıyorlardı ve ilgili veriler raporlanıyordu. Saat üzerindeki donanımdan kaynaklı olarak veriyi anlık işlemek belki tercih edilmiyor olabilir zira biz de veriyi saatten kat ve kat donanımlı olmasına rağmen otobüs üzerinde bulunan bilgisayarda işlemiyorduk ama veriyi raporlayan uygulama nasıl bunu yorumlamaz orası çok enteresan. Araçlarda sapma gösteren veri noktası bir şekilde mevcut yola oturtulabilir, sonuçta yolların koordinatları belli, koşarken ise benzer şekilde sabit bir yol yok orası tamam ama saniyede 100 metre 300metre 500metre gidemeyeceğim de çok net. :slight_smile:

İzmir’den bir örnek. Artık böyle basit bir sapmayı Garmin’in hadi o yakalayamıyorsa Strava’nın yakalaması lazım.

5 Beğeni