{"id":11367,"date":"2026-09-23T09:22:17","date_gmt":"2026-09-23T07:22:17","guid":{"rendered":"https:\/\/spleeft.app\/?p=11367"},"modified":"2026-09-23T09:22:22","modified_gmt":"2026-09-23T07:22:22","slug":"algoritmo-di-calcolo-della-velocita-della-barra-spleeft","status":"publish","type":"post","link":"https:\/\/spleeft.app\/it\/algoritmo-di-calcolo-della-velocita-della-barra-spleeft\/","title":{"rendered":"Miglioramento dell\u2019algoritmo di Spleeft per la velocit\u00e0 del bilanciere con dati reali"},"content":{"rendered":"<p>To improve Spleeft\u2019s bar velocity measurements, I collected recordings alongside a linear encoder during training with the Spanish BMX team in Paris. I rebuilt the iOS algorithm in Python and focused on detecting real rest periods and complete repetitions, where sensor noise could otherwise distort the result.<\/p>\n<p>Ho iniziato a sviluppare Spleeft come progetto personale mentre lavoravo nel campo della preparazione fisica. La programmazione mi ha aiutato a trasformare le idee maturate durante l\u2019attivit\u00e0 di allenatore in uno strumento per misurare la velocit\u00e0 del bilanciere e mi ha offerto un modo per dimostrare ci\u00f2 che ero in grado di fare al di fuori della palestra.<\/p>\n<p>Man mano che l'intelligenza artificiale rendeva la programmazione pi\u00f9 accessibile, ho iniziato a chiedermi dove avrei potuto dare il mio contributo maggiore. La risposta era proprio in quell'ambito che il codice da solo non riusciva a risolvere: interpretare i dati dei sensori e rendere le misurazioni pi\u00f9 affidabili durante l'allenamento reale. Quella domanda mi ha portato al progetto sull'algoritmo che voglio condividere qui.<\/p>\n<p><strong>Prova Spleeft:<\/strong> <a href=\"https:\/\/apps.apple.com\/us\/app\/spleeft\/id1606893985\" target=\"_blank\" rel=\"noopener\">Scarica Spleeft dall'App Store<\/a> per monitorare la velocit\u00e0 del bilanciere con il tuo iPhone o Apple Watch.<\/p>\n<h2>Il problema della velocit\u00e0 della barra: deriva e false pause<\/h2>\n<p>La precedente ottimizzazione di Spleeft, che ho descritto in <a href=\"https:\/\/spleeft.app\/data-science-project-behind-spleeft-vbt-ios\/\" target=\"_blank\">l'articolo originale sulla scienza dei dati<\/a>, aveva una portata pi\u00f9 limitata. Mi sono concentrato principalmente sulla regolazione dei parametri di un algoritmo esistente e sull\u2019individuazione di combinazioni che ne migliorassero le prestazioni.<\/p>\n<p>Quel lavoro \u00e8 stato prezioso, ma dopo aver dedicato pi\u00f9 tempo a testare Spleeft in contesti formativi reali, ho iniziato a intravedere un problema pi\u00f9 profondo.<\/p>\n<p>La difficolt\u00e0 principale non consisteva semplicemente nel calcolare la velocit\u00e0.<\/p>\n<p>Si trattava di capire quando un movimento aveva inizio, quando terminava e quando il dispositivo era davvero immobile.<\/p>\n<p>Spleeft utilizza i dati dell'accelerometro. Per calcolare la velocit\u00e0, \u00e8 necessario integrare l'accelerazione nel tempo. Si tratta di un approccio matematicamente elegante, ma che comporta anche un problema inevitabile: anche una minima deviazione o un minimo errore nel segnale di accelerazione si accumula durante l'integrazione e si traduce in una deriva della velocit\u00e0.<\/p>\n<p>Tale scostamento pu\u00f2 derivare da diverse cause:<\/p>\n<ul>\n<li>rumore del sensore;<\/li>\n<li>piccole variazioni nell'orientamento del dispositivo;<\/li>\n<li>variazioni nel piano di movimento;<\/li>\n<li>errore di integrazione;<\/li>\n<li>filtraggio imperfetto;<\/li>\n<li>vibrazioni provenienti dall'atleta o dal bilanciere;<\/li>\n<li>periodi di bassa accelerazione mentre la barra \u00e8 ancora in movimento.<\/li>\n<\/ul>\n<p>L'ultimo punto \u00e8 particolarmente importante. Un'accelerazione prossima allo zero non significa sempre che la velocit\u00e0 sia pari a zero. Pu\u00f2 anche significare che la barra si sta muovendo a una velocit\u00e0 relativamente costante.<\/p>\n<p>Therefore, the real challenge was not simply to find \u201cmore zeros\u201d.<\/p>\n<p>Lo scopo era quello di trovare zeri migliori.<\/p>\n<p>Lo zero \u00e8 un punto di riferimento che pu\u00f2 essere utilizzato per ricalibrare il segnale di velocit\u00e0 integrato. Se lo zero prima di una ripetizione \u00e8 errato, l'integrazione parte da un punto sbagliato. Se all'interno di una ripetizione si verifica uno zero errato, il movimento potrebbe essere interrotto o ricalibrato troppo presto.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"487\" src=\"https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/deadlift-velocity-fixed-4-reps-1024x487.png\" alt=\"Velocit\u00e0 verticale nel corso di quattro ripetizioni di stacco da terra; la registrazione originale \u00e8 rappresentata in grigio, mentre il segnale corretto dalla deriva \u00e8 rappresentato in verde acqua\" class=\"wp-image-11364\" title=\"\" srcset=\"https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/deadlift-velocity-fixed-4-reps-1024x487.png 1024w, https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/deadlift-velocity-fixed-4-reps-300x143.png 300w, https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/deadlift-velocity-fixed-4-reps-2000x951.png 2000w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Quattro ripetizioni di stacco: la curva grigia si allontana dallo zero tra un movimento e l\u2019altro, mentre la curva corretta torna pi\u00f9 vicina allo zero durante le pause.<\/figcaption><\/figure>\n\n\n<p>Ci\u00f2 ha portato alla definizione di un nuovo principio per il progetto:<\/p>\n<blockquote>\n<p>Per prima cosa, migliorare la qualit\u00e0 del rilevamento dello stato di riposo e della segmentazione delle ripetizioni. Successivamente, valutare la velocit\u00e0.<\/p>\n<\/blockquote>\n<h2>Raccolta dei dati sulla velocit\u00e0 delle barre a Parigi<\/h2>\n<p>Il primo passo \u00e8 stato quello di procurarsi un dispositivo di riferimento da utilizzare insieme a Spleeft.<\/p>\n<p>Un noto produttore di encoder lineari aveva lanciato sul mercato un dispositivo in grado di fornire non solo i dati relativi alla velocit\u00e0, ma anche i dati grezzi che potevano essere raccolti in un contesto di allenamento reale. Era esattamente ci\u00f2 di cui avevo bisogno.<\/p>\n<p>Durante un ritiro con la nazionale spagnola di BMX a Parigi, ho raccolto un ampio set di dati mentre svolgevo diversi esercizi:<\/p>\n<ul>\n<li>squat;<\/li>\n<li>stacchi da terra;<\/li>\n<li>power clean;<\/li>\n<li>salti da accovacciata;<\/li>\n<li>altri esercizi di potenziamento misti.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" width=\"576\" height=\"1024\" src=\"https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/paris-data-collection-576x1024.jpg\" alt=\"Raccolta dei dati relativi all&#039;allenamento di forza durante il ritiro della nazionale spagnola di BMX a Parigi\" class=\"wp-image-11365\" style=\"width:320px;height:auto\" title=\"\" srcset=\"https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/paris-data-collection-576x1024.jpg 576w, https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/paris-data-collection-169x300.jpg 169w, https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/paris-data-collection.jpg 900w\" sizes=\"(max-width: 576px) 100vw, 576px\" \/><figcaption class=\"wp-element-caption\">Raccolta dei dati relativi all'allenamento di forza durante il ritiro della nazionale spagnola di BMX a Parigi.<\/figcaption><\/figure>\n\n\n<p>Le misurazioni sono state raccolte contemporaneamente:<\/p>\n<ul>\n<li>Spleeft ha registrato dati provenienti da accelerometri ad alta frequenza, comprese sessioni con frequenze fino a 800 Hz;<\/li>\n<li>l'encoder lineare registrava a circa 100 Hz.<\/li>\n<\/ul>\n<p>Non si trattava di una serie di dati di laboratorio raccolti in condizioni perfettamente controllate. Era una scelta deliberata.<\/p>\n<p>Volevo capire cosa succedesse quando il sistema veniva utilizzato negli ambienti in cui gli allenatori lo avrebbero effettivamente impiegato: con esercizi diversi, carichi diversi, pause diverse, strategie di movimento diverse e fonti di rumore diverse.<\/p>\n<p>Il set di dati mi ha inoltre permesso di confrontare due tipi di misurazione molto diversi tra loro.<\/p>\n<p>L'encoder misura il movimento lungo un percorso meccanico pi\u00f9 ben definito. L'Apple Watch o l'iPhone misurano le forze che agiscono sul dispositivo, sulla barra e, indirettamente, sull'atleta. Non rilevano esattamente lo stesso segnale.<\/p>\n<p>Quella differenza \u00e8 diventata una delle lezioni pi\u00f9 importanti del progetto.<\/p>\n<h2>Riscrittura di Spleeft in Python<\/h2>\n<p>Prima di ottimizzare qualsiasi cosa, ho dovuto riprodurre l'algoritmo iOS esistente al di fuori dell'applicazione.<\/p>\n<p>Sembra semplice, ma \u00e8 stata una delle parti pi\u00f9 importanti dell\u2019intero processo.<\/p>\n<p>L'algoritmo di produzione gira in Swift su iPhone e Apple Watch. Il lavoro di ottimizzazione, tuttavia, \u00e8 stato molto pi\u00f9 semplice da svolgere in Python, dove ho potuto elaborare grandi set di dati, generare grafici e testare migliaia o milioni di combinazioni di parametri.<\/p>\n<p>Il problema era che un'approssimazione in Python non sarebbe stata sufficiente.<\/p>\n<p>Se la versione in Python si comportasse in modo diverso da quella in Swift, non starei ottimizzando Spleeft. Starei ottimizzando un algoritmo diverso.<\/p>\n<p>Cos\u00ec ho sviluppato un simulatore in Python che riproduceva le principali fasi di elaborazione dell\u2019implementazione per iOS:<\/p>\n<ol>\n<li>lettura dei dati dell'accelerometro e dei dati di movimento;<\/li>\n<li>ricostruzione della velocit\u00e0;<\/li>\n<li>rilevare gli aggiornamenti a velocit\u00e0 zero;<\/li>\n<li>compensazione della deriva del segnale;<\/li>\n<li>segmentazione delle ripetizioni;<\/li>\n<li>calcolo della velocit\u00e0 media e di altri parametri.<\/li>\n<\/ol>\n<p>Ho quindi verificato il simulatore confrontandolo con l'output di Swift. L'obiettivo non era quello di ottenere un risultato simile, ma di assicurarmi che lo stesso segnale grezzo producesse le stesse ripetizioni e metriche praticamente identiche.<\/p>\n<p>Solo dopo questa fase l'ottimizzazione avrebbe potuto assumere un senso.<\/p>\n<h2>Oltre il rilevatore di zero originale<\/h2>\n<p>La prima versione dell'algoritmo prevedeva gi\u00e0 la ricalibrazione a velocit\u00e0 zero, ma la sua logica era relativamente semplice.<\/p>\n<p>Ha funzionato bene in situazioni controllate. Tuttavia, alcuni esercizi ne hanno messo in luce i punti deboli. La distensione su panca e lo stacco da terra si sono rivelati particolarmente impegnativi, poich\u00e9 il dispositivo pu\u00f2 subire movimenti aggiuntivi mentre l\u2019atleta stabilizza il bilanciere.<\/p>\n<p>Ho iniziato a esaminare approcci alternativi per il rilevamento della velocit\u00e0 zero attingendo alla letteratura scientifica e alle applicazioni correlate nel campo della navigazione inerziale.<\/p>\n<p>Tra le idee figuravano:<\/p>\n<ul>\n<li>accelerazione filtrata su pi\u00f9 assi;<\/li>\n<li>informazioni sul giroscopio;<\/li>\n<li>requisiti di persistenza tra campioni consecutivi;<\/li>\n<li>energia cinetica;<\/li>\n<li>controlli basati sulla deriva;<\/li>\n<li>rilevatori statistici conservativi;<\/li>\n<li>soglie diverse a seconda delle diverse fasi del movimento.<\/li>\n<\/ul>\n<p>Non tutte le idee hanno funzionato.<\/p>\n<p>Ad esempio, ho studiato un classificatore dello stato inerziale basato su un albero decisionale. Si \u00e8 trattato di un utile esperimento di data science, ma le sue prestazioni non erano abbastanza affidabili da giustificarne l\u2019utilizzo come criterio di esclusione definitivo nell\u2019algoritmo di produzione.<\/p>\n<p>Si trattava di una distinzione importante.<\/p>\n<p>Il progetto prevedeva esperimenti di apprendimento automatico e metodi di data science, ma la soluzione finale implementata non era un modello \u201cblack-box\u201d che si limitava a classificare ogni campione. Il processo di data science mi ha aiutato a comprendere il segnale, a identificare le modalit\u00e0 di guasto e a progettare una macchina a stati causali pi\u00f9 robusta.<\/p>\n<p>Il sistema finale \u00e8 rimasto interpretabile.<\/p>\n<h2>Cercare tra milioni di possibilit\u00e0<\/h2>\n<p>Una volta che il simulatore e i possibili rivelatori erano disponibili, ho iniziato a eseguire ricerche sistematiche dei parametri.<\/p>\n<p>Per ciascuna configurazione candidata, gli stessi segnali grezzi sono stati elaborati nuovamente. I parametri controllavano aspetti quali:<\/p>\n<ul>\n<li>soglie di accelerazione;<\/li>\n<li>il numero minimo di campioni consecutivi;<\/li>\n<li>comportamento di filtraggio;<\/li>\n<li>regole di inserimento dei movimenti;<\/li>\n<li>regole relative ai movimenti e alle uscite;<\/li>\n<li>la quantit\u00e0 di prove necessarie prima della ricalibrazione;<\/li>\n<li>come il sistema gestiva le transizioni tra movimento e riposo.<\/li>\n<\/ul>\n<p>La ricerca non era finalizzata a individuare la configurazione con l'errore di velocit\u00e0 pi\u00f9 basso rispetto all'encoder.<\/p>\n<p>Sarebbe stato troppo limitato.<\/p>\n<p>L'obiettivo principale era quello di individuare la combinazione che consentisse di rilevare al meglio i periodi di velocit\u00e0 zero effettivi, evitando al contempo i falsi zeri durante il movimento attivo.<\/p>\n<p>La valutazione si \u00e8 svolta secondo un processo a cascata:<\/p>\n<ol>\n<li>Gli zeri effettivi sono stati rilevati correttamente?<\/li>\n<li>Le ripetizioni sono state suddivise in segmenti e conteggiate correttamente?<\/li>\n<li>Una volta soddisfatte le prime due condizioni, quanto erano vicine le metriche di velocit\u00e0 al riferimento esterno?<\/li>\n<\/ol>\n<p>Questo ordine \u00e8 importante.<\/p>\n<p>Una ripetizione con una velocit\u00e0 vicina a quella dell'encoder non \u00e8 necessariamente una ripetizione misurata correttamente se il suo inizio o la sua fine sono stati definiti da uno zero falso.<\/p>\n<p>I numeri rappresentavano solo una parte dei criteri con cui valutavo ogni esperimento. Tenevo visibili sia le registrazioni grezze che le tracce di velocit\u00e0 risultanti, poi le confrontavo con i movimenti che avevo osservato durante il mio allenamento e nelle prove con i miei atleti. Quando c\u2019era una pausa evidente, potevo verificare se l\u2019algoritmo riportasse la velocit\u00e0 a zero. Quando una ripetizione era ancora in movimento, riuscivo a individuare una correzione errata. Quei semplici controlli visivi spesso mi fornivano pi\u00f9 informazioni sulla modifica successiva da apportare rispetto a un altro punteggio di errore.<\/p>\n<h2>Una macchina a stati per il movimento<\/h2>\n<p>Uno dei principali miglioramenti dal punto di vista dell'architettura \u00e8 stato l'aggiunta di una macchina a stati per integrare il rilevamento dello zero.<\/p>\n<p>L'algoritmo ora analizza il movimento come una sequenza di stati, anzich\u00e9 trattare ogni campione in modo indipendente.<\/p>\n<p>In parole povere, passa attraverso fasi quali:<\/p>\n<ul>\n<li>alla ricerca dell'inizio del movimento;<\/li>\n<li>rilevato movimento;<\/li>\n<li>alla ricerca della fine del movimento;<\/li>\n<li>che confermi un vero riposo post-movimento;<\/li>\n<li>ricalibrare il segnale.<\/li>\n<\/ul>\n<p>Questa struttura contribuisce a evitare che singoli eventi dei sensori modifichino immediatamente l'interpretazione della ripetizione.<\/p>\n<p>Ad esempio, un breve periodo di bassa accelerazione durante il movimento di una barra non dovrebbe essere automaticamente interpretato come un momento di riposo. Il sistema necessita di ulteriori indicazioni: la direzione del segnale, la durata dell\u2019evento e il contesto pi\u00f9 ampio del movimento.<\/p>\n<p>La macchina a stati mi ha inoltre permesso di separare due concetti che in precedenza erano troppo strettamente collegati:<\/p>\n<ul>\n<li>rilevare se la barra si sta muovendo;<\/li>\n<li>stabilire se la velocit\u00e0 integrata possa essere ricalibrata.<\/li>\n<\/ul>\n<p>Ci\u00f2 si \u00e8 rivelato particolarmente utile perch\u00e9 lo stato di movimento pu\u00f2 rimanere attivo anche quando l'accelerazione \u00e8 temporaneamente vicina allo zero.<\/p>\n<h2>What the encoder could\u2014and could not\u2014tell me<\/h2>\n<p>Ho utilizzato l'encoder come riferimento esterno, ma non come verit\u00e0 assoluta.<\/p>\n<p>For every repetition, I processed the encoder data using a comparable methodology rather than simply copying the metrics exported by its proprietary algorithm. This reduced the influence of differences between the encoder\u2019s internal processing and Spleeft\u2019s processing.<\/p>\n<p>Anche allora, l'encoder veniva considerato un punto di riferimento, non uno standard assoluto.<\/p>\n<p>I diversi dispositivi presentano filtri, ritardi, regole di rilevamento e vincoli meccanici diversi. Inoltre, il segnale esportato potrebbe non corrispondere esattamente al segnale utilizzato internamente per calcolare ciascuna metrica.<\/p>\n<p>Ecco perch\u00e9 ho deciso di non definire il successo semplicemente come:<\/p>\n<blockquote>\n<p>\u201cThe Spleeft value is close to the encoder value.\u201d<\/p>\n<\/blockquote>\n<p>Ho cercato invece un algoritmo che fosse internamente coerente, in grado di rilevare correttamente le ripetizioni e che funzionasse in modo affidabile in diversi esercizi e in diverse condizioni di registrazione.<\/p>\n<p>L'encoder mi ha aiutato a individuare gli errori e ad analizzare i casi pi\u00f9 complessi. Non ha sostituito il pensiero critico.<\/p>\n<h2>Test dell\u2019algoritmo con dati reali degli utenti<\/h2>\n<p>Dopo gli esperimenti di laboratorio, sono tornato ad analizzare i dati raccolti al di fuori delle sessioni controllate.<\/p>\n<p>Alcuni dei file pi\u00f9 utili provenivano da utenti di Spleeft che avevano condiviso esempi di casi in cui l'applicazione aveva prodotto un risultato inaspettato.<\/p>\n<p>Questi file erano preziosi perch\u00e9 contenevano i problemi che si presentano nella vita reale:<\/p>\n<ul>\n<li>pause imperfette;<\/li>\n<li>vibrazioni impreviste della barra;<\/li>\n<li>ripetizioni lente;<\/li>\n<li>diverse posizioni di fissaggio;<\/li>\n<li>cambiamenti nella tecnica;<\/li>\n<li>rumore prima o dopo la ripetizione;<\/li>\n<li>esercizi che non assomigliano allo squat.<\/li>\n<\/ul>\n<p>Ho applicato il nuovo algoritmo a questi set di dati storici e ne ho confrontato il comportamento con quello dell'implementazione precedente.<\/p>\n<p>Questa fase ha contribuito a mettere in luce un principio importante: migliorare l\u2019algoritmo non significa renderlo pi\u00f9 complesso a tutti i costi. Significa rendere la logica pi\u00f9 adeguata alla realt\u00e0 fisica del sensore e dell\u2019esercizio.<\/p>\n<p>Quell'esperienza ha anche contribuito a plasmare <a href=\"https:\/\/spleeft.app\/smart-zero-apple-watch-control-vbt-update\/\" target=\"_blank\">l'ultimo aggiornamento di Spleeft<\/a>. <a href=\"https:\/\/spleeft.app\/accurate-velocity-with-spleeft\/\" target=\"_blank\">Le misurazioni dell'accelerometro presentano dei limiti<\/a>, anche dopo un'attenta ottimizzazione, quindi volevo che i coach potessero esaminare le registrazioni sottostanti e valutare se un risultato fosse attendibile nel proprio contesto.<\/p>\n<h2>Testing on a \u20ac40 Apple Watch SE<\/h2>\n<p>Volevo inoltre testare il nuovo algoritmo su un vero Apple Watch, anzich\u00e9 affidarmi esclusivamente alle simulazioni in Python.<\/p>\n<p>To keep the project aligned with Spleeft\u2019s original philosophy, I bought a second-hand Apple Watch SE for approximately \u20ac40. It was one of the least expensive models capable of running the application and processing the signal in real time.<\/p>\n\n\n<figure class=\"wp-block-image aligncenter size-large is-resized\"><img decoding=\"async\" width=\"768\" height=\"1024\" src=\"https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/apple-watch-encoder-on-bar-768x1024.jpg\" alt=\"Apple Watch fissato a una barra durante un test sul campo con un encoder lineare\" class=\"wp-image-11366\" style=\"width:360px;height:auto\" title=\"\" srcset=\"https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/apple-watch-encoder-on-bar-768x1024.jpg 768w, https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/apple-watch-encoder-on-bar-225x300.jpg 225w, https:\/\/spleeft.app\/wp-content\/uploads\/2026\/09\/apple-watch-encoder-on-bar.jpg 1200w\" sizes=\"(max-width: 768px) 100vw, 768px\" \/><figcaption class=\"wp-element-caption\">Apple Watch montato sulla barra accanto all'encoder durante un test sul campo.<\/figcaption><\/figure>\n\n\n<p>Non si \u00e8 trattato solo di una prova pratica.<\/p>\n<p>Spleeft \u00e8 sempre stato concepito partendo dall'idea che l'allenamento basato sulla velocit\u00e0 debba essere accessibile a tutti. Se un nuovo algoritmo funzionasse solo sui dispositivi pi\u00f9 costosi o in un ambiente di laboratorio perfetto, non sarebbe in linea con lo scopo del progetto.<\/p>\n<p>Durante i test sul campo, ho messo a confronto due posizionamenti:<\/p>\n<ul>\n<li>the watch on the athlete\u2019s wrist;<\/li>\n<li>l'orologio fissato direttamente alla barra.<\/li>\n<\/ul>\n<p>Questo ha dimostrato quanto possa essere importante il posizionamento dei sensori.<\/p>\n<p>In deadlifts and bench press, the movement of the athlete\u2019s wrist can introduce additional noise. The athlete is holding and stabilising the bar, so the sensor is not only measuring the bar\u2019s vertical movement. It is also measuring small movements from the hand, wrist and body.<\/p>\n<p>Appoggiando l'orologio direttamente sulla barra, il rumore si \u00e8 in parte attenuato.<\/p>\n<p>Ci\u00f2 non significa che la posizione della barra sia sempre l'opzione migliore, n\u00e9 che quella del polso sia errata. Significa piuttosto che anche l'algoritmo ottimale deve tenere conto dei limiti dell'hardware e delle modalit\u00e0 di utilizzo del dispositivo.<\/p>\n<p>Nessuna applicazione della scienza dei dati pu\u00f2 compensare completamente una configurazione di misurazione inadeguata.<\/p>\n<h2>What changed in Spleeft\u2019s algorithm<\/h2>\n<p>Il nuovo algoritmo ha superato la fase beta. La vera prova del nove sar\u00e0 verificare la sua affidabilit\u00e0 in diversi esercizi, dispositivi e contesti di allenamento. Vorrei che fossero gli allenatori stessi a valutarlo.<\/p>\n<p>Vorrei inoltre chiarire cosa si nasconde dietro quel numero: Spleeft utilizza i periodi di riposo rilevati per limitare la deriva della velocit\u00e0 e una macchina a stati per identificare le ripetizioni. Abbiamo verificato tali decisioni confrontandole con sessioni registrate e dispositivi esterni. Condivido l\u2019approccio mantenendo riservati i parametri esatti.<\/p>\n<h2>Cosa ho imparato<\/h2>\n<p>Questo progetto mi ha insegnato che un indicatore di velocit\u00e0 efficace non dipende solo da un algoritmo ingegnoso. Dipende dal sensore, dall\u2019esercizio, dalla qualit\u00e0 dei dati e dalle decisioni prese in ogni fase. L\u2019intelligenza artificiale mi ha aiutato a esplorare e sviluppare pi\u00f9 rapidamente, ma l\u2019esperienza di coaching \u00e8 stata fondamentale per stabilire quali fossero i problemi davvero rilevanti.<\/p>\n<p>Spleeft \u00e8 ancora un progetto personale nato proprio da quella curiosit\u00e0. Continuer\u00f2 a testarlo durante gli allenamenti reali e a condividere ci\u00f2 che imparo.<\/p>\n<p>\u00a0<\/p>","protected":false},"excerpt":{"rendered":"<p>Come ho utilizzato i dati dell'Apple Watch, un encoder lineare e alcune registrazioni effettuate a Parigi per migliorare il rilevamento delle pause, la segmentazione delle ripetizioni e il monitoraggio della velocit\u00e0 della barra in Spleeft.<\/p>","protected":false},"author":1,"featured_media":11366,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[142],"tags":[67,21],"class_list":["post-11367","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-case-studies","tag-apple-watch","tag-vbt"],"_links":{"self":[{"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/posts\/11367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/comments?post=11367"}],"version-history":[{"count":4,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/posts\/11367\/revisions"}],"predecessor-version":[{"id":11372,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/posts\/11367\/revisions\/11372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/media\/11366"}],"wp:attachment":[{"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/media?parent=11367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/categories?post=11367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spleeft.app\/it\/wp-json\/wp\/v2\/tags?post=11367"}],"curies":[{"name":"parola chiave","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}