O Projeto de Ciência de Dados por Trás do Spleft

Métricas Spleeft e1756832747885 1024x740 - O Projeto de Ciência de Dados por Trás do Spleeft

Neste artigo, compartilho — de uma perspectiva técnica e reflexiva — o processo de aprendizado e desenvolvimento por trás da mais recente otimização do algoritmo Spleeft. Explicarei como o sistema original, desenvolvido há quatro anos, funciona e como, ao longo do último mês, refinei seus parâmetros para melhorar tanto a precisão quanto a velocidade de processamento.


BAIXE O APLICATIVO SPLEEFT AGORA PARA iOS, ANDROID E APPLE WATCH!

Como o algoritmo funciona?

O algoritmo Spleeft mede a velocidade vertical integrando dados de aceleração. A fase concêntrica é detectada usando limiares mínimos de velocidade para marcar o início e o fim de uma repetição, sendo necessária uma velocidade de pico mínima de 0,3 m/s para validar o movimento. Essa fase é a mais claramente definida e previsível, o que permite regras de detecção mais precisas.

Para detectar fases estacionárias — essenciais para corrigir a deriva acumulada da integração — utilizo dados de sensores inerciais: acelerômetro, giroscópio e gravidade. Uma fase é considerada estacionária quando os valores desses sensores permanecem abaixo de determinados limiares durante um intervalo de tempo específico.

Esta abordagem metodológica coincide com a que foi posteriormente utilizada por Achermann e outros. em seus estudo de validação do Apple Watch para medição de velocidade da barra.


Contexto e contexto tecnológico

Em literatura científica, acelerômetros tradicionalmente são considerados menos precisos para medição de velocidade em comparação com outras tecnologias. Estudos comparativos mostraram que dispositivos como Beast Sensor ou Push Band apresentam menor precisão do que outras soluções.

No entanto, os acelerômetros são de longe os sensores mais acessíveis, pois são integrados a dispositivos de consumo amplamente utilizados, como smartwatches e wearables. Embora sua confiabilidade para métricas como frequência cardíaca também tenha sido questionada, seu potencial para democratizar o treinamento baseado em velocidade (VBT) é inegável.

Vale ressaltar que a maioria dos estudos comparativos avalia sistemas completos (hardware + software), sem distinguir entre esses dois componentes. Na minha opinião, não é justo atribuir a baixa precisão exclusivamente ao hardware. Um acelerômetro pode fornecer resultados precisos se combinado com um software bem otimizado, projetado especificamente para o tipo de movimento que está sendo analisado. Portanto, antes de descartar uma tecnologia, devemos explorar completamente as possibilidades algorítmicas que ela oferece.

Já existem evidências suficientes que apoiam o uso de IMUs (unidades de medida inercial) para estimar a velocidade de elevação. Empresas como Enode ou Output desenvolveram algoritmos proprietários que alcançam alta precisão. No caso do Apple Watch, diversos estudos validaram seu hardware para essa aplicação, embora tenham usado algoritmos diferentes dos meus. Isso reforça a ideia de que um algoritmo apropriado pode superar as limitações frequentemente atribuídas apenas ao hardware.


Limitações das IMUs para medição de velocidade

Essas limitações surgem em cadeia. O primeiro desafio é identificar a melhor maneira de processar os dados dos sensores inerciais — acelerômetro, giroscópio e magnetômetro — para estimar com precisão a velocidade vertical de uma barra.

Um dos principais problemas é a integração da aceleração. Ao integrar usando o método trapezoidal (amplamente utilizado devido à sua simplicidade), erros sistemáticos conhecidos como deriva acumulam-se ao longo do tempo. Para compensar isso, é necessário identificar momentos de velocidade zero conhecidos — chamados de fases estacionárias — que permitem a correção da deriva.


Processamento de sinal para estimativa de velocidade vertical

Sensores inerciais fornecem dados em três eixos espaciais. No entanto, não basta usar diretamente a componente vertical do acelerômetro, pois esse sensor sozinho não consegue determinar com precisão a direção da força medida. Para solucionar isso, utilizo algoritmos de fusão de sensores como Kalman, Mahony e Madgwick, que fornecem quatérnios de orientação para corrigir o sistema de referência do dispositivo.

Processei dados do Apple Watch e do iPhone usando diferentes algoritmos de orientação e os comparei com um sistema de captura de movimento (STT Systems). Selecionei a combinação que oferecia o melhor equilíbrio entre precisão e eficiência computacional em dispositivos móveis.

Uma vez corrigida a orientação, a aceleração é integrada para obter a velocidade. Para minimizar ainda mais a deriva, testei o uso de um filtro passa-baixa, como o Filtro Butterworth, que é amplamente utilizado em biomecânica.


