Saturday, January 15, 2011

adding altitude to motorized segment identification?

A friend of mine, Brian, took his Garmin with him in his car, drove on local roads, did a run, got back in his car, and drove back home. He was careful never to drive much over 30 mph the whole time. He then loaded the data into my motorized FIT filter and..... nothing. It didn't identify any of the segments as motorized.

The reason for this is the criterion I used, that the units must record progress which is at least 500 meters ahead of a 14 kph pace for some time interval, is designed to avoid tagging segments where a rider was descending a relatively fast mountain descent. Descending on a bike is faster than driving on local streets, so it would be relatively hopeless to expect, using crude speed measures only, that I'd be able to pick up local driving as suspicious.

I was discussing this with Bill, another friend, when the idea came up of throwing altitude into the mix. Now this is hardly a new idea: it'd already been proposed on Strava forums that calculated power could be used to pick up suspicious segments. An issue is, short term, that calculated power uses road grade, and since the Garmin Edge 500 doesn't have any accelerometers for grade measurement, it needs to differentiate the altitude signal, and since the altitude signal is temperature-compensated, and since the temperature measurement reacts to changing conditions only very slowly, if the bike is taken from a warm indoor environment into a cold outdoor environment the altitude can be very confused for awhile. Here's an example from DC Rainmaker:

from DC RainMaker Edge 500 review

In the plot you can see it took around 30 minutes for the Edge to accurately record the outdoor temperature. The result is it takes awhile for the altitude to settle out. Here's DC RainMaker's plot of altitude over a short loop:

from DC RainMaker Edge 500 review

Maybe things have improved with subsequent firmware upgrades, but these data show a 100 foot swing in altitude over the course of a ride lasting less than an hour. So in any sort of considering of altitude in the mix, it's important to not place too much relevance on altitude changes on this order.

The good news is while the plot looks pretty bad, cyclists can typically climb at in excess of 3000 vertical feet in an hour, and descent at around twice this, so over enough time that little fluctuations in altitude aren't important, using the altitude signal to gain added insight into the pragmatic speed limits of cycling is a good idea.

So assuming a valid altitude signal is available, what's a good modified criterion to use?

One option is to forget about speed and just focus on altitude. 1800 meters per hour (0.5 meters / second) is about as fast as the best riders in the world can climb, so I could say if data shows progress in excess of 30 vertical meters (about 100 feet) ahead of an 0.5 meter / second pace then the transport is probably motorized. I picked the 30 meters based as a number pulled from that DC RainMaker plot, but it also accounts for the ability of riders to climb faster for shorter duration.

But a better approach is to combine the climbing and speed. Here I can go to that idea of a power threshold. Work done is proportional to "effective" vertical meters gained added to a proportionality constant times the square of speed multiplied by distance traveled (force is proportional to speed squared and work is proportional to force times distance). In this calculation "effective" vertical meters equal actual vertical meters plus a component equal to a rolling resistance coefficient times distance traveled. For example, 0.3% is a low-end estimate for a rolling resistance coefficient.

So referring back to my distance/speed approach, the approach which might be taken here is to say the best riders in the world can ride at up to 6.5 W/kg. So if a rider can produce work in excess of, for example, 600 J/kg above an average of 6.5 W/kg then I tag the segment. This would require 26.5 W/kg for 30 seconds, 16.5 W/kg for a minute, 8.5 W/kg for 5 minutes, up to 6.67 W/kg for an hour. This is a high threshold, but it's important to consider the rider may be in a pack or riding with a strong tailwind, and we really want to avoid "false positives" of tagging legitimate riding as motorized.

The 600 J, by the way, I got from the critical power model assuming a time constant AWC/CP of around 90 seconds.

For the power-force relationship, a crude approximation can be made. Consider, for example, a rider weighing 70 kg with CdA = 0.3 m² with a density of air of 1 kg/m³. Then traveling @ 1 m/sec takes 0.15 W, or traveling at 14 m/sec takes 411 W, close to 5.9 W/kg from wind resistance only. A coefficient of rolling resistance of 0.3% adds around 0.4 W/kg to this total, or 6.3 W/kg total. Add in 2% of power for drive train losses brings it to 6.4 W/kg, approximately.

With these numbers, inspired by a highly competitive time trial position, the 14 m/sec threshold on the flats looks like it will be hard to budge. So if you really want to avoid false positives from top-level racers, you need to set the bar high. Where this sort of approach will really help is where there's substantial altitude gain. There the car is much more likely to be flagged.

So how's the 500 meters compare with my 600J? With the old criterion, consider that 14 m/sec over 300 seconds would take you 4200 meters, so you'd need to go 500 more than this, or 19.0% faster. With the power criterion, the the threshold becomes 14.07 m/sec on flat ground, and for 300 seconds you'd need to go 2 W/kg more, which results in a speed faster by (8.5/6.5)1/3 = 8.8% faster. So for times on order 5 minutes, on the flat, the new criterion is still easier to trigger.

I'll give it a try and see what I get.

No comments: