I just came back from a very exciting (and tiring) two days in Baltimore, where I was invited for the final of the Armour39 Challenge.
It all started in November last year, when Under Armour decided to crowd source their R&D and the future of their Armour 39 platform.
The Armour39 wearable sensor was launched early 2013. Similarly to what UA usually organizes for their Future Show, where last year more than 4000 applicants competed, they crowd sourced software development for this April's Digital Future Show. Given the experience I have with wearable technology and my passion for running, I thought it was a pretty good match, and decided to give it a try.
I'm gonna start with the outcome of the competition, followed by my thoughts after the whole thing finished, which are certainly biased by the outcome. Then, I'll cover in detail my submission.
The competition was divided into three phases. We had first to submit a proposal outlining our idea (sometime in November). 50 proposals were selected and moved on to the second phase. At this stage we all received a development kit including the A39 sensor and an SDK to access the non-standard data stream (i.e. everything that is not heart rate). We had between January and March to develop our prototypes, and had to submit a video and report (see below for both of them). Up to 15 projects were selected and moved on to the final phase, consisting of a presentation in Baltimore at the Digital Future Show. Eventually it was only 5 teams reaching the final:
The first prize (20 000 USD) went to MACSEA Ltd, while the runner up (5 000 USD) was the University of Calgary. MACSEA Ltd, led by Kevin Logan, worked on activity recognition to distinguish a series of gym exercises, while the University of Calgary proposed a sound feedback mechanism which could help runners in maintaining a proper posture during exercise. Both solutions seemed pretty neat and technically sound (I apologize if these descriptions are not perfectly accurate, but we couldn't see each other presentations, and this is what I got by chatting with other participants).
The whole competition was well organized, with some issues here and there, but nothing too bad. The SDK and accelerometers had some problems, however UA took care of fixing issues and sending us more sensors rather quickly. The final trip to Baltimore was also pretty great. We had a good tour of UA headquarters and spent some time with the staff (UA & MapMyFitness, recently acquired). My trip was a bit too intense, coming from Europe I basically spent three days flying and transferring between one place to the other, getting almost no sleep.
Anyway, the only aspect I didn't like during the competition is that the judges of the final phase (mixed UA and MapMyFitness) were not involved until that last moment. They had no idea what we made, and while I understand why in principle that might be a good idea, we also had no idea that they didn't watch the videos or read the reports. I didn't demo anything during my talk, because I expected them to know what I was gonna talk about, but that was clearly not the case.
On the outcome, I must say I was surprised to see that both winners proposed a solution which is accelerometer-only. The A39 sensor is a heart rate monitor, thus I thought that doing something with physiological data was a must. Both solutions could be implemented just on a phone, which is anyway required since the A39 sensor needs to communicate with something, therefore making the A39 redundant.
[UA's new gym, where we presented our ideas]
My Proposal: Under Armour 4 Runners
Under Armour acquisition of MapMyFitness was reported mid November, more or less when the competition started. I missed the news, and went on proposing an app for runners, since the standard app for the A39 sensor is simply reporting WILLPower and does not use GPS. I'm not sure if eventually the acquisition made half of my app redundant and therefore less interesting. On the other hand, all the extra stuff (advanced trainings, personalized coaching, heart rate variability analysis and fitness estimation) could have been easily integrated in what the have now with MapMyRun.
When I decided to develop an app for runners it was mainly out of disappointment for what is currently available. After a good 4-5 years since the main apps were developed, still they provide so little value beyond tracking your (basic) run and sharing/bragging functionalities. Most likely 95% of the users are perfectly fine with that, however I needed something more. There is a good post by Owen Thomas highlighting the pros and cons of the most famous apps, and guess what, non of them stands out. Anyway, here is the concept behind my attempt:
UA4Runners aims at creating a new level of engagement between runners and the Armour 39 platform (or whatever HR sensor). The idea behind UA4Runners is to provide a single tool able to provide objective assessment of physical recovery and cardiorespiratory fitness, as well as personalized coaching.
UA4Runners offers three main functionalities:
Role of the Personal Trainer is to create personalized training programs based on the user target race (10K, half marathon, full marathon), target time, current condition (optional) and training days, as well as to provide advice and modify scheduled trainings based on objective assessment of the user condition.
Objective assessment of the user condition (physical condition & recovery state) is performed using the Armour39 platform and computing heart rate variability features from the received RR intervals. HRV is translated into a “user-friendly” number between 0 and 10.
Finally, UA4Runners can estimate level of cardiorespiratory fitness by analyzing heart rate during the user’s training. Thus, without requiring additional tests.
Personal Trainer / Training Program
Based on the current condition, the Personal Trainer will determine a feasibility score and schedule all trainings until the race date. The Training Program created by the Personal Trainer follows standard training programs used my semi-professional and professional endurance athletes, consisting of N cycles of 4 weeks, 3 weeks consisting of trainings at increasing or high training load, and one week of recovery at 60-70% of the training load.
The Training Program will consist of normal, progressive, short intervals, long intervals, and long trainings. Each training is divided into training phases (e.g. warm up, intervals, cool down). A training phase can be either target time or target distance. Target distance means that a certain distance needs to be reached in order to switch to the following phase (e.g. 1 mile), while target time means that the phase will last N minutes regardless of the distance covered. The Personal Trainer will assign a target pace to each phase and training type and update your target paces every training cycle.
Each training will be evaluated by the Personal Trainer based on your actual pace and the target pace of each phase. The Personal Trainer will provide you feedback on your trainings.
Training tracking is based on GPS data (the Armour39 platform is configured every time a training starts using the most recently updated information about the user weight and either age-predicted or measured maximal heart rate). GPS data is buffered and filtered by accuracy level, reported distances are normally off by 50-100 meters every 10 km (i.e less than 1% error).
[1. Target race choice. 2. Half marathon target configuration. 3. Cycles and paces for the current cycle. 4. Scheduled trainings generated by the Personal Trainer. 5. Example of interval training and training phases, including repetitions and recovery time. 6. Details of the intervals phase for the intervals training, target distance and target pace, number of repetitions, all details can be edited. 7. Phase by Phase breakdown for a training. Target pace is shown in gray, actual pace in gold. Differences between target and actual paces for each phase are used by the Personal Trainer to evaluate a specific training. 8. Map detail for a training, showing kilometers annotations. 9. Heart Rate and WILLPower as recorded from the Armour39 platform.]
The Personal Trainer can analyze physical condition & recovery state (see next section) and use HRV-derived condition results over the past week (at least 5 days required) to adapt the user training program. In case no training program is used, the Personal Trainer will suggest how to train on that specific day based on HRV only (e.g. rest, take it easy, train but limit intensity, go ahead and train hard). This is pretty much the same I developed for the HRV4Training app, however the outcome can be directly used to dynamically modify the user training program.
If the user configured a training program, the Personal Trainer can modify it according to the user condition. More specifically, in case of negative trend the Personal Trainer will suggest either to reduce training intensity (and modify the daily training reducing pace by 10%) or to move the training to the following day or to cancel the training for that specific day.
Physical Condition & Recovery State Monitoring
Objective assessment of the user condition (physical condition & recovery state) is performed using the Armour39 platform and computing heart rate variability features from the received RR intervals. HRV is translated into a user friendly number between 0 and 10, used by the Personal Trainer to optionally modify the current training program based on the user’s condition.
Short-term changes in HRV features, used to assess training load and recovery, seem to be a reliable measure. Most research was able to show a significant relation between HRV features and training load/performance, with some studies showing that HRV-guided training can be used to increase VO2max faster [1,2,3].
HRV analysis is implemented on the phone. RR-intervals are received from the Armour39 platform, corrected for artifacts (removal of each interval differing more than 20% from the previous one) and buffered in a 60 second window used to extract HRV features. Accuracy of the Armour39 in detecting RR intervals was also tested against other monitors and a full ECG (not shown). Time (AVNN, rMSSD, SDNN, pNN50) and frequency (LF, HF, LFHF) features are extracted. Frequency features are extracted after linear interpolation of the RR-intervals (otherwise having non-constant frequency), hamming windowing and removal of the DC component. At the moment only rMSSD (normalized and corrected for age differences) is used to assess physical condition, however HF might be another good option according to literature.
To improve reliability of the test (by maintaining constant the effect of respiration during different recordings), paced breathing is guided during the test.
[10-11. 60 seconds Heart Rate Variability analysis to determine recovery state. 12. Two weeks of recordings, moving average overlaid to highlight trends in physical condition. Trainings recorded using the app are shown at the bottom (color coded by willpower value).]
UA4Runners can estimate level of cardiorespiratory fitness by analyzing heart rate during the user’s training. Thus, without requiring additional tests.
VO2max is estimated according to the principles behind sub-maximal VO2max, meaning that the heart rate at a constant workload should be representative of the user fitness (lower HR at the same intensity for more fit subjects). The formula used is the one reported in , since it was developed using sub maximal running speeds ( < 7.5 mph for male and < 6.5 mph for female), and includes speed as a parameter, which means that any training can be used for VO2max estimation regardless of the speed the user is comfortable with.
UA4Runners implements an age-adaptation factor since the original formula was developed on college-aged individuals and would overestimate significantly VO2max for older persons.
UA4Runners analyzes HR data received from the Armour39 platform during training, and is able to locate periods of stationary heart rate (based on the coefficient of variation) as well as constant speed. During these phases, HR and running speed are isolated and used to estimate VO2max for a specific training. Other small correction concern discarding the first 5 minutes of data (hardly possible to reach steady state) and remove everything beyond one hour of training, since the effect of fatigue would increase heart rate for the same speeds.
UA4Runners updates the current VO2max using the estimates of the last 2 weeks, reporting categories based on age and gender.
[13. Home screen reporting current and past estimated VO2max. 14. VO2 max weekly progress and user category based on age and gender.]
In addition to the main features highlighted in the previous part of the document, UA4Runners can track the following:
VO2 max estimation
VO2 max estimation for two trainings of different duration and intensity is shown in the following plot. The two plots on the left are 19.5 km at slow intensity, the two plots on the right show 7 km at higher intensity with 1 final km full speed (see pace plots, top row, with reduced pace – i.e higher speed – towards the end). Heart rate (bottom plots) shown in red is discarded since the coefficient of variation is too high, highlighting non-stationary heart rate which would result in wrong vo2max estimations (for example during the first minutes speed can be as high as later on, but heart rate is still low, thus vo2max would be overestimated). VO2max estimated is 54 for the left plots and 55 for the right plots, higher intensity might lead to higher accuracy, however results are very similar.
Physical Condition & Recovery State
Recovery Points are extracted from rMSSD (even though HF power might be a better choice). The following plots show rMSSD for an example week, trainings are color coded to show daily variability, e.g. decrease on the third day after training the second day, and further decrease after intense training on the third day. rMSSD increases again after 1 day of rest (gray bar in the middle of the week). The two boxplots show longer term analysis, where 1 cycle of 4 weeks (3 high intensity 1 recovery) is used to compare rMSSD and derived recovery points over the period. Average recovery points are 7.8 during intense training and 8.3 during the recovery week, showing improved condition with reduced training load.
During phase two we were asked to submit a video showing the functionalities of the prototype. It's my first video - be nice - however I believe it does show the ideas behind my proposal quite well.
The report is basically 95% what I reported in this post. You can download the pdf here.
 Kiviniemi, Antti M., et al. "Endurance training guided individually by daily heart rate variability measurements." European journal of applied physiology 101.6 (2007): 743-751.
 Garet, Martin, et al. "Individual interdependence between nocturnal ANS activity and performance in swimmers." Medicine and science in sports and exercise 36 (2004): 2112-2118.
 Pichot, Vincent, et al. "Relation between heart rate variability and training load in middle-distance runners." Medicine and science in sports and exercise 32.10 (2000): 1729-1736.
 George, James D., et al. "Development of a submaximal treadmill jogging test for fit college-aged individuals." Medicine and science in sports and exercise25.5 (1993): 643-647.