Atualização de Velocidade Zero (ZUPT)

Durante os testes, descobri que o principal problema não era a correção de orientação ou a integração em si, mas sim a detecção das fases estacionárias necessárias para aplicar o ZUPT. Essas fases devem ser detectadas de forma rápida e confiável, pois sua precisão impacta diretamente a exatidão do sistema.

Não existe um método único para atingir esse objetivo. Por isso, desenvolvi uma abordagem empírica baseada na análise sistemática de múltiplas combinações de parâmetros: quais sensores usar, quais valores limite aplicar e quais janelas de tempo considerar.

Captura de tela 2025 06 16 em 13.13.19
Velocidade vs. tempo Dados brutos do Speeft com desvio e também com a atualização de velocidade zero funcionando.

Otimização de algoritmos usando ciência de dados

Com todas as variáveis definidas, coletei um grande conjunto de dados de repetições de academia no laboratório, armazenando dados brutos de sensores. Simultaneamente, usei um sistema padrão-ouro para comparação. Os exercícios selecionados foram: agachamento com rebote, levantamento terra com pausa (concêntrico e excêntrico) e polia alta. Todas as séries foram realizadas com alto esforço para incluir vários níveis de fadiga e descanso mínimo entre as repetições.

Essa configuração me permitiu otimizar o algoritmo tanto em termos de precisão quanto de velocidade, mesmo em condições com pouca ou nenhuma fase estacionária entre as repetições — o cenário mais desafiador para métodos baseados em integração.

Criei um script Python para explorar sistematicamente 13.486 combinações de parâmetros:

  • Se deve ou não aplicar um filtro passa-baixa e em qual ponto de corte.
  • Parâmetros ZUPT: limites, janelas de tempo e combinações de sensores.
  • Limiares mínimos de velocidade para detecção concêntrica.

Após processar todo o conjunto de dados (o que levou várias horas), analisei separadamente as combinações de melhor desempenho, com base no tipo de exercício, faixa de velocidade e tipo de parada. Meu objetivo não era apenas encontrar a configuração de melhor desempenho, mas também entender melhor o comportamento do sistema para futuras melhorias.

saída2 editada
Saídas do script Python que me ajudaram a identificar os melhores parâmetros para o algoritmo.

Teste de campo

Durante a validação prática, descobri que o principal gargalo era o atraso do algoritmo na detecção da fase estacionária. O feedback dos usuários foi claro: o sistema demorava muito para fornecer o retorno.

Ao revisar muitos gráficos de velocidade-tempo, percebi que no primeira repetição, Não houve praticamente nenhuma deriva — mesmo sem aplicar o ZUPT. Isso ocorre porque a deriva aumenta com o tempo. Perguntei-me: a deriva acumulada é grande o suficiente para afetar significativamente a estimativa da velocidade média?

Captura de tela 2025 06 16 às 21.07.57
Dados de velocidade versus tempo sem desvio significativo entre repetições

Para responder a isso, testei agachamentos com uma fase excêntrica substancial antes da concêntrica. Esperei por uma primeira fase estacionária para calibrar o sistema e, em seguida, realizei repetições consecutivas sem pausa. O resultado foi surpreendente: o erro médio foi de apenas 0,018 m/s, e ainda mais baixo (0,016 m/s) na validação mais recente. A diferença em relação ao valor corrigido foi mínima, mas o tempo de resposta melhorou drasticamente, de 800 ms para 200 ms. Isso permitiu o fornecimento de feedback. imediatamente depois a fase concêntrica, em vez de segundos depois.

Ainda assim, o algoritmo ZUPT permanece ativo. Quando uma nova fase estacionária é detectada, o sinal é recalibrado e qualquer erro acumulado é corrigido. Se ocorrer mais de uma repetição entre as fases estacionárias, os valores corrigidos substituem o feedback inicial para garantir que o usuário sempre receba o resultado mais preciso.


Conclusão

Este projeto baseado em dados permitiu-me otimizar significativamente o algoritmo Spleeft. Consegui reduzir o tempo de resposta para a estimativa da velocidade média sem comprometer a confiabilidade confirmada em validações anteriores. A chave foi combinar a coleta sistemática de dados com uma exploração minuciosa dos parâmetros — entendendo que a qualidade do resultado final depende não apenas do hardware, mas talvez ainda mais do software subjacente.

Iván de Lucas Rogero

Iván de Lucas Rogero

Desempenho Físico MSC e CEO SpeeftApp

Dedicado a melhorar o desempenho atlético e o treinamento de ciclismo, combinando ciência e tecnologia para gerar resultados.

Compartilhe esta publicação:

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Você também pode estar interessado em

pt_PT