{"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-de-velocidad-de-la-barra-de-spleeft","status":"publish","type":"post","link":"https:\/\/spleeft.app\/es\/algoritmo-de-velocidad-de-la-barra-de-spleeft\/","title":{"rendered":"Mejora del algoritmo de velocidad de la barra de Spleeft con datos reales"},"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>Empec\u00e9 a desarrollar Spleeft como un proyecto personal mientras trabajaba en el \u00e1mbito de la preparaci\u00f3n f\u00edsica. La programaci\u00f3n me ayud\u00f3 a convertir las ideas que hab\u00eda adquirido como entrenador en una herramienta para medir la velocidad de la barra, y me brind\u00f3 la oportunidad de demostrar lo que era capaz de hacer m\u00e1s all\u00e1 del gimnasio.<\/p>\n<p>A medida que la IA hac\u00eda que la programaci\u00f3n resultara m\u00e1s accesible, empec\u00e9 a preguntarme d\u00f3nde podr\u00eda aportar mi mayor contribuci\u00f3n. La respuesta estaba en aquello que el c\u00f3digo por s\u00ed solo no pod\u00eda resolver: comprender los datos de los sensores y hacer que las mediciones fueran m\u00e1s fiables en el entrenamiento real. Esa pregunta me llev\u00f3 al proyecto de algoritmos que quiero compartir aqu\u00ed.<\/p>\n<p><strong>Prueba Spleeft:<\/strong> <a href=\"https:\/\/apps.apple.com\/us\/app\/spleeft\/id1606893985\" target=\"_blank\" rel=\"noopener\">Descarga Spleeft en la App Store<\/a> para medir la velocidad de la barra con tu iPhone o tu Apple Watch.<\/p>\n<h2>El problema de la velocidad de la barra: desviaci\u00f3n y falsas pausas<\/h2>\n<p>La optimizaci\u00f3n anterior de Spleeft, que describ\u00ed en <a href=\"https:\/\/spleeft.app\/data-science-project-behind-spleeft-vbt-ios\/\" target=\"_blank\">el art\u00edculo original sobre ciencia de datos<\/a>, ten\u00eda un alcance m\u00e1s limitado. Me centr\u00e9 principalmente en ajustar los par\u00e1metros de un algoritmo ya existente y en encontrar combinaciones que mejoraran su rendimiento.<\/p>\n<p>Ese trabajo fue muy \u00fatil, pero tras dedicar m\u00e1s tiempo a probar Spleeft en entornos de formaci\u00f3n reales, empec\u00e9 a darme cuenta de que hab\u00eda un problema m\u00e1s profundo.<\/p>\n<p>La principal dificultad no consist\u00eda simplemente en calcular la velocidad.<\/p>\n<p>Se trataba de saber cu\u00e1ndo comenzaba un movimiento, cu\u00e1ndo terminaba y cu\u00e1ndo el dispositivo estaba realmente inm\u00f3vil.<\/p>\n<p>Spleeft utiliza datos del aceler\u00f3metro. Para calcular la velocidad, es necesario integrar la aceleraci\u00f3n a lo largo del tiempo. Esto resulta matem\u00e1ticamente elegante, pero tambi\u00e9n plantea un problema inevitable: incluso un peque\u00f1o sesgo o error en la se\u00f1al de aceleraci\u00f3n se acumula durante la integraci\u00f3n y se convierte en una deriva de la velocidad.<\/p>\n<p>Esa desviaci\u00f3n puede deberse a varias causas:<\/p>\n<ul>\n<li>ruido del sensor;<\/li>\n<li>peque\u00f1os cambios en la orientaci\u00f3n del dispositivo;<\/li>\n<li>cambios en el plano de movimiento;<\/li>\n<li>error de integraci\u00f3n;<\/li>\n<li>filtrado imperfecto;<\/li>\n<li>las vibraciones procedentes del deportista o de la barra;<\/li>\n<li>per\u00edodos de baja aceleraci\u00f3n mientras la barra sigue en movimiento.<\/li>\n<\/ul>\n<p>Este \u00faltimo punto es especialmente importante. Una aceleraci\u00f3n cercana a cero no siempre significa que la velocidad sea cero. Tambi\u00e9n puede significar que la barra se mueve a una velocidad relativamente constante.<\/p>\n<p>Therefore, the real challenge was not simply to find \u201cmore zeros\u201d.<\/p>\n<p>El objetivo era encontrar mejores ceros.<\/p>\n<p>Un cero es un momento que puede utilizarse para recalibrar la se\u00f1al de velocidad integrada. Si el cero anterior a una repetici\u00f3n es incorrecto, la integraci\u00f3n comienza desde un punto err\u00f3neo. Si aparece un falso cero dentro de una repetici\u00f3n, el movimiento puede interrumpirse o recalibrarse demasiado pronto.<\/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=\"Velocidad vertical a lo largo de cuatro repeticiones de peso muerto, en las que se muestra el registro original en gris y la se\u00f1al corregida respecto a la deriva en verde azulado\" 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\">Cuatro repeticiones de peso muerto: la curva gris se aleja del cero entre movimientos, mientras que la curva corregida vuelve a situarse m\u00e1s cerca del cero durante las pausas.<\/figcaption><\/figure>\n\n\n<p>Esto dio lugar a un nuevo principio para el proyecto:<\/p>\n<blockquote>\n<p>En primer lugar, mejora la calidad de la detecci\u00f3n del estado de reposo y la segmentaci\u00f3n de las repeticiones. A continuaci\u00f3n, eval\u00faa la velocidad.<\/p>\n<\/blockquote>\n<h2>Recopilaci\u00f3n de datos sobre la velocidad de las barras en Par\u00eds<\/h2>\n<p>El primer paso consisti\u00f3 en conseguir un dispositivo de referencia que pudiera utilizarse junto con Spleeft.<\/p>\n<p>Una reconocida empresa de codificadores lineales hab\u00eda lanzado al mercado un dispositivo capaz de proporcionar no solo la velocidad, sino tambi\u00e9n datos sin procesar que pod\u00edan recopilarse en un contexto real de entrenamiento. Era justo lo que necesitaba.<\/p>\n<p>Durante una concentraci\u00f3n con la selecci\u00f3n espa\u00f1ola de BMX en Par\u00eds, recopil\u00e9 un amplio conjunto de datos mientras realizaba diferentes ejercicios:<\/p>\n<ul>\n<li>sentadillas;<\/li>\n<li>peso muerto;<\/li>\n<li>power cleans;<\/li>\n<li>saltos en cuclillas;<\/li>\n<li>otros ejercicios de fuerza combinados.<\/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=\"Recopilaci\u00f3n de datos sobre el entrenamiento de fuerza durante la concentraci\u00f3n de la selecci\u00f3n espa\u00f1ola de BMX en Par\u00eds\" 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\">Recopilaci\u00f3n de datos sobre el entrenamiento de fuerza durante la concentraci\u00f3n de la selecci\u00f3n espa\u00f1ola de BMX en Par\u00eds.<\/figcaption><\/figure>\n\n\n<p>Las mediciones se recogieron simult\u00e1neamente:<\/p>\n<ul>\n<li>Spleeft registr\u00f3 datos de aceler\u00f3metros de alta frecuencia, incluidas sesiones a una frecuencia de hasta 800 Hz;<\/li>\n<li>el codificador lineal registraba datos a aproximadamente 100 Hz.<\/li>\n<\/ul>\n<p>No se trataba de un conjunto de datos de laboratorio recopilado en condiciones perfectamente controladas. Eso fue a prop\u00f3sito.<\/p>\n<p>Quer\u00eda comprender qu\u00e9 ocurr\u00eda cuando el sistema se utilizaba en los entornos en los que los entrenadores lo emplear\u00edan realmente: con diferentes ejercicios, diferentes cargas, diferentes pausas, diferentes estrategias de movimiento y diferentes fuentes de ruido.<\/p>\n<p>El conjunto de datos tambi\u00e9n me permiti\u00f3 comparar dos tipos de medici\u00f3n muy diferentes.<\/p>\n<p>El codificador mide el movimiento a lo largo de una trayectoria mec\u00e1nica m\u00e1s definida. El Apple Watch o el iPhone miden las fuerzas que act\u00faan sobre el dispositivo, la barra y, de forma indirecta, sobre el deportista. No detectan exactamente la misma se\u00f1al.<\/p>\n<p>Esa diferencia se convirti\u00f3 en una de las lecciones m\u00e1s importantes del proyecto.<\/p>\n<h2>Recreaci\u00f3n de Spleeft en Python<\/h2>\n<p>Antes de optimizar nada, tuve que reproducir el algoritmo existente de iOS fuera de la aplicaci\u00f3n.<\/p>\n<p>Parece sencillo, pero fue una de las partes m\u00e1s importantes de todo el proceso.<\/p>\n<p>El algoritmo de producci\u00f3n se ejecuta en Swift en el iPhone y el Apple Watch. Sin embargo, el trabajo de optimizaci\u00f3n result\u00f3 mucho m\u00e1s sencillo de llevar a cabo en Python, donde pude procesar grandes conjuntos de datos, generar gr\u00e1ficos y probar miles o millones de combinaciones de par\u00e1metros.<\/p>\n<p>El problema era que una aproximaci\u00f3n en Python no ser\u00eda suficiente.<\/p>\n<p>Si la versi\u00f3n en Python se comportara de forma diferente a la versi\u00f3n en Swift, no estar\u00eda optimizando Spleeft. Estar\u00eda optimizando otro algoritmo.<\/p>\n<p>As\u00ed que desarroll\u00e9 un simulador en Python que reproduc\u00eda las principales etapas de procesamiento de la implementaci\u00f3n en iOS:<\/p>\n<ol>\n<li>leer los datos del aceler\u00f3metro y de movimiento;<\/li>\n<li>reconstrucci\u00f3n de la velocidad;<\/li>\n<li>detectar actualizaciones con velocidad nula;<\/li>\n<li>compensaci\u00f3n de la deriva de la se\u00f1al;<\/li>\n<li>segmentaci\u00f3n de las repeticiones;<\/li>\n<li>c\u00e1lculo de la velocidad media y otros par\u00e1metros.<\/li>\n<\/ol>\n<p>A continuaci\u00f3n, compar\u00e9 el simulador con los resultados de Swift. El objetivo no era obtener un resultado similar, sino asegurarme de que la misma se\u00f1al sin procesar generara el mismo n\u00famero de repeticiones y, pr\u00e1cticamente, los mismos par\u00e1metros.<\/p>\n<p>Solo tras este paso la optimizaci\u00f3n podr\u00eda tener sentido.<\/p>\n<h2>M\u00e1s all\u00e1 del detector de cero original<\/h2>\n<p>La primera versi\u00f3n del algoritmo ya inclu\u00eda la recalibraci\u00f3n a velocidad cero, pero su l\u00f3gica era relativamente sencilla.<\/p>\n<p>Funcion\u00f3 bien en situaciones controladas. Sin embargo, algunos ejercicios pusieron de manifiesto sus puntos d\u00e9biles. El press de banca y el peso muerto resultaron especialmente dif\u00edciles, ya que el dispositivo puede experimentar movimientos adicionales mientras el deportista estabiliza la barra.<\/p>\n<p>Empec\u00e9 a investigar m\u00e9todos alternativos de detecci\u00f3n de velocidad cero a partir de la bibliograf\u00eda cient\u00edfica y de aplicaciones relacionadas con la navegaci\u00f3n inercial.<\/p>\n<p>Entre las ideas se encontraban las siguientes:<\/p>\n<ul>\n<li>aceleraci\u00f3n filtrada en varios ejes;<\/li>\n<li>informaci\u00f3n del giroscopio;<\/li>\n<li>requisitos de persistencia en muestras consecutivas;<\/li>\n<li>energ\u00eda cin\u00e9tica;<\/li>\n<li>comprobaciones basadas en la desviaci\u00f3n;<\/li>\n<li>detectores estad\u00edsticos conservadores;<\/li>\n<li>diferentes umbrales para los distintos estados del movimiento.<\/li>\n<\/ul>\n<p>No todas las ideas funcionaron.<\/p>\n<p>Por ejemplo, estudi\u00e9 un clasificador de estado inercial basado en \u00e1rboles de decisi\u00f3n. Fue un experimento \u00fatil en el \u00e1mbito de la ciencia de datos, pero su rendimiento no era lo suficientemente fiable como para convertirse en un veto definitivo en el algoritmo de producci\u00f3n.<\/p>\n<p>Se trataba de una distinci\u00f3n importante.<\/p>\n<p>El proyecto inclu\u00eda experimentos de aprendizaje autom\u00e1tico y m\u00e9todos de ciencia de datos, pero la soluci\u00f3n final de producci\u00f3n no fue un modelo de \u00abcaja negra\u00bb que se limitara a clasificar cada muestra. El proceso de ciencia de datos me ayud\u00f3 a comprender la se\u00f1al, identificar los modos de fallo y dise\u00f1ar una m\u00e1quina de estados causal m\u00e1s robusta.<\/p>\n<p>El sistema final sigui\u00f3 siendo interpretable.<\/p>\n<h2>Buscando entre millones de posibilidades<\/h2>\n<p>Una vez que dispuse del simulador y de los detectores candidatos, empec\u00e9 a realizar b\u00fasquedas sistem\u00e1ticas de par\u00e1metros.<\/p>\n<p>Para cada configuraci\u00f3n candidata, se volvieron a procesar las mismas se\u00f1ales sin procesar. Los par\u00e1metros controlaban aspectos tales como:<\/p>\n<ul>\n<li>umbrales de aceleraci\u00f3n;<\/li>\n<li>el n\u00famero m\u00ednimo de muestras consecutivas;<\/li>\n<li>comportamiento de filtrado;<\/li>\n<li>normas de introducci\u00f3n de movimientos;<\/li>\n<li>normas de salida de movimiento;<\/li>\n<li>la cantidad de pruebas necesarias antes de la recalibraci\u00f3n;<\/li>\n<li>c\u00f3mo gestionaba el sistema las transiciones entre el movimiento y el reposo.<\/li>\n<\/ul>\n<p>La b\u00fasqueda no se dise\u00f1\u00f3 para encontrar la configuraci\u00f3n con el menor error de velocidad respecto al codificador.<\/p>\n<p>Eso habr\u00eda sido demasiado limitado.<\/p>\n<p>El primer objetivo consist\u00eda en identificar la combinaci\u00f3n que permitiera detectar mejor los per\u00edodos aut\u00e9nticos de velocidad cero, evitando al mismo tiempo los falsos ceros durante el movimiento activo.<\/p>\n<p>La evaluaci\u00f3n se llev\u00f3 a cabo siguiendo un proceso en cascada:<\/p>\n<ol>\n<li>\u00bfSe han detectado correctamente los ceros efectivos?<\/li>\n<li>\u00bfSe han segmentado y contado correctamente las repeticiones?<\/li>\n<li>Una vez que las dos primeras condiciones resultaron aceptables, \u00bfen qu\u00e9 medida se acercaban los par\u00e1metros de velocidad a la referencia externa?<\/li>\n<\/ol>\n<p>Este orden es importante.<\/p>\n<p>Una repetici\u00f3n con una velocidad cercana a la del codificador no es necesariamente una repetici\u00f3n medida correctamente si su inicio o su fin se definieron a partir de un cero falso.<\/p>\n<p>Las cifras eran solo una parte de c\u00f3mo evaluaba cada experimento. Manten\u00eda visibles los registros sin procesar y las curvas de velocidad resultantes, y luego las comparaba con los movimientos que hab\u00eda observado en mi propio entrenamiento y en las pruebas con mis deportistas. Cuando hab\u00eda una pausa evidente, pod\u00eda ver si el algoritmo devolv\u00eda la velocidad a cero. Cuando una repetici\u00f3n segu\u00eda en movimiento, pod\u00eda detectar una correcci\u00f3n err\u00f3nea. Esas sencillas comprobaciones visuales a menudo me daban m\u00e1s informaci\u00f3n sobre el siguiente cambio que deb\u00eda realizar que otra puntuaci\u00f3n de error.<\/p>\n<h2>Una m\u00e1quina de estados para el movimiento<\/h2>\n<p>Una de las principales mejoras arquitect\u00f3nicas fue la incorporaci\u00f3n de una m\u00e1quina de estados para complementar la detecci\u00f3n de ceros.<\/p>\n<p>Ahora, el algoritmo analiza el movimiento como una secuencia de estados, en lugar de tratar cada muestra de forma independiente.<\/p>\n<p>En t\u00e9rminos sencillos, pasa por etapas como:<\/p>\n<ul>\n<li>en busca del origen del movimiento;<\/li>\n<li>se ha detectado movimiento;<\/li>\n<li>en busca del final del movimiento;<\/li>\n<li>que confirme un verdadero reposo tras el movimiento;<\/li>\n<li>recalibrar la se\u00f1al.<\/li>\n<\/ul>\n<p>Esta estructura ayuda a evitar que los eventos aislados de los sensores modifiquen de inmediato la interpretaci\u00f3n de la repetici\u00f3n.<\/p>\n<p>Por ejemplo, un breve periodo de baja aceleraci\u00f3n durante el movimiento de una barra no deber\u00eda interpretarse autom\u00e1ticamente como reposo. El sistema necesita pruebas adicionales: la direcci\u00f3n de la se\u00f1al, la duraci\u00f3n del evento y el contexto general del movimiento.<\/p>\n<p>La m\u00e1quina de estados tambi\u00e9n me permiti\u00f3 separar dos ideas que antes estaban demasiado entrelazadas:<\/p>\n<ul>\n<li>detectar si la barra se est\u00e1 moviendo;<\/li>\n<li>decidir si la velocidad integrada puede recalibrarse.<\/li>\n<\/ul>\n<p>Esto resultaba especialmente \u00fatil porque un estado de movimiento puede permanecer activo incluso cuando la aceleraci\u00f3n se aproxima temporalmente a cero.<\/p>\n<h2>What the encoder could\u2014and could not\u2014tell me<\/h2>\n<p>Utilic\u00e9 el codificador como referencia externa, pero no como una verdad de referencia incuestionable.<\/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>Aun as\u00ed, el codificador se consideraba una referencia, no un est\u00e1ndar absoluto.<\/p>\n<p>Los distintos dispositivos tienen diferentes filtros, retrasos, reglas de detecci\u00f3n y limitaciones mec\u00e1nicas. Adem\u00e1s, es posible que la se\u00f1al exportada no sea exactamente la misma que se utiliza internamente para calcular cada m\u00e9trica.<\/p>\n<p>Por eso decid\u00ed no definir el \u00e9xito simplemente como:<\/p>\n<blockquote>\n<p>\u201cThe Spleeft value is close to the encoder value.\u201d<\/p>\n<\/blockquote>\n<p>En su lugar, busqu\u00e9 un algoritmo que fuera coherente en s\u00ed mismo, que detectara correctamente las repeticiones y que funcionara de forma fiable en diferentes ejercicios y condiciones de grabaci\u00f3n.<\/p>\n<p>El codificador me ayud\u00f3 a identificar errores y a investigar casos complicados. No sustituy\u00f3 al pensamiento cr\u00edtico.<\/p>\n<h2>Prueba del algoritmo con datos reales de usuarios<\/h2>\n<p>Tras los experimentos de laboratorio, volv\u00ed a analizar los datos recopilados fuera de las sesiones controladas.<\/p>\n<p>Algunos de los archivos m\u00e1s \u00fatiles proced\u00edan de usuarios de Spleeft que hab\u00edan compartido ejemplos de casos en los que la aplicaci\u00f3n hab\u00eda dado un resultado inesperado.<\/p>\n<p>Estos archivos resultaban valiosos porque recog\u00edan los problemas que surgen en la vida real:<\/p>\n<ul>\n<li>pausas imperfectas;<\/li>\n<li>vibraciones inesperadas en la barra;<\/li>\n<li>repeticiones lentas;<\/li>\n<li>diferentes posiciones de fijaci\u00f3n;<\/li>\n<li>cambios en la t\u00e9cnica;<\/li>\n<li>ruido antes o despu\u00e9s de la repetici\u00f3n;<\/li>\n<li>ejercicios que no se parecen a una sentadilla.<\/li>\n<\/ul>\n<p>Apliqu\u00e9 el nuevo algoritmo a estos conjuntos de datos hist\u00f3ricos y compar\u00e9 su comportamiento con el de la implementaci\u00f3n anterior.<\/p>\n<p>Esta fase ayud\u00f3 a poner de manifiesto un principio importante: mejorar el algoritmo no significa complicarlo a toda costa. Significa adaptar mejor la l\u00f3gica a la realidad f\u00edsica del sensor y del ejercicio.<\/p>\n<p>Esa experiencia tambi\u00e9n marc\u00f3 <a href=\"https:\/\/spleeft.app\/smart-zero-apple-watch-control-vbt-update\/\" target=\"_blank\">la \u00faltima actualizaci\u00f3n de Spleeft<\/a>. <a href=\"https:\/\/spleeft.app\/accurate-velocity-with-spleeft\/\" target=\"_blank\">Las mediciones del aceler\u00f3metro tienen sus limitaciones<\/a>, incluso tras una optimizaci\u00f3n minuciosa, por lo que quer\u00eda que los entrenadores pudieran examinar las grabaciones subyacentes y valorar si un resultado es fiable en su propio contexto.<\/p>\n<h2>Testing on a \u20ac40 Apple Watch SE<\/h2>\n<p>Tambi\u00e9n quer\u00eda probar el nuevo algoritmo en un Apple Watch real, en lugar de basarme \u00fanicamente en simulaciones en 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 fijado a una barra durante una prueba de campo con un encoder lineal\" 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 montado en la barra junto al codificador durante una prueba de campo.<\/figcaption><\/figure>\n\n\n<p>Esto fue algo m\u00e1s que una prueba pr\u00e1ctica.<\/p>\n<p>Spleeft siempre se ha basado en la idea de que el entrenamiento basado en la velocidad debe ser accesible. Si un nuevo algoritmo solo funcionara en el dispositivo m\u00e1s caro o en un entorno de laboratorio perfecto, no se ajustar\u00eda al objetivo del proyecto.<\/p>\n<p>Durante las pruebas de campo, compar\u00e9 dos ubicaciones:<\/p>\n<ul>\n<li>the watch on the athlete\u2019s wrist;<\/li>\n<li>el reloj fijado directamente a la barra.<\/li>\n<\/ul>\n<p>Esto puso de manifiesto lo importante que puede ser la ubicaci\u00f3n de los sensores.<\/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>Al colocar el reloj directamente sobre la barra, se redujo parte de ese ruido.<\/p>\n<p>Esto no significa que la posici\u00f3n de la barra sea siempre la mejor opci\u00f3n, ni que la posici\u00f3n de la mu\u00f1eca sea incorrecta. Significa que el mejor algoritmo tambi\u00e9n debe tener en cuenta las limitaciones del hardware y la forma en que se utiliza el dispositivo.<\/p>\n<p>Por mucho que se recurra a la ciencia de datos, nunca se podr\u00e1 compensar por completo una configuraci\u00f3n de medici\u00f3n deficiente.<\/p>\n<h2>What changed in Spleeft\u2019s algorithm<\/h2>\n<p>El nuevo algoritmo ya ha superado la fase beta. La verdadera prueba ser\u00e1 comprobar su consistencia en diferentes ejercicios, dispositivos y entornos de entrenamiento. Quiero que los entrenadores puedan valorarlo por s\u00ed mismos.<\/p>\n<p>Tambi\u00e9n quiero dejar claro qu\u00e9 hay detr\u00e1s de esa cifra: Spleeft utiliza los periodos de descanso detectados para limitar la desviaci\u00f3n de la velocidad y una m\u00e1quina de estados para identificar las repeticiones. Hemos comprobado esas decisiones compar\u00e1ndolas con sesiones grabadas y dispositivos externos. Comparto este enfoque, aunque mantengo en secreto los par\u00e1metros exactos.<\/p>\n<h2>Lo que he aprendido<\/h2>\n<p>Este proyecto me ense\u00f1\u00f3 que una m\u00e9trica de velocidad \u00fatil no solo depende de un algoritmo ingenioso. Depende del sensor, del ejercicio, de la calidad de los datos y de las decisiones que se toman en cada paso. La inteligencia artificial me ayud\u00f3 a explorar y desarrollar m\u00e1s r\u00e1pido, pero la experiencia como entrenador fue fundamental para decidir qu\u00e9 problemas eran los m\u00e1s importantes.<\/p>\n<p>Spleeft sigue siendo un proyecto personal que surge de esa curiosidad. Seguir\u00e9 prob\u00e1ndolo en sesiones de entrenamiento reales y compartiendo lo que aprenda.<\/p>\n<p>\u00a0<\/p>","protected":false},"excerpt":{"rendered":"<p>C\u00f3mo utilic\u00e9 los datos del Apple Watch, un codificador lineal y grabaciones de Par\u00eds para mejorar la detecci\u00f3n de pausas, la segmentaci\u00f3n de repeticiones y el seguimiento de la velocidad por comp\u00e1s en 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\/es\/wp-json\/wp\/v2\/posts\/11367","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/comments?post=11367"}],"version-history":[{"count":4,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/posts\/11367\/revisions"}],"predecessor-version":[{"id":11372,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/posts\/11367\/revisions\/11372"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/media\/11366"}],"wp:attachment":[{"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/media?parent=11367"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/categories?post=11367"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/spleeft.app\/es\/wp-json\/wp\/v2\/tags?post=11367"}],"curies":[{"name":"gracias","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}