El proyecto de ciencia de datos detrás de Spleeft

En este artículo, comparto, desde una perspectiva técnica y reflexiva, el proceso de aprendizaje y desarrollo tras la última optimización del algoritmo Spleeft. Explicaré cómo funciona el sistema original, desarrollado hace cuatro años, y cómo, durante el último mes, he perfeccionado sus parámetros para mejorar tanto la precisión como la velocidad de procesamiento.


¡DESCARGA LA APLICACIÓN SPLEEFT AHORA PARA iOS, ANDROID Y APPLE WATCH!

¿Cómo funciona el algoritmo?

El algoritmo Spleeft mide la velocidad vertical integrando datos de aceleración. La fase concéntrica se detecta mediante umbrales de velocidad mínima para marcar el inicio y el final de una repetición, y se requiere una velocidad pico mínima de 0,3 m/s para validar el movimiento. Esta fase es la más definida y predecible, lo que permite reglas de detección más precisas.

Para detectar fases estacionarias, esenciales para corregir la deriva acumulada por la integración, utilizo datos de sensores inerciales: acelerómetro, giroscopio y gravedad. Una fase se considera estacionaria cuando los valores de estos sensores se mantienen por debajo de ciertos umbrales durante un período de tiempo específico.

Este enfoque metodológico coincide con el utilizado posteriormente por Achermann y otros. en su Estudio de validación del Apple Watch para medir la velocidad de la barra.


Antecedentes y contexto tecnológico

En literatura científicaTradicionalmente, los acelerómetros se han considerado menos precisos para medir la velocidad que otras tecnologías. Estudios comparativos han demostrado que dispositivos como Beast Sensor o Push Band ofrecen menor precisión que otras soluciones.

Sin embargo, los acelerómetros son, con diferencia, los sensores más accesibles, ya que están integrados en dispositivos de consumo de uso generalizado, como relojes inteligentes y wearables. Si bien su fiabilidad para métricas como la frecuencia cardíaca también ha sido cuestionada, su potencial para democratizar el entrenamiento basado en la velocidad (VBT) es innegable.

Cabe destacar que la mayoría de los estudios comparativos evalúan sistemas completos (hardware + software), sin distinguir entre estos dos componentes. En mi opinión, no es justo atribuir la baja precisión únicamente al hardware. Un acelerómetro puede proporcionar resultados precisos si se combina con un software bien optimizado y diseñado específicamente para el tipo de movimiento analizado. Por lo tanto, antes de descartar una tecnología, debemos explorar a fondo sus posibilidades algorítmicas.

Ya existe suficiente evidencia que respalda el uso de unidades de medición inercial (IMU) para estimar la velocidad de sustentación. Empresas como Enode o Output han desarrollado algoritmos propios que logran una alta precisión. En el caso del Apple Watch, múltiples estudios han validado su hardware para esta aplicación, a pesar de utilizar algoritmos diferentes a los míos. Esto refuerza la idea de que un algoritmo adecuado puede superar las limitaciones que a menudo se atribuyen únicamente al hardware.


Limitaciones de las IMU para medir la velocidad

Estas limitaciones surgen en una cadena. El primer desafío es identificar la mejor manera de procesar los datos de los sensores inerciales (acelerómetro, giroscopio y magnetómetro) para estimar con precisión la velocidad vertical de una barra.

Uno de los principales problemas es la integración de la aceleración. Al integrar mediante el método trapezoidal (ampliamente utilizado debido a su simplicidad), se producen errores sistemáticos conocidos como deriva Se acumulan con el tiempo. Para compensar esto, es necesario identificar momentos de velocidad cero conocidos, conocidos como fases estacionarias, que permiten corregir la deriva.


Procesamiento de señales para estimar la velocidad vertical

Los sensores inerciales proporcionan datos en tres ejes espaciales. Sin embargo, no basta con usar directamente el componente vertical del acelerómetro, ya que este sensor por sí solo no puede determinar con precisión la dirección de la fuerza medida. Para solucionar esto, utilizo algoritmos de fusión de sensores como Kalman, Mahony y Madgwick, que proporcionan cuaterniones de orientación para corregir el sistema de referencia del dispositivo.

Procesé datos del Apple Watch y del iPhone con diferentes algoritmos de orientación y los comparé con un sistema de captura de movimiento (STT Systems). Seleccioné la combinación que ofrecía el mejor equilibrio entre precisión y eficiencia computacional en dispositivos móviles.

Una vez corregida la orientación, se integra la aceleración para obtener la velocidad. Para minimizar aún más la deriva, probé el uso de un filtro paso bajo, como el Filtro Butterworth, que se utiliza ampliamente en biomecánica.


Actualización de velocidad cero (ZUPT)

Durante las pruebas, descubrí que el problema principal no era la corrección de la orientación ni la integración en sí, sino la detección de las fases estacionarias necesarias para aplicar ZUPT. Estas fases deben detectarse de forma rápida y fiable, ya que su exactitud afecta directamente a la precisión del sistema.

