Posts

Showing posts from January, 2010

combining GPS and barometric altimetry: intro

Image
A discussion on the GoldenEmbed mailing list got me thinking. GoldenEmbed is an open source hardware project to produce an ANT+ compatible cycling head unit: one which can record power from a variety of ANT+ compatible power meters such as Quarq Cinqo , SRM , and MetriGear Vector . It's built out of some nice modules available from SparkFun , basically a modern version of what Radio Shack used to be: a source for electronic hobbyists. The project was inspired by the Quarq Qollector prototype shown at Interbike, and Tim Clark of MetriGear's similar ANT+ sniffer used in Vector development. The MetriGear data logger which in part inspired GoldenEmbed So some of the GoldenEmbed guys mentioned you could go beyond ANT+ sniffing and incorporate GPS and barometric altimetry: SparkFun sells all of the required hardware. Cool! This enables the development of the functionality Garmin provides. So the question is: what's the best way to manage both GPS-based altimetry and baro

power accuracy and the uniform cadence approximation

An interesting issue came up in the Wattage list , and that is that the Cinqo (and presumibly the SRM ) calculate power under the assumption that the pedal cadence is uniform throughout the pedal stroke. This is an interesting assumption, worth investigating, in light of my recent discussion of Metrigear hitting its 1.5% power target. In my discussion on Metrigear, there were two principal limiting factors to accuracy: one was nailing down the pedal orientation, the other was getting the pedal rotation rate correct. For the orientation, the system was getting close after only 20 seconds of my simulation of highly variable cadence, a worst-case scenario. Results I didn't show were that if I simulate longer periods, the system continues to improve on its orientation determination, and can nail that down to a fraction of a degree. That's good enough to separate out the "propulsive" component of force. On the other hand, the primary challenge remained the determ

simulating Metrigear Vector cadence extraction (pt 4: orientation)

Image
To extract cadence from accelerometer data is the accelerometers need to be properly oriented. So I constructed a simplistic scheme to extract the angle from the accelerations. It's super-simple: just accumulate average accelerations, then calculate a transformation rotation angle which beings one of them to zero. Consider the following diagram: From the perspective of the spindle, radial acceleration is always in the same direction. Tangential (I seem to alternate between calling this "tangential" and "transverse") acceleration is also always in the same direction, as long as the crank rotation is consistently increasing (or consistently decreasing). I also show a vector for road vibration. It's easy to see this will tend to cancel out over time for each spindle. When the spindle rotates 180 degrees, it's in the opposite direction relative to the spindle. The same deal with acceleration in the direction of motion. When the spindle rotates 180 de

simulating Metrigear Vector cadence extraction (pt 3: cadence accuracy)

Image
Last time I simulated the Metrigear Vector cadence extraction using reasonable assumptions about vertical and longitudinal vibrations, and a quite arbitrary choice on differential vibrations (separate for the left and right pedal). The result looked fairly good, despite the fact my algorithm for extraction is just something I hacked together on my train commute, hardly a best case of what one could do. I'm not using all the information which is available. I'm not really using the transverse component of acceleration, for example. But let's take a closer look at those numbers... I ran 10 simulations, and for each time, I calculated the error in the rpm from the ideal value (pre-noise). I calculated the root-means-squared of these errors, and plot them here versus the ideal cadence: Cadence errors, in revolutions per minute, are plotted on the y-axis. Also plotted is a curve derived from a simple analytic model, based on the amplitude assumed for the differential noise.

simulating Metrigear Vector cadence extraction (pt 2)

Image
Back to modeling the Metrigear Vector with my little Perl scripts... First I modeled the "inputs". I assumed vertical acceleration noise, affecting each pedal together, was around 1 g peak amplitude. I neglected internal modes, which I assume are too high frequency to affect the signal. So my vibration signals were simular to those described in this post . For longitudinal noise, also affecting each pedal together, I assumed less amplitude: around 0.5 g. I then added an additional noise component which affects each pedal independently, assuming a peak amplitude of around 0.25 g. Honestly I pulled this number out of thin air. Microaccelerometers typically have a noise density measured in the tens of micro-g's per root Hz. Electronic noise on the accelerometers isn't an issue, unless they're terribly starved for current. So the noise would have to be an actual acceleration noise. For example, crank flex would change the orientation of the spindles relative t

Dolphin South End Runners Club Waterfront 10-miler

