Posts

Showing posts with the label climb ratings

using a modified Fiets formula to tune climb detection

Image
Last time I described that the recursive algorithm I proposed for finding climbs in a profile was: identify all non-overlapping rateable climbs in a profile: If there's no rateable climbs of some minimum climb rating, then we're done. identify the highest-rated climb in a profile. identify all rateable climbs preceding this climb (recursive) identify all rateable climbs following this climb (recursive) I implemented this in Perl, which went a lot faster than it had taken to implement my previous, unsuccessful iterative approach. I tested this on randomly generated "profiles". I put "profiles" in quotes because they're not very realistic. I had to define a "minimal" climb, so this I decided was 5 meters gained in 0.1 km. This is a 5% (approximate) grade for only 100 meters. So to be identified as a "climb" the simulated road would need to be steeper and/or gain more altitude. Initially I used the conventional Fiets formula...

identifying non-overlapping "climbs" in a profile: a recursive approach

Recently I became interested in Jobst Brandt's climbing-descending algorithm for the Avocet 50. Jobst died recently, and I think it's safe to say the man was absolutely brilliant. Among his many contributions to cycling is the Avocet 50 altimeter climbing-descending algorithm, which has been the "gold standard" for determining total climbing on routes. For many years it was the most reliable determination of what a cyclist would consider "climbing", filtering out small altitude fluctuations which could easily be due to "measurement noise". But to compare Jobst's algorithm to mine I needed hill profiles. So I wrote a little code to make random hill profiles. But it gave unrealistic results: rounded profiles, where the hills were more like sine waves than jagged peaks. This wasn't too surprising because the algorithm I used was simple: generate random-normal distributed altitude points then convolve the resulting profile with a well-be...

Highest rated climbs in Low-Key History

Image
In this Coordinator's Choice era of Low-Key Hillclimbs the balance of the schedule is left more to chance than to any grand plan. In this case, a few late-game changes in venue resulted in a schedule which is rather heavy at the top end. And as far as I'm concerned, that's fine: it's good to mix things up. One of these is week 6's Hicks Mt Umunhum. We've done this climb before. The first time was in 1996 when we started well ahead of the creek marking the steep climb of Hicks, then climbed up to the gate on what was then known, at least according to Peterson and Kluge , as Loma Almaden Road. I think now, however, a more common name is Mount Umunhum Road. In any case, we returned in 2008 , starting at the base of the Hicks climb, ending again at the gate. Thanks to the excellent work by coordinator Will Van Kaenel, however, this year we go beyond the gate to the white line marking the beginning of what may be the beginning of private property. Honestly...

Montara Mountain from Grant Ranch dirt climb

Image
Dirt climbs are fun, and while I've not ridden up this one (I've hiked it, and I've ridden down part of it), I decided to make a profile for it since it was recommended to me by a friend. Montara Mountain is often overlooked when cyclists think of large climbs in the Bay area. The reason is that unlike many other large hills, there's no paved roads to the top. However, this was not always the case, and the "Planet of the Apes" route follows what was the inland road ("San Pedro Mountain Road") between Pacifica to the north and Half Moon Bay to the south. This road was replaced by the Devil's Slide portion of Highway 1, and nature quickly asserted control. The "road" is now in many places little more than single-track, it's paved past evident only in broken patches of crumbling asphalt. This route begins at Grant Ranch, the southern extreme of Planet of the Apes. It then climbs steeply to a "Y", a left the route to Pa...

Black Road + Skyline to Castle Rock

Image
Typically climbs are up a single road (like Old La Honda Road), or up a relatively unambiguous path to a summit (like Diablo North Gate Road to Summit Road). But in the San Francisco Bay area, like many other places, there are often ridge roads into which roads up the hillside intersect. As Baird Webel pointed out to me when I was at Stanford, these side roads will typically seek out relatively low points in the ridge, so by turning when hitting the ridge road, the climb can be extended. He wasn't claiming this as an opportunity, but rather as a fate: don't take the ridge road for granted as the top of the climb. Another Baird quite, "We need to descend into that ?!?!", when looking down into the smog-shrouded Silicon Valley was similarly memorable, but that's a digression. Anyway, I typically ignore these sorts of options as "climbs". From the top of Old La Honda Road, for example,the climb can be extended without much traffic interference by turn...

