Boxing and Analytics


When I first started boxing, I struggled to make my body execute quick movements. Transitioning from years behind a desk to being on “the pendulum” was beneficial; it engaged a form of intelligence I hadn’t utilized since college. Initially, I had so much difficulty that my coach would shout at me, “No good. We need to make you a flow chart.”

As a self-proclaimed data nerd, I gravitated towards the Polar Verity and its API to understand what professional and USA Amateur boxers experience when throwing punches. During the height of COVID, I had purchased a Polar device to track my steps in Apple Health and pair it with the heart rate information it displayed.

Boxers are a unique breed. I’ve never met one who wasn’t eager to push themselves to exhaustion and beyond. It’s this indomitable spirit I aimed to quantify as data.

Ultimately, this never-give-up attitude led me here.

Why Pulse Punch


Pulse Punch is my foray into data analytics to understand how boxers execute powerful and accurate punch combinations across different cardio zones. What does a jab look like in data? Can technique be scored based on different combos? At what point does a punch combo weaken in relation to heart rate? These questions guide this project.

Let’s talk tech stack.

  1. Python for data analytics
  2. Node for BLE
  3. SvelteKit for UI

JavaScript lets me get to everyone’s screens at the gym faster. No installation necessary. Just pick a browser and now there’s a dashboard with a boxer’s current performance. Python has such a rich data analytics environment, it just made sense to pick it for post-processing.

Maybe future rewrites might be necessary, but the real Zuckerberg embodiment goal is to “move fast and break things” so we can understand what the data is trying to tell us faster. Every successful project requires a wealth of information.

Study Design - A quick jab approach.


Boxers wear the sensor on their jab arm, strapped around the flexor carpi radialis. This positioning ensures the sensor stays secure under gloves and/or wraps while accurately recording heart rate and accelerometry data, avoiding any interruption in recording.

Muscle Nerves
muscle nerves

Once the sensor is secured in place, I start collecting data.

The point is to consider all the different angles that can happen in boxing. Rather than try to identify all of the potential motions in one go with a boxer, I settled on the first 3 basic punches that everyone should know.

  1. Uppercut hard continuously for 1 minute.
  2. Hook hard continuously for 1 minute.
  3. Jab hard continuously for 1 minute.

jabhookuppergraphs

Now for some criticism and reflection.

This data collection approach simply doesn’t work. Why? Key variable here, continuous. The sample rate of the sensor is once every second. There’s gaps in the data that don’t relate to sensor direction labels below. Telling a boxer to throw in this way means we’re only capturing a fraction of the data necessary to label one type of punch so it becomes harder to label the type of punch. Thankfully, the API remedies this with its use of delta sampling. A feature where the sensor records samples we may have missed during our 1 second sample recording.

Improvement Plan

Now we need to capture data in a more organized way.

PunchPulseDrawIO

By signaling a sound, this tells the boxer to execute a particular punch. This approach allows precise timing of the sound, punch type, and punch execution. This data will be crucial for identifying combos in a statistical model.

Let’s get building.