Salta al contenuto

HCube: l'app per i wearable sportivi che leggono il corpo

Una patch invisibile cucita nell'abbigliamento sportivo e un'app che ne legge i dati vitali in tempo reale.

HCube (startup incubata dal Politecnico di Torino): logo del cliente
Anno
2024
Cliente
HCube (startup incubata dal Politecnico di Torino)
Settore · Health & SportIoTSoftware su misura

Il problema

HCube è una startup incubata dal Politecnico di Torino, specializzata nella ricerca sportiva e medica. Il progetto che ha ideato e promosso è HTee: una patch che si applica direttamente agli indumenti dell'atleta e ne rileva i principali parametri vitali e prestazionali mentre si allena, in condizioni sportive molto diverse fra loro. L'hardware funzionava. Quello che mancava era l'interfaccia con cui parlargli.

La richiesta era precisa: un'app che raccolga il flusso di dati proveniente dalle patch, lo renda leggibile in tempo reale e lo conservi. Detta così sembra un problema di grafici, ed è invece un problema di trasformazione: passare da una misurazione istantanea, che dura quanto l'allenamento, a un profilo sportivo che si costruisce nel tempo e che al secondo mese dice qualcosa che al primo giorno non poteva dire.

Come l'abbiamo risolto

L'app è in Flutter 3.0, una sola codebase per iOS e Android. Su un prodotto di consumo la ragione sarebbe il costo; qui erano altre due. La prima è la parità: nessuna differenza di comportamento fra le due piattaforme nella lettura di un dato clinico, perché un tracciato non può essere leggermente diverso a seconda del telefono che uno ha in tasca. La seconda è il tempo: arrivare su entrambi gli store con tempi di uscita compatibili con i cicli di validazione dell'hardware, senza che il software diventasse il collo di bottiglia di un percorso che dipende da altro.

Un dato clinico non può comportarsi in due modi diversi su iOS e su Android.

Il punto delicato è il Bluetooth Low Energy. Uno stream continuo ad alta frequenza va tenuto aperto senza prosciugare la batteria, e i parametri di connessione sono esattamente il compromesso fra latenza e consumo: si sceglie dove stare, non si ottengono entrambe le cose. Le differenze fra gli stack di iOS e Android le abbiamo chiuse dietro un'astrazione comune, perché è lì che emergono i problemi veri: permessi, comportamento in background, affidabilità delle notifiche.

Sulla pipeline dei dati il vincolo era uno solo: non perdere precisione fra il sensore e il grafico. I campioni in arrivo si accumulano in buffer circolari a dimensione fissa, così l'occupazione di memoria resta costante anche su una sessione lunga, e gli algoritmi di smoothing attenuano il rumore da movimento e da contatto senza alterare la morfologia del tracciato. È la parte in cui bisogna resistere alla tentazione: un filtro più aggressivo restituisce un tracciato più bello e meno vero, e su un dato clinico è il tipo di miglioramento che non si può accettare.

Acquisizione e parsing dei pacchetti stanno fuori dal thread della UI, perché il carico della ricezione non deve mai tradursi in un grafico che scatta. Il rendering dell'ECG viaggia a 60 fps su canvas custom, con il ridisegno limitato alla finestra temporale visibile invece che a tutta la serie: è il motivo per cui il tracciato resta fluido mentre i dati continuano ad arrivare.

60 fpsil tracciato ECG ridisegnato mentre i dati arrivano, sulla sola finestra visibile
Le schermate dell'app HCube: la patch H-Tee collegata e carica, l'allenamento in corso con il tracciato ECG e i battiti al minuto che scorrono in tempo reale, la scheda di feedback e la pagina degli obiettivi con soglia aerobica, rischio infortuni e VO2.
Durante l'allenamento il tracciato ECG e i battiti scorrono mentre i dati arrivano; dopo, gli stessi numeri diventano soglie e obiettivi da confrontare nel tempo.

Finito l'allenamento comincia l'altro tempo dell'app. Sullo storico si innestano le funzioni che danno valore al dato quando la sessione è chiusa: i miglioramenti o i peggioramenti nel tempo, i programmi di allenamento, la valutazione delle progressioni. Lo storico non è conservato tutto allo stesso modo: una compressione intelligente tiene la risoluzione piena dove serve per rileggere il tracciato e forme aggregate per le viste di trend, che di quella risoluzione non hanno bisogno.

C'è poi un livello che riguarda le persone e non i dispositivi: il preparatore atletico. Si contatta direttamente dall'app e riceve in export l'intero set di dati in un formato analizzabile, per valutarlo e restituire indicazioni su come strutturare o correggere i programmi. È il passaggio che chiude il cerchio, perché un dato biometrico letto da solo dice poco.

I risultati

Il risultato accompagna l'atleta su due tempi diversi. Durante l'allenamento restituisce quello che sta accadendo mentre accade, e l'informazione chiave è la visualizzazione del tracciato ECG. Nel medio periodo gli fa riconoscere i propri margini di miglioramento su dati biometrici precisi, invece che sulle sensazioni. La differenza fra le due cose è tutta la ragione per cui una patch cucita in una maglietta ha bisogno di un'app.

DEEP DIVE TECNICO

App cross-platform in Flutter 3.0, con compatibilità nativa iOS e Android da un'unica codebase: parità funzionale completa fra le due piattaforme e tempi di uscita compatibili con i cicli di validazione dell'hardware. La comunicazione Bluetooth Low Energy è tarata per reggere stream continui ad alta frequenza senza incidere in modo sensibile sulla batteria, scegliendo il compromesso fra latenza e consumo sui parametri di connessione e incapsulando dietro un'astrazione comune le differenze fra gli stack di iOS e Android, che emergono soprattutto su permessi, background e affidabilità delle notifiche. Sulla pipeline dei dati il vincolo era non perdere precisione fra sensore e grafico: i campioni si accumulano in buffer circolari a dimensione fissa, che tengono costante l'occupazione di memoria anche su sessioni lunghe, e gli algoritmi di smoothing attenuano il rumore da movimento e contatto senza alterare la morfologia del tracciato. Acquisizione e parsing dei pacchetti restano fuori dal thread della UI, così il carico della ricezione non produce cali di frame rate. Il rendering dei grafici ECG viaggia a 60 fps su canvas custom, con ridisegno limitato alla finestra temporale visibile. Sullo storico interviene una compressione intelligente, che conserva la risoluzione piena dove serve per rileggere il tracciato e forme aggregate per le viste di trend.

Hai un progetto simile in mente?

Raccontaci cosa vuoi costruire: ti aiutiamo a capire il percorso più veloce.

Parlane con noi
PROGETTI CONSIGLIATI

Potrebbero interessarti anche

Torna a tutti i progetti