Patterson Pass (E)

Image
Last year the Tour of California, for the first time, rode the east side of Patterson Pass, the last climb in the stage into Livermore. The result was domination of the Strava leader board as the group blasted over the climb, down the other side, into the city for a few finishing circuits, then to the sprint which was dominated by Peter Sagan. The Strava segment: Here's my rendering of the profile data: It begins gradually, traversing up the windmill-capped hill until the "oh-my-God" climb which leads to the pass. Although the view of this section is dramatic, the profile shows the grade is only 12%, which can cause distress but is not in the league of the steepest climbs in the Bay Area. Using my climb rating index , it rates 74% as high as Old La Honda Road. I've ridden this climb in two major events: the Devil Mountain Double and the Patterson Pass Road Race. In the former, it comes between Mount Diablo and climbing the west side of Mount Hamilton. It...

rating New Zealand climbs

Image
I've described a decent number of climb profiles from my trip to New Zealand, with profile data collected from a Garmin Edge 500 or, in the case of Haylocks, by Strava using topological data in conjunction with positions recorded by the Strava Android app. It's then obvious to ask: how do the climbs compare? Which was the toughest? Good question. First, some data. I plot here the altitude gained versus the climbing distance for each of the climbs. I define "the climb" as the portion of road which maximizes my climb rating, which I've described in this blog before. Here's the result, where I normalize each by the number associated with Old La Honda road: What makes a climb tough? To me, it's continuous time spent at a big grade, with a lot of altitude gained. click on image for expanded view profile of Haylocks from Maori church. Ignore wiggles, a mapping artifact; climb is continuously up. Click on image for larger view. Using an objectiv...

climbing Crown Range pt 1 : Wanaka side

Image
During a particularly good SF2G, I head the rider called "Space" say he'd been to New Zealand. I asked him what the best ride he'd done there. "Wanaka to Queenstown", he said. At that moment this became a "must-do" for my trip to the country. There's two routes connecting the two cities. The main route, Highway 6, goes around the mountain while the more direct route, Crown Range, goes over it. Obviously Space has been referring to the latter. Crown Range was only paved relatively recently. Indeed, the profile in Scott Kennedy's book marks it as dirt. The text description, on the other hand, makes no mention of a dirt surface (although gravel on shoulders is described in the summary directions). Obviously Lonely Planet had failed to update the profile in the edition where the text was updated with the new road work. The book has many issues. Strava verified Space had ridden the Crown Range. So when Cara and I arrived in Wanaka,...

San Bruno Hillclimb: Jan 1

Image
It is traditional that the top 3 men, top 3 women, top 3 juniors, and the Endurance Award winner of the Low-Key Hillclimb series are all awarded a free spot in Pen Velo's long-running San Bruno Hill Climb , held every year on Jan 1. I finished 4th, just out of the "money". But yesterday I signed up anyway, paying the entry fee: it's not often I have fitness and opportunity this time of year to do the climb. The USA Cycling page has it listed as a "time trial", but that's incorrect. It's a mass-start race, riders starting in waves from the base of Guadalupe Canyon Road near Bayshore, climbing to the "saddle point" marking the top of Guadalupe. Then from there it's a sharp right into the state park, down a short descent past the ranger kiosk, an immediate right turn over rough pavement a short straight, another right, pass back under Guadalupe Canyon, then the narrow, sometimes rough climb to the summit. Here's the profile: ...

Summerson's Guide to Climbing, Colorado Edition

I just got a copy of John Summerson's new book, the Guide to Climbing (by bike) in Colorado. It's not out yet, but I was very pleased John sent me an early copy. I really like what he's doing with this series ( web site here ): small, compact guides to various cycling-friendly regions in the United States. First he did his national book, and that was perfect for learning about regions (among those covered in the book) that I'd not ridden in, or perhaps (like Colorado) had ridden in but had failed to appreciate due to the restricted route options of a large organized tour. But obviously a modest single book cannot come close to doing justice the the climbs in the full United States, and if I am going to be traveling in a specific region, say Colorado, why should I want to carry around a heavy guide which includes climbs in Vermont, North Carolina, Hawaii, and the entire Pacific coast? These regional guides are perfect for that purpose. They're small, relative...

