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

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, ajustei 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 Speeft mede a velocidade vertical integrando dados de aceleração. A fase concêntrica é detectada usando limites mínimos de velocidade para marcar o início e o fim de uma repetição, e uma velocidade de pico mínima de 0,3 m/s é necessária para validar o movimento. Esta 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 o desvio acumulado 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 certos limites por uma janela de tempo específica.

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 apenas ao hardware. Um acelerômetro pode fornecer resultados precisos se combinado com um software bem otimizado, projetado especificamente para o tipo de movimento 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 uma cadeia. O primeiro desafio é identificar a melhor maneira de processar dados de 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 conhecidos de velocidade zero — conhecidos como 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 este sensor sozinho não consegue determinar com precisão a direção da força medida. Para resolver isso, utilizo algoritmos de fusão de sensores como Kalman, Mahony e Madgwick, que fornecem quatérnios de orientação para corrigir o referencial 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 de 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 precisã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 para precisão quanto para velocidade, mesmo sob condições com pouca ou nenhuma fase estacionária entre 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.

Depois de executar o conjunto de dados completo (o que levou várias horas), analisei as combinações de melhor desempenho separadamente, com base no tipo de exercício, na faixa de velocidade e no 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 em detectar a fase estacionária. O feedback do usuário foi claro: o sistema demorava muito para fornecer o feedback.

Ao revisar muitos gráficos de velocidade-tempo, percebi que no primeira repetição, quase não houve desvio — mesmo sem aplicar o ZUPT. Isso ocorre porque o desvio aumenta com o tempo. Eu me perguntei: o desvio acumulado é 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 que o feedback fosse fornecido 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 me permitiu otimizar significativamente o algoritmo Spleeft. Reduzi com sucesso o tempo de resposta para a estimativa da velocidade média sem comprometer a confiabilidade confirmada em validações anteriores. O segredo foi combinar a coleta sistemática de dados com a exploração completa dos parâmetros — entendendo que a qualidade do resultado final depende não apenas do hardware, mas talvez ainda mais do software por trás dele.

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 receita:

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

salto em altura, salto vertical
Geral

7 exercícios para melhorar seu salto vertical

O salto vertical é um indicador fundamental de quão alto você consegue elevar seu centro de massa a partir de uma posição ereta. É um fator crucial

Estudos de caso

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

Neste artigo, compartilho — de uma perspectiva técnica e reflexiva — o processo de aprendizagem e desenvolvimento por trás da mais recente otimização do Speeft

pt_PT