No existe un único método para lograrlo. Por lo tanto, desarrollé un enfoque empírico basado en el análisis sistemático de múltiples combinaciones de parámetros: qué sensores utilizar, qué valores umbral aplicar y qué ventanas de tiempo considerar.

Captura de pantalla 2025 06 16 a las 13.13.19
Velocidad vs. tiempo Datos brutos de Spleeft con deriva y también con la actualización de velocidad cero funcionando.

Optimización de algoritmos mediante ciencia de datos

Con todas las variables definidas, recopilé un amplio conjunto de datos de repeticiones en el gimnasio en el laboratorio, almacenando los datos sin procesar de los sensores. Simultáneamente, utilicé un sistema de referencia para la comparación. Los ejercicios seleccionados fueron: sentadilla con rebote, peso muerto con pausa (concéntrico y excéntrico) y polea dorsal. Todas las series se realizaron con un alto esfuerzo para incluir diversos niveles de fatiga y un descanso mínimo entre repeticiones.

Esta configuración me permitió optimizar el algoritmo tanto en precisión como en velocidad, incluso en condiciones con poca o ninguna fase estacionaria entre repeticiones: el escenario más desafiante para los métodos basados en integración.

Creé un script de Python para explorar sistemáticamente 13.486 combinaciones de parámetros:

  • Si se debe aplicar o no un filtro de paso bajo y en qué punto de corte.
  • Parámetros ZUPT: umbrales, ventanas de tiempo y combinaciones de sensores.
  • Umbrales de velocidad mínima para detección concéntrica.

Tras ejecutar el conjunto de datos completo (lo que me llevó varias horas), analicé por separado las combinaciones con mejor rendimiento, según el tipo de ejercicio, el rango de velocidad y el tipo de parada. Mi objetivo no solo era encontrar la configuración con mejor rendimiento, sino también comprender mejor el comportamiento del sistema para futuras mejoras.

salida2 editada
Resultados del script de Python que me ayudaron a identificar los mejores parámetros para el algoritmo.

Pruebas de campo

Durante la validación práctica, descubrí que el principal obstáculo era la demora del algoritmo en detectar la fase estacionaria. La respuesta de los usuarios fue clara: el sistema tardaba demasiado en proporcionar la información.

Al revisar muchos gráficos de velocidad-tiempo, noté que en el primera repeticiónCasi no hubo deriva, incluso sin aplicar ZUPT. Esto se debe a que la deriva aumenta con el tiempo. Me pregunté: ¿es la deriva acumulada lo suficientemente grande como para afectar significativamente la estimación de la velocidad promedio?

Captura de pantalla 2025 06 16 a las 21.07.57
Datos de velocidad frente a tiempo sin una desviación significativa entre repeticiones

Para responder a esta pregunta, probé sentadillas con una fase excéntrica considerable antes de la concéntrica. Esperé una primera fase estacionaria para calibrar el sistema y luego realicé repeticiones consecutivas sin pausa. El resultado fue sorprendente: el error promedio fue de solo 0,018 m/s, y aún más abajo (0,016 m/s) en la última validación. La diferencia con el valor corregido fue mínima, pero el tiempo de respuesta mejoró drásticamente, de 800 ms a 200 ms. Esto permitió obtener retroalimentación. inmediatamente después la fase concéntrica, en lugar de segundos después.

Aun así, el algoritmo ZUPT permanece activo. Al detectar una nueva fase estacionaria, la señal se recalibra y se corrige cualquier error acumulado. Si se produce más de una repetición entre fases estacionarias, los valores corregidos sobrescriben la retroalimentación inicial para garantizar que el usuario siempre reciba el resultado más preciso.


Conclusión

Este proyecto basado en datos me permitió optimizar significativamente el algoritmo Spleeft. Reduje con éxito el tiempo de respuesta para la estimación de la velocidad promedio sin comprometer la fiabilidad confirmada en validaciones anteriores. La clave fue combinar la recopilación sistemática de datos con una exploración exhaustiva de parámetros, entendiendo que la calidad del resultado final depende no solo del hardware, sino quizás aún más del software que lo sustenta.

Iván de Lucas Rogero

Iván de Lucas Rogero

Aplicación de rendimiento físico y CEO de MSC

Dedicado a mejorar el rendimiento atlético y el entrenamiento ciclista, combinando ciencia y tecnología para impulsar resultados.

comparte este post:

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

También le puede interesar

salto de altura, salto vertical
General

7 ejercicios para mejorar tu salto vertical

El salto vertical es un indicador clave de qué tan alto puedes elevar tu centro de masa desde una posición de pie. Es crucial

Casos prácticos

El proyecto de ciencia de datos detrás de Spleeft

En este artículo, comparto, desde una perspectiva técnica y reflexiva, el proceso de aprendizaje y desarrollo detrás de la última optimización de Spleeft.

es_ES