Comparing the Terrible Two, Climb to Kaiser, and Death Ride: Peak Climbing Segments

Image
Today I'll take another look at the route data from the Death Ride , Climb to Kaiser , and the Terrible Two . Here for each climb I first map the data onto a 50 meter grid, then slightly smooth it using an estimated 15 second time constant (the same as when I calculate a climb rating), then I map it back to a 50 meter point separation (since smoothing disturbs this at the beginning and end of the ride) then I calculate the total climbing (with zero threshold) between each pair of points on the route. For each segment length (which is the number of contiguous points minus one multiplied by 50 meters) I find the segment which maximizes this total climbing. The only efficiency trick is if I have a given segment length, I don't need to calculate it fresh each time: if I start with the segment from points 1000 to 2000 (length 50 km), and I want to calculate the climbing from points 1001 to 2001, I take the previous sum, subtract the climbing from 1000 to 1001, and then add the ...

Comparing the Terrible Two, Climb to Kaiser, and Death Ride

Image
First, a bit about the climbing algorithm. Just two paragraphs, I promise. Then on to good stuff. I just described an algorithm by which you can calculate total climbing from a route profile with a given "climbing threshold" designed to both eliminate small bumps which can be coasted over, but more importantly to get rid of the small altitude fluctuations which occur with "noise" in both barometric and GPS-based altimeters. I proposed that a 5 meter threshold worked well, but that there was no unique answer for what is the "true" climbing of a route. Well, that algorithm does work well for a relatively small climbing threshold, but when you crank the threshold up to the size of the largest hills on a ride, it can be fooled. For this post, I thus added an extra step to the process, in which peaks closer than the climbing threshold from the minimum altitude on the ride, and valleys closer than the threshold from the maximum altitude on the ride are b...

testing the corrected total climbing algorithm

Image
Okay, so déja-vu time. Once again I exercise my total climbing algorithm, except this time doing it right. Here's the ride from last Sunday again, where I plot total climbing versus the climbing threshold. I've "greyed out" the result from the flawed version of the flawed algorithm. The difference is most evident for the larger values of the climbing threshold, where there's more pruning to be done. As long as pruning was on isolated segments, the old algorithm did okay. It's when multiple sequential climbs and descents were clipped that things went sour. Now I look once again at the data from my ride. I plot here only the data from after I first crossed the west peak of Mt Tam. Here's the result using a 5 meter threshold, compared to the full measured profile: Next, the 15 meter threshold. This did okay last time, and with the improved clipping, it does even better. 15 meters is close to the 50 foot threshold I believe was used with the...

total climbing and descending algorithm: correct version

Last time I demonstrated how important it is to take some care in pruning points to simplify the profile while conserving climbs which are in excess of the minimum threshold. Before that, I'd proposed an algorithm to calculate total climbing and descending, but I was sloppy. Nevertheless even my flawed algorithm demonstrated that a climbing threshold of 5 meters was desirable. There's one key thing I was missing in my previous algorithm, and that's to make sure pruned segments are bounded on both the high and low side by adjacent points. So here's my revised approach. First, merge monotonic segments, as follows: Start with the first point. Until the following two segments are either climb-descend or descend climb, or until the following point is the final point in the ride, delete the following point. Move on to the next point and repeat the previous step if there's at least three points past the current point. So now the profile consists of uphill segm...

total climbing and descending algorithm: FAIL

Image
In my last few blog posts, I proposed a total climbing algorithm. Now to tell the truth, I didn't just invent this for the first time now -- years ago I wrote a program to decode files from the Specialized pBrain, a rather well-designed altitude-recoring cycling computer which actually cost more over 10 years ago than an Edge 500 does today, but having downloadable altitude profiles was so novel, I considered it worth every penny, at least until the bike I had it mounted to was stolen. I lost track of that old source code so I basically started from scratch to facilitate generating climbing statistics for the Low-Key Hillclimbs . Anyway, I was reviewing the plots I posted last time and I realized the algorithm I just described was flawed. You can see it most clearly in the 50 meter threshold plot: Ouch -- there's a bunch of low-lying fruit which remains unpicked in the 90-95 km range, all passed up for a higher point at km 103. This clearly isn't calculating total...

