Kordajı ne zaman değiştireceğinize karar veren şey tarih değil, kullanımdır. Aynı ay içinde haftada bir oynayan biriyle haftada dört kez oynayan biri kortta dört kat farklı süre geçirir. Takvim aynı hızda ilerler, ama kordajın gördüğü yük hiç de aynı değildir.
String GOAT da aynı şekilde başladı: bir örülme tarihi artı gün cinsinden bir döngü. Kendi raketlerimin kordajını da ben örüyorum, bu yüzden bu ölçütün nerede tıkandığını kullanırken sürekli fark ettim. Yoğun geçen bir hafta ile neredeyse hiç oynamadığım bir hafta, aynı gün aynı hatırlatmayı alıyordu.
Ölçütü tarihten kullanıma taşımak açık bir çözüm gibi görünüyordu, ve asıl tıkandığım yer tam da orasıydı. Oyun süresi, bir antrenmanı bitirip "bugün aşağı yukarı iki buçuk saat" diye tahmin ettiğim anda veri olmaktan çıkıp anıya dönüşüyor. Vuruş sayısını ise saymanın hiçbir yolu yok. Kordaj kaydı için bir uygulama yapıyordum, ama kordajın gerçekte ne kadar iş yaptığını kaydedecek bir yolum yoktu.
Saat uygulaması tam bu boşluğu kapatmak için var. Apple Watch veya Galaxy Watch'ta bir antrenman başlatırsınız, vuruş sayısı ve oyun süresi kaydedilir, ve bu kayıt kordaj değişim kararını besler.
Bunu geliştirmek bir kısıtlamayı aşmayı gerektirdi. Kortta oyuncular saati normalde raketi tutmayan bileklerinde taşır, çünkü raket elinde taşındığında tutuşu bozar ve darbeyi doğrudan üstlenir. Vuruş saymak açısından bu alışkanlık aleyhe çalışır: topa temasın şoku en net biçimde raketi tutan kolda görünür, diğer kolda ise çok daha zayıf kalır. Bu yüzden bilek sensörüyle vuruş sayma girişimleri genelde "saati raket elinize takın" varsayımından başlar.
String GOAT bu varsayımı değiştirmemeyi tercih etti. Saati zaten taktığınız yerde, raket tutmayan bileğinizde takın.
Bu yazı, kendi raketinin kordajını ören veya kendi değişim döngüsünü yöneten oyuncular için. Algılamanın nasıl çalıştığını, gerçekte ne kadar doğru olduğunu ve bu kaydın kordaj değişim kararını nasıl beslediğini sırayla ele alıyor.
Önemli noktalar
- Desteklenen cihazlar — watchOS 9.0 ve üzeri (Apple Watch Series 4 ve sonrası) ile Galaxy Watch dahil Wear OS 3.0 ve üzeri. Eşleştirilmiş telefon uygulamasıyla birlikte çalışır.
- Nereye takılır — raketi tutmayan bilek.
- Neler kaydedilir — vuruş sayısı, oyun süresi, nabız, kalori ve açık hava GPS rotası.
- Doğruluk — boşa yapılan salınımlar ve yürüme sayılmaz. Dipten vuruşların tamamında yaklaşık dörtte üç seviyesinde kalır, tek el backhand ise eksik sayılır.
- Ne işe yarar — birikmiş oyun süresi, kordaj türüne göre bir ömür referansıyla karşılaştırılır; böylece hatırlatmalar takvim yerine gerçek kullanımı izler.
Zayıf bir sinyalden vuruş okumak
İz diğer kola da ulaşır. Sadece zayıftır. Bunun için gereken şey daha güçlü bir sinyal değil, zayıf bir sinyali okumak üzere eğitilmiş bir modeldir.
String GOAT, KAIST'te bir araştırma ekibinin yayımladığı Silent Impact modelini uyguluyor. Bu model, raketi tutmayan koldaki hareketten darbeleri belirlemek üzere geliştirildi. UIST 2024'te, ACM Kullanıcı Arayüzü Yazılımı ve Teknolojisi Sempozyumu'nda sunuldu (Park, Yang, Jo) ve atıf koşuluyla ticari kullanıma izin veren CC BY 4.0 lisansıyla yayımlandı. String GOAT bu atfı uygulamanın açık kaynak lisansları ekranında yapıyor. Makale ACM Digital Library'de yer alıyor.
Analiz saatte değil telefonda çalışır. Saat sensör verilerini toplayıp gönderir; telefon bu veriyi modelden geçirir. Bu işlem tamamen cihaz üzerinde gerçekleştiği için kortta zayıf çekim algılamayı etkilemez.
Bir antrenmanda ne kaydedilir
Bir raket seçip saat uygulamasında antrenmanı başlatın; siz bitirene kadar aşağıdakiler birikir.
| Öğe | Ayrıntı |
|---|---|
| Vuruş sayısı | Algılanan darbe sayısı |
| Oyun süresi | Antrenmanın başından sonuna |
| Nabız | Ortalama, maksimum ve bölgelere göre süre |
| Kalori | Saatin sağlık verilerinden |
| Mesafe ve rota | GPS açıkken açık hava antrenmanlarında |
Desteklenen cihazlar watchOS 9.0 ve üzeri (Apple Watch Series 4 ve sonrası) ile Galaxy Watch dahil Wear OS 3.0 ve üzeridir. Saat uygulaması eşleştirilmiş telefondaki String GOAT uygulamasıyla birlikte çalıştığı için telefon uygulaması da gereklidir.
Ne kadar doğru
Bir vuruş sayısı ekranda göründüğü anda "bu doğru mu?" sorusunu davet eder. Aşağıdaki rakamlar makalede bildirilen performans değil, kendi uygulamamızda ölçtüklerimiz — aynı model, saat donanımı ve etrafındaki işlem süreci değiştiğinde farklı davranır.
Önce güvenilir olan kısımdan başlayalım. Topsuz raket sallamak sayılmıyor. Kapalı kort testlerinde topsuz yapılan 30 salınım 0 olarak kaydedildi, yürüme ve hareketsiz durma da öyle. Model salınımın kendisini değil topa temas anını algıladığı için, raketle kortta dolaşırken veya top toplarken sayı yükselmiyor. Yalnızca forehand ağırlıklı bir testte sayı, gerçekte vurulan top sayısıyla neredeyse birebir örtüştü.
Eksik kalan yönler.
- Dipten vuruşların (sekmiş topun baseline'dan forehand veya backhand ile vurulması) tamamında yaklaşık dörtte üç seviyesinde kalıyor. Sayı, gerçekte vurulandan düşük çıkabilir.
- En çok tek el backhandler eksik sayılıyor. Modelin arkasındaki eğitim verisinde tek el backhand kullanan oyuncu sayısı çok az görünüyor.
- Hızlı voleler kaçabilir. Birbirini kısa aralıklarla izleyen vuruşlar tek vuruşta birleşebilir.
- Vuruş türleri ayrıştırılmıyor. Forehand, backhand veya vole dökümü bulunmuyor.
Yani bu, bir hakemin tuttuğu kesin sayı değil. Daha çok antrenmanlar arasında karşılaştırılabilir bir yüklenme göstergesi. Bugünün geçen haftadan ağır geçip geçmediğini ya da bu kordajın şimdiye kadar ne kadar yüklendiğini görmek için yeterli. Mutlak değeriyle kullanılacak bir sayı değil.
Birikmiş kayıt hatırlatmayı nasıl besliyor
Bu da haklı bir soruyu gündeme getiriyor: sayı tam değilse, nasıl bir karara temel oluşturabilir? Hatırlatmayı asıl belirleyen şey vuruş sayısı değil, oyun süresi. Süre, antrenmanın başlangıç ve bitişinden alındığı için tahmini değil, ölçülmüş bir değerdir.
Bir antrenman kaydedildiğinde oyun süresi her raket için birikir. String GOAT bu birikmiş süreyi, kordaj türüne ait bir ömür referansıyla karşılaştırır. Polyester, multifilament ve doğal bağırsak farklı sürelerde yorulduğu için her türün kendi referansı vardır ve bu değerler yayımlanmış kaynakların taranmasıyla belirlenmiştir. Bir kordajın kopmadan çok önce performansını kaybedebileceği, Tennis Warehouse University'nin testlerinde de belgelenmiştir.
Burada değişen şey hatırlatmanın ne zaman geldiği değil, neye dayandığıdır. "Örüleli bir ay oldu" yerine dayanak "bu kordaj gerçekte kaç saat yüklendi" oluyor. Ayda bir oynayanla haftada dört kez oynayan artık aynı gün aynı hatırlatmayı almıyor.
Vuruş sayısı da her raket için birikir. Oyun süresinin yanına konduğunda, çok temas görmüş bir kordajla aynı süreyi çok daha az topla geçirmiş bir kordajı birbirinden ayırır.
Gerginlik ölçümleriyle birleştirince karar daha netleşiyor
Saat ve vuruş sayısı tek başına bile takvimden daha isabetlidir. Ama yine de yalnızca kordajın ne kadar kullanıldığını anlatır, şu anda hangi durumda olduğunu değil.
Durum için ayrı bir değer var: örülmenin hemen ardından ölçülen gerginlik ve daha sonra ölçülen DT (dinamik gerginlik, yani kordaj yatağı sertliği). Kordajı kaydederken başlangıç DT değerini girerseniz bu referans noktası olur; sonraki her ölçüm yeni bir nokta ekler.
Saat verisi buna ikinci bir eksen katıyor. Gerginliğin kaç günde ne kadar düştüğünü sormak yerine, kaç top vurulduğunda ne kadar düştüğünü sorabiliyorsunuz. İki ölçüm arasındaki vuruş sayısını saat sağlıyor.
Noktalar biriktikçe String GOAT bu eğriyi uzatarak eşiğe ne zaman ulaşılacağını tahmin eder. Eşik, referansa göre kayıp oranı artı öznel bir puandır; sonuç, tahmini bir kordaj değişim tarihi veya kalan vuruş sayısı olarak çıkar. Gerginlik ölçümleri mevcut olduğunda bu yöntem otomatik olarak kullanılır — hangi sinyalin karar verdiği bir ayar değil, veri kullanılabilirliği meselesidir.