Image
Today was my first road race of the season -- running road race, that is. In late 2008 I seat a goal of racing the Austin Marathon in 2009. It would be a fairly tight schedule, but I'd thought I could do it. Things were going well, as I raced first the Dolphin South End Runner's Club Embarcadero 10km road race , then the Pacific Coast Trail Runs Woodside 17 km , then the Run Wild for a Child 10 km road race. But then poor health following a cycling trip to Thailand and Laos put a stick into the spokes of that idea. But I built back some running fitness in time for the Enviro-Sports Woodside half-marathon trail run in Feb 2009. Cycling took my focus back after that. But in fall of 2009, I returned to a running/cycling mix to my activity. Unfortunately my enthusiasm got the better of me, though, and I ramped up my runs too quickly. Ever since then, I've had issues with my left leg, primarily the ITB. But I've been working on that, and it's coming around. So f

simulating Metrigear Vector cadence extraction (pt 1)

Image
I've done a lot of discussion about the MetriGear Vector . A brief summary of some conclusions. The Vector measures force components on the pedal. These force components can be derived from bending moments measured at at least two positions in the spindle. Power equals force in the direction of pedal motion multiplied by pedal speed. Pedal speed is rotation rate multiplied by crank length. Crank length can be derived from data, or instead as Metrigear has indicated, can be provided by the user. Providing it simplifies calculations. With a spindle firmly screwed into a crank, the propulsive direction is always the same, perpendicular to the direction of orbital (centripetal) acceleration. Acceleration in the tangential (propulsive) direction averages to zero, while the centripetal acceleration averages to a positive value. Determining which direction of acceleration averages to zero allows the system to orient itself, to determine which is the propulsive direction, without

drivetrain losses: same speed, different gear