testing the total climbing algorithm

Image
On Sunday I did the following ride. I'd like to say this sort of thing is typical but sadly it was the longest ride I'd done in at least 5 weeks. New job and a tendency toward Sunday rain around here has kept me from getting in any long ones lately: I imported my Edge 500 data into GoldenCheetah , exported CSV, and ran it through my algorithm. As a test, I varied the climbing threshold from 1 meter to 100 meters. Here's the the result: Clearly, there's no "correct" answer, no unique value of total climbing. We generally agree if I make 100 different cycling computers and each measure distance, they should agree within, for example, 0.1% if perfectly calibrated. Sure, there's issues of whether they measure the distance traversed by the handlebars or by the tire-road contact patch if the bike banks into corners. But these are minor differences. However, with "total climbing", assuming you don't want to measure every vibration...

total climbing and descending algorithm

Image
Last time I described how the goal was to eliminate climbs less than some threshold (which I'll call h min ) while preserving the starting and ending altitude for a route. Here's the algorithm I implemented. A climb is represented as a series of points, each with a distance and altitude. I'll ignore distance. Distance might be used to apply some numerical smoothing to the data before implementing this algorithm, but that's optional. Here I care only about altitude. One approach might be to consider consecutive points and count only climbing or descending which exceeds h min . This obviously fails because a climb might consist of 1000 consecutive one-meter altitude gains. So then I might combine all adjacent non-descending segments together, then all adjacent non-climbing segments, etc, to yield alternating climb-descend-climb-descend. I could then eliminate the segments which gain or lose less than h min But this isn't so easy either. Consider a clim...

Calculating Net Climbing and Descending

Image
The Alta Alpine 8-pass challenge is listed with 20300 feet of climbing in 198 miles Whenever a route is described, for example a climb or a "century"-type ride, people want to know two pieces of information: distance and total climbing. There's not much to be said about total distance, although different methods (GPS versus counting wheel rotations versus using digital map data) may yield slightly different results. Climbing, on the other hand, is more challenging. You'd think it would be simple: for each adjacent pair of points a and b , if the route travels from a to b and b is higher, the difference in altitude is added to total climbing. If a is higher, the difference is added to total descending. Now b becomes the new a , the next point after the old b becomes the new b , and repeat. Except this doesn't work. The reason is measuring altitude typically involves errors which are different from one point to the next. Suppose I have points ev...

Mix Canyon Road

Image
Approaching Mt Vaca We're getting close to the end game in the 2010 Low-Key Hillclimbs and the mind naturally turns to the 2011 schedule. And there's one climb which I've wanted to visit ever since it was first suggested to me three years ago. That's Mix Canyon Road out of Vacaville. From Vacaville, you follow Pleasants Valley Road to the north until Mix goes off to the left. View Larger Map The usual response is it's sort of far afield. Sure, from San Jose it's 91 miles and it's 86 from Palo Alto but from San Francisco, where I live, it's closer than three of the climbs on the 2010 schedule. I'm not too worried about the distance. It's worth a bit of travel for a very special climb. After the turn the road climbs gradually but it gets steeper the further you go. Approaching the summit is a will-cracking 15% sustained, which means sections at 20% with "recovery" at around 10%. The combination of altitude gained, the ...

grade histogram: climbs from 2010 Low-Key series

Image
The coordinator for today's Low-Key Hillclimb made the call last night to pull the plug on today, worried about the Weather.com forecast that rain was likely. I'm a fan of the national weather service text forecasts, which are available, for example, on Weather Underground . Those had been more optimistic, that the rain would move in after our climb would have been finished, and that turned out to be the case. The roads were dry for when we would have been there. So Sierra got the axe. Ah, well, move on. Last time I introduced a new form of climb histogram plot. Here are such plots for the climbs on the Low-Key schedule for this year.. you can really tell a lot of a climb's character from these plots, I feel; they complement the profiles very nicely, and do much better than a simple plot of road grade, which tends to be too "noisy". Each plot is linked to the climb's profile page.