Image
Last two times I looked at the results on drivetrain efficiency from having the same gear ratio, riding at the same power. This went to the question of whether it was better to ride a chainring with more or less teeth, choosing a rear cog to match cadence at the same power and speed. The answer was for low power/high cadence, you're better off in a low chainring, while at high power/low cadence you're better off with a bigger ring. A lot of issues go into gear choice, obviously. Ted Huang told me he put a 27-tooth cog on so he could ride the Cat's Hill Criterium , which has a climb of around 15% ( video from 2009 here ) so he wouldn't need to front-shift at the top. The model suggests he may have been better off doing so anyway, although it fails to penalize cross-chaining in any way (consistent with the experimental evidence, which isn't very sensitive to the matter). Hmmm, Ted, that doesn't look like the big ring to me... Anyway, another option is I'm

drivetrain losses: running some numbers

I ran my model for two conditions. The first was for 290 watts @ 80 rpm, the other for 50 watts @ 90 rpm. So what do we expect? At 290 watts @ 80 rpm, chain tension is relatively high. It gets harder to bend chains at higher tension, so reducing the amount of chain tension pays off. Lower chain tension comes from a bigger chainring. The crankset is a simple lever: force on the pedals is multiplied by the ratio of the crank length to the effective chainring radius, and that radius is proportional to the number of chainring teeth. Additionally the bending where it matters most, at the cog, is less in bigger front-rear combos. On the other hand, at 50 watts, chain tension is small. The built-in tension, both from the chain hanging and from the force of the chain components against each other, still dominates. Here more compact gears gain benefit from moving the chain more slowly. Links bend less often at slower chain speed, so this pays off. And the bending where it matters

Drivetrain losses: friction-based tension dependence

Image
After reviewing data from Spicer, from Kyle and Berto, from d'Herripon and Verhoeven, all I get is a headache. So to heck with experimental data. It's always a mistake to let experimental data get in the way of a good theory. So I'm going to forge ahead, and pull the numbers I like from the experiments, and resort to a simple theoretical model for the effect of chain tension on drivetrain loss. I'll start by trusting the pulley friction measurement data I used before , based on experimental data, sure, but experiments on a simpler system (a pulley on bearings) than on a more complex system (a full drivetrain): Kd = 94 mJ/rev for Shimano Dura-Ace Kd = 2.4 mJ/rev for CeramicSpeed pulleys Data measured by Mark Kelly : Kd = 37 mJ/rev (standard bearings) Kd = 6.4 mJ/rev (high quality steel bearings) Then based on a pin diameter of 5/32 inches = 3.97 mm, and using a coefficient of friction for steel-on-steel with a smooth oxide coating = 0.27 , with a tooth pi

Metrigear Vector versus Brim Brothers

Image
Brim Brothers just published an update on their status , the first one since Eurobike last year. Brim Brothers system looks very promising: put the force sensors in the cleat of the cycling shoe. That sounds a lot like Metrigear Vector , right? Well, not quite. I've made a large number of posts here about the Vector, as it's fun trying to figure out how it works. But there's a very important difference between the two. This is hinted at in the Brim Brothers blog post: The most important (and most fun) part of the algorithm is taking the accelerometer data and using it to work out cadence, crank angle and pedal angle at each sample point. This is the same kind of technology that allows a Wii control or an iPhone to detect movements, but we need to use it to measure complex rotational movements very accurately. Having the accelerometer attached to the cleat/shoe (which rocks back and forth by an unpredictable amount all the time) makes this a lot more complex than, say,

Bas d'Herripon and Jan Verhoeven's drivetrain loss measurements

Image
In Human Power 48 (1999) , Dave Wilson does a nice review of posts to the now defunct Bicycling Science mailing list (previously called "Hardcore Bicycle Science", presumably named to discourage the usual idle chatter which had diluted the rec.bicycles.tech USENET group). The most relevant data to my purpose was credited to Jan Verhoeven, although details were not available. Searching the list archives, I found similar data from Bas d'Herripon . Both tests were on a Shimano Deore LX drivetrain. Here's the results from d'Herripon: N f N r efficiency 22 28 98.2 22 24 97.3 22 21 97.9 22 18 96.5 32 21 95.3 32 18 94.4 32 16 93.8 32 14 93.3 42 16 92.8 42 14 91.5 42 12 91.6 42 11 91.6 For d'Herripon, crank cadence was at 70 rpm. I assume the same for Verhoeven. Both data sets were for drive power of 200 watts. My model has three unknowns: K, T 0 , and K d . But as before, I can set K d based on specific measurements, using a value of 94 mJ/revolution measured o

Coastal Trail Runs: Huddart Park 17km

Image
Today I ran the Coastal Trail Runs Woodside Trail Run , starting in Huddart Park. I did the "11 mile" course, the same course as the Pacific Coast Trail Runs "17 km" course in the same location. No coincidence: Coastal Trail Runs is the "sister" company to Pacific Coast Trail Runs , more low-key, with less focus on distance. I know what you're thinking: "but 11 miles is 703 meters longer than 17 km!" Indeed the "fine print" distance is 10.6 miles, not 11. That's 17.06 km. In this case, "less focus on distance" meant the long run was "only" a marathon (42.194 km) instead of 50 km.... And you really can't get much more low-key than PCTR. But maybe I'm biased by the standards of bike racing. Anyway, the run started with a short descent, but then from there climbed steadily until it flattened out before the turnaround at 6.0 miles. I reached that in 56:53, fifth overall. By 57:07 I'd dr

Kyle and Berto's drivetrain efficiency data

Image
Last time I discussed Spicer's measurements published in Human Power 50 (2000) . The key issue there is that drivetrain efficiency consisted of a component associated with infinite chain tension, plus an additional contribution proportional to the recprocal of chain tension. Each of these terms, the slope and intercept versus 1/tension, depends on some combination of the reciprocals of chainring teeth, cog teeth, and pulley teeth. The problem is for infinite tension, or worst with infinite tension and infinite-sized chainrings and cogs, the extrapolated efficiency exceeded 100%. For example my regressions had a maximum efficiency of 106.6%. Bonanza! The energy crisis is solved! But onward to other measurements. In Human Power 52, summer 2001 , Chester Kyle and Frank Berto published some really nice experiments measuring drivetrain efficiency, of primary interest being those of an Ultegra 3×9 system. They did their measurements with the crank driving the hub, and the hub d

Drivetrain losses: Spicer's data

Image
Recall Spicer did some nice drivetrain efficiency measurements, which he published in Human Power 50, 2000. His argument is that chain tension is an important parameter, that higher tension tends to yield higher efficiency. Here's his result again: Spicer 's efficiency measurements as a function of reciprocal chain tension for each of three rear cogs My model described dissipated power rather than drivetrain efficiency. To get efficiency (ν), I take the power dissipation as a function of T and divide it by power P, where T / P = chain speed = R L = C N f L. ν ≡ 1 ‒ P dt / P = 1 ‒ (K / L) [1/N f + 1/N r + 2 (T 0 / T) (1/N f + 1/N r + 2/N d )] ‒ K d / (N d T L). Spicer says efficiency depends on T but is independent of chain speed. However, since Spicer uses a conatant N f , for him constant chain speed simply means constant C. the above equation is indeed independent of C. Furthermore, Spicer says ν is well fit by a formula ν = ν ∞ ‒ α / T for some constant ν

drivetrain losses: simple model

Image
My model for drivetrain losses, which I'm sure is unoriginal as it's so obvious, is to model the power loss as each chain link completes a circuit: Bicycle drivetrain from Wikipedia . Start at the bottom of the crank. The chain link is at a fixed tension determined by the derailleur spring. It moves backward, not bending, until it reaches the bottom derailleur pulley. This motion dissipates negligible energy. Note there is some bending here due to a nonideal chain line. But I'll believe Spicer 's assertion, which I found surprising, that chainline is relatively unimportant. The chain link bends as it contacts the bottom deraileur pulley. It does so under low tension. The amount of bending is independent of the gear selection. This dissipates some energy. The chain link moves along with the pulley. This dissipates negligible energy. The chain link unbends after losing contact with the bottom pulley. This dissipates energy. Still the tension is low, set by the

drivetrain losses: introduction

Image
Drivetrain losses are an important factor in cycling. A sort of canonical number is they are responsible for 3% of total power during high-intensity riding. Wilson's Bicycling Science 3rd edition (2004, MIT Press) page 343 shows data indicating at 200 watts, losses vary from 2.4% to 3.1% among three gear choices with a clean chain:   6-speed derailleur Power (W) 24T cog 19T cog 13T cog 50 94.2% 94.1% 92.1% 100 96.2% 96.4% 94.9% 200 97.4% 97.6% 96.9% 400 98.1% 98.4% 97.8% A comparison of a "no rust, lubricated" chain to a "rusty, dry" chain yields a difference of 4-5% (absolute) at 200 watts, which is huge. Anyway, from these data it's clear a fixed "drivetrain efficiency" is a poor model. Even if you allow the efficiency to vary from one gear to another, there's a clear power dependence. And allowing an "efficiency" to vary with power is obviously obfuscated: you're applying a model that drivetrain losses are propo

closing a gap with head down

Image
I did a quick calculation of the effect of the head position on closing a gap. Suppose I'm chasing a group riding @ 40 kph and I can ride with the head up at 45 kph. I can't sustain that pace for too long, so the clock's ticking. I have to close that gap as quickly as possible. I'll do an first-order analysis, which means I assume a starting condition then apply a first-order correction for the small change. In this case the head position change is a small fraction of total wind drag, so the linear analysis should do fairly well. It wouldn't do well, for example, were I to swap my bike for a recumbent... an interesting thought. Furthermore, I neglect drivetrain losses. Calculated powers are "PowerTap" equivalent. I assume drivetrain losses are proportional to transmitted power. Baseline condition: CdA = 0.32 m² M = 65 kg ρ = 1.1 kg/m³ (air density) g = 9.81 m/s² Crr = 0.5% (rolling resistance coefficient) Then I get 40 watts dissipated in rolling

head position while on the drops

Image
I got on the trainer and tried the following two positons, both representing a "chase to close a gap" mode (I couldn't necessarily hold these positions for a half hour, for example). In the top photo, I've got my head up to focus on where I'm going. I used to ride this way all the time. In the bottom, I'm shrugging my shoulders and relaxing my head, looking up to look forward. I can see fine, it's just I'm looking up instead of straight. In the top photo it actually seems my arms are more bent (sloppy of me). Yet despite this advantage, you can clearly see my head is higher above my back: the difference to the bottom position is a full 5.6 cm. With a head width of 17 cm (which I measured), Cd = 0.8, air density = 1.1 kg/m³, I can calculate the effect of a 5.6 cm drop in head position on power, assuming power depends on frontal cross-section and the head down allows more of my torso to draft. The result: 6.7 watts @ 45 kph. Chasing to close gaps i

changing setback

Image
I took a break from thinking about the Metrigear Vector to think a bit about position, after the subject came up in BikeTech Review . Position's a tricky deal. Move the saddle forward and you feel like sliding back. Then move the saddle back and you feel like riding on the nose. Saddle fore-aft must be dialed in, right? Wrong. The reason is when you change the fore-aft position of the saddle, you're changing other things as well. For example, the distance from the saddle to the bars. Keith Bontrager has an interesting article on position, based on physics. His argument is the key thing is to get your center-of-mass positioned correctly for good handling in the different orientations you typically find yourself. The bike should be balanced in the saddle, out of the saddle sprinting, and out of the saddle climbing. I might add descending is another position which counts. But if you have the right center of mass relative to the bottom bracket, and the right bottom bracket