mirror of
https://github.com/GoldenCheetah/GoldenCheetah.git
synced 2026-02-13 08:08:42 +00:00
first pass at a new User's Guide
This commit is contained in:
@@ -17,6 +17,9 @@ install:
|
||||
rsync -avz -e ssh $(HTML) $(TARBALLS) $(OTHER) \
|
||||
srhea.net:wwwroot/goldencheetah.org/
|
||||
|
||||
command-line.html: command-line.content genpage.pl
|
||||
./genpage.pl "Legacy Command-Line Tools" $< > $@
|
||||
|
||||
contact.html: contact.content genpage.pl
|
||||
./genpage.pl "Contact Us" $< > $@
|
||||
|
||||
|
||||
BIN
doc/choose-a-cyclist.png
Normal file
BIN
doc/choose-a-cyclist.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
232
doc/command-line.content
Normal file
232
doc/command-line.content
Normal file
@@ -0,0 +1,232 @@
|
||||
<!-- $Id: users-guide.content,v 1.5 2006/05/27 16:32:46 srhea Exp $ -->
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Using the Command Line Utilities
|
||||
</font></big>
|
||||
|
||||
<p>
|
||||
In addition to the GUI, Golden Cheetah comes with
|
||||
several command line utilities:
|
||||
<code>ptdl</code>, which downloads ride data from a PowerTap Pro version 2.21
|
||||
cycling computer, <code>ptunpk</code>, which unpacks the raw bytes downloaded
|
||||
by <code>ptdl</code> and outputs more human-friendly ride information, and
|
||||
<code>cpint</code>, which computes your critical power (see below). We've
|
||||
also written several Perl scripts to help you graph and summarize the data.
|
||||
|
||||
<p>
|
||||
NOTE: We no longer support the use of the command-line tools. Please use the
|
||||
graphical version of GoldenCheetah instead. This documentation is here for
|
||||
the benefit of the brave alone.
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Extracting the Data
|
||||
</font></big>
|
||||
<p>
|
||||
First, make sure you have the FTDI drivers installed, as described in the <a
|
||||
href="users-guide.html">User's Guide</a>. You can then run <code>ptdl</code>
|
||||
without arguments:
|
||||
|
||||
<pre>
|
||||
$ ./ptdl
|
||||
Reading from /dev/tty.usbserial-3B1.
|
||||
Reading version information...done.
|
||||
Reading ride time...done.
|
||||
Writing to 2006_05_15_11_34_03.raw.
|
||||
Reading ride data..............done.
|
||||
$ head -5 2006_05_15_11_34_03.raw
|
||||
57 56 55 64 02 15
|
||||
60 06 05 0f 6b 22
|
||||
40 08 30 00 00 00
|
||||
86 0e 74 99 00 55
|
||||
81 06 77 a8 40 55
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
If everything goes well, <code>ptdl</code> will automatically detect the
|
||||
device (<code>/dev/tty.usbserial-3B1</code> in the example above), read the
|
||||
ride data from it, and write to a file named by the date and time at which the
|
||||
ride started (<code>2006_05_15_11_34_03.raw</code> in the example; the format
|
||||
is YYYY_MM_DD_hh_mm_ss.raw).
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Unpacking the Data
|
||||
</font></big>
|
||||
<p>As shown by the <code>head</code> command above, the data in this
|
||||
<code>.raw</code> file is just the raw bytes that represent your ride. To
|
||||
unpack those bytes and display them in a more human-friendly format, use
|
||||
<code>ptunpk</code>:
|
||||
|
||||
<pre>
|
||||
$ ./ptunpk 2006_05_15_11_34_03.raw
|
||||
$ head -5 2006_05_15_11_34_03.dat
|
||||
# Time Torq MPH Watts Miles Cad HR Int
|
||||
# 2006/5/15 11:34:03 1147707243
|
||||
# wheel size=2096 mm, interval=0, rec int=1
|
||||
0.021 13.1 2.450 43 0.00781 0 85 0
|
||||
0.042 13.4 5.374 97 0.00912 64 85 0
|
||||
</pre>
|
||||
|
||||
<code>ptunpk</code> takes a <code>.raw</code> file for input and writes a
|
||||
<code>.dat</code> file as output. Lines that start with an ampersand ("#") in
|
||||
this file are comments; the other lines represent measured samples. As shown
|
||||
by the first comment in the file, the columns are: time in minutes, torque in
|
||||
Newton-meters, speed in miles per hour, power in watts, distance in miles,
|
||||
cadence, heart rate, and interval number.
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Summarizing the Data
|
||||
</font></big>
|
||||
<p>
|
||||
We hope to have a graphical interface to these programs soon, but until then,
|
||||
the only summarization tools we have are command-line programs. The script
|
||||
<code>intervals.pl</code> summarizes the intervals performed in a workout:
|
||||
|
||||
<small>
|
||||
<pre>
|
||||
$ ./intervals.pl 2006_05_03_16_24_04.dat
|
||||
Power Heart Rate Cadence Speed
|
||||
Int Dur Dist Avg Max Avg Max Avg Max Avg Max
|
||||
0 77:10 19.3 213 693 134 167 82 141 16.0 27.8
|
||||
1 4:03 0.9 433 728 175 203 84 122 13.0 18.8
|
||||
2 7:23 1.0 86 502 135 179 71 141 16.0 28.2
|
||||
3 4:27 0.9 390 628 170 181 70 100 12.0 17.6
|
||||
4 8:04 0.9 60 203 130 178 50 120 18.0 30.1
|
||||
5 4:30 0.9 384 682 170 179 79 113 11.0 18.6
|
||||
6 8:51 1.1 53 245 125 176 70 141 8.0 26.6
|
||||
7 2:48 0.4 400 614 164 178 62 91 8.0 13.6
|
||||
8 7:01 1.1 46 268 128 170 71 141 12.0 28.8
|
||||
9 4:30 0.9 379 560 168 180 81 170 11.0 18.3
|
||||
10 28:46 6.5 120 409 128 179 79 141 15.0 31.0
|
||||
</pre>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
In the example above, a rider performed five hill intervals, four of which
|
||||
climbed a medium size hill that took about 4-5 minutes to climb (intervals
|
||||
1, 3, 5, and 9), and one on a shorter hill that took just under 3 minutes to
|
||||
climb (interval 7).
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Graphing the Data
|
||||
</font></big>
|
||||
<p>
|
||||
For graphing the data in the ride, we use <code>smooth.pl</code> and the
|
||||
<code>gnuplot</code> program. You can use <a href="sample.gp">sample.gp</a>
|
||||
to graph the power, heart rate, cadence, and speed for the hill workout above:
|
||||
|
||||
<pre>
|
||||
$ gnuplot sample.gp
|
||||
</pre>
|
||||
|
||||
<img align="center" alt="Sample Plot" src="sample.png">
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Finding Your "Critical Power"
|
||||
</font></big>
|
||||
<p>
|
||||
Joe Friel calls the maximum average power a rider can sustain over an interval
|
||||
the rider's "critical power" for that duration. The <code>cpint</code>
|
||||
program automatically computes your critical power over all interval lengths
|
||||
using the data from all your past rides. This program looks at all the
|
||||
<code>.raw</code> files in a directory, calculating your maximum power over
|
||||
every subinterval length and storing them in a corresponding <code>.cpi</code>
|
||||
file. It then combines the data in all of the <code>.cpi</code> files to find
|
||||
your critical power over <i>all</i> subintervals of <i>all</i> your rides.
|
||||
|
||||
<pre>
|
||||
$ ls *.raw
|
||||
2006_04_28_10_48_33.raw 2006_05_10_17_08_30.raw 2006_05_18_16_32_53.raw
|
||||
2006_05_03_16_24_04.raw 2006_05_13_10_29_12.raw 2006_05_21_12_25_07.raw
|
||||
2006_05_05_10_52_05.raw 2006_05_15_11_34_03.raw 2006_05_22_18_28_47.raw
|
||||
...
|
||||
2006_05_09_09_54_29.raw 2006_05_17_16_44_35.raw
|
||||
$ ./cpint
|
||||
Compiling data for ride on Fri Apr 28 10:48:33 2006...done.
|
||||
Compiling data for ride on Sat Apr 29 10:07:48 2006...done.
|
||||
Compiling data for ride on Sun Apr 30 14:00:17 2006...done.
|
||||
...
|
||||
Compiling data for ride on Mon May 22 18:28:47 2006...done.
|
||||
0.021 1264
|
||||
0.042 1221
|
||||
0.063 1216
|
||||
...
|
||||
5.019 391
|
||||
...
|
||||
171.885 163
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Over this set of rides, the rider's maximum power is 1264 watts, achieved over
|
||||
an interval of 0.021 minutes (1.26 seconds). Over all five-minute
|
||||
subintervals, he has achieved a maximum average power of 391 watts. The
|
||||
longest ride in this set was 171.885 minutes long, and he averaged 163 watts
|
||||
over it.
|
||||
|
||||
<p>
|
||||
We can graph the output of <code>cpint</code> using <code>gnuplot</code> with
|
||||
<a href="cpint.gp">cpint.gp</a>:
|
||||
|
||||
<pre>
|
||||
$ ./cpint > cpint.out
|
||||
$ gnuplot cpint.gp
|
||||
</pre>
|
||||
|
||||
<img src="cpint.png">
|
||||
|
||||
<p>
|
||||
The first time you run <code>cpint</code> it will take a while, as it has to
|
||||
analyze all your past rides. On subsequent runs, however, it will only
|
||||
analyze new files.
|
||||
|
||||
<p><i>Training and Racing with a Power Meter</i> (see the <a
|
||||
href="faq.html">FAQ</a>) contains a table of critical powers of Cat 5 cyclists
|
||||
up through international pros at interval lengths of 5 seconds, 1 minute, 5
|
||||
minutes, and 60 minutes. Using this table and the <code>cpint</code> program,
|
||||
you can determine whether you're stronger than others in your racing category
|
||||
at each interval length and adapt your training program accordingly.
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Converting Old Data
|
||||
</font></big>
|
||||
|
||||
<p>
|
||||
If you've used the PowerTuned software that comes with the PowerTap you may
|
||||
have lots of old ride data in that program that you'd like to include in your
|
||||
critical power graph. You can convert the <code>.xml</code> files that
|
||||
PowerTuned produces to <code>.raw</code> files using the <code>ptpk</code>
|
||||
program:
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
$ ./ptpk 2006_04_27_00_23_28.xml
|
||||
$ head -5 2006_04_27_00_23_28.raw
|
||||
57 56 55 64 02 15
|
||||
60 06 04 7b 80 17
|
||||
40 08 30 00 00 00
|
||||
84 04 00 24 00 ff
|
||||
83 03 00 d7 00 ff
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
<code>ptpk</code> assumes the input <code>.xml</code> file was generated with
|
||||
a wheel size of 2,096 mm and a recording interval of 1. If this is not the
|
||||
case, you should specify the correct values with the <code>-w</code> and
|
||||
<code>-r</code> options.
|
||||
|
||||
<p>
|
||||
Note that the PowerTuned software computes the output speed in miles per hour
|
||||
by multiplying the measured speed in kilometers per hour by 0.62, and the
|
||||
miles per hour values in a <code>.xml</code> file are thus only accurate to
|
||||
two significant figures, even though they're printed out to three decimal
|
||||
places. Because of this limitation, the sequence <code>ptpk</code>,
|
||||
<code>ptunpk</code> is not quite the identity function; in particular, the
|
||||
wattage values from <code>ptpk</code> may only be accurate to two significant
|
||||
digits.
|
||||
|
||||
BIN
doc/critical-power.png
Normal file
BIN
doc/critical-power.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 149 KiB |
BIN
doc/main-window.png
Normal file
BIN
doc/main-window.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 203 KiB |
27
doc/power.zones
Normal file
27
doc/power.zones
Normal file
@@ -0,0 +1,27 @@
|
||||
From BEGIN until 2006/07/17, CP=297:
|
||||
1, Active Recovery, 122, 167
|
||||
2, Endurance, 167, 228
|
||||
3, Tempo, 228, 274
|
||||
4, Lactate Threshold, 274, 319
|
||||
5, VO2 Max, 319, 365
|
||||
6, Anaerobic Capacity, 365, 678
|
||||
7, Sprinting, 678, MAX
|
||||
|
||||
From 2006/07/17 until 2007/02/05, CP=329:
|
||||
1, Active Recovery, 135, 185
|
||||
2, Endurance, 185, 253
|
||||
3, Tempo, 253, 303
|
||||
4, Lactate Threshold, 303, 354
|
||||
5, VO2 Max, 354, 404
|
||||
6, Anaerobic Capacity, 404, 752
|
||||
7, Sprinting, 752, MAX
|
||||
|
||||
From 2007/02/05 until END, CP=347:
|
||||
1, Active Recovery, 139, 191
|
||||
2, Endurance, 191, 260
|
||||
3, Tempo, 260, 312
|
||||
4, Lactate Threshold, 312, 364
|
||||
5, VO2 Max, 364, 416
|
||||
6, Anaerobic Capacity, 416, 774
|
||||
7, Sprinting, 774, MAX
|
||||
|
||||
@@ -1,241 +1,226 @@
|
||||
<!-- $Id: users-guide.content,v 1.5 2006/05/27 16:32:46 srhea Exp $ -->
|
||||
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Using the GUI
|
||||
Step 1: Installing the FTDI drivers
|
||||
</font></big>
|
||||
|
||||
<p>
|
||||
Using the graphical version of Golden Cheetah should be pretty
|
||||
self-explanatory. Download the disk image from the <a
|
||||
href="download.html">download page</a>, drag the Golden Cheetah application
|
||||
into your Applications folder, open your Applications folder, and then double
|
||||
click on Golden Cheetah.
|
||||
Before you can download rides from your PowerTap, you may need to install the
|
||||
FTDI Virtual COM Port (VCP) drivers. If you're running Linux kernel 2.6.9 or
|
||||
greater, they're already included. If you're running Mac OS X or an earlier
|
||||
version of Linux, download them from
|
||||
<a href="http://www.ftdichip.com/Drivers/VCP.htm">FTDI's website</a> and follow
|
||||
<a href="http://www.ftdichip.com/Documents/InstallGuides.htm">FTDI's
|
||||
instructions</a> to install them.
|
||||
|
||||
<p>
|
||||
If you're running Linux, you may also need to uninstall the <code>brtty</code>
|
||||
(Braille TTY) application, as it interferes with FTDI's driver. The command
|
||||
|
||||
<pre>
|
||||
sudo apt-get remove brtty
|
||||
</pre>
|
||||
|
||||
should do the trick on Debian/Ubuntu.
|
||||
|
||||
<p>
|
||||
The latest version (7.1.1) of Saris's PowerAgent software uses an incompatible
|
||||
version of FTDI's driver from the one GoldenCheetah uses, and PowerAgent
|
||||
removes the driver that GoldenCheetah needs when you install PowerAgent. If
|
||||
you want to run both GoldenCheetah and PowerAgent, you need to use PowerAgent
|
||||
version 7.0.1 or earlier. We're working to correct this problem, but we're
|
||||
not there yet.
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Using the Command Line Utilities
|
||||
Step 2: Installing GoldenCheetah
|
||||
</font></big>
|
||||
|
||||
<p>
|
||||
In addition to the GUI, Golden Cheetah comes with
|
||||
several command line utilities:
|
||||
<code>ptdl</code>, which downloads ride data from a PowerTap Pro version 2.21
|
||||
cycling computer, <code>ptunpk</code>, which unpacks the raw bytes downloaded
|
||||
by <code>ptdl</code> and outputs more human-friendly ride information, and
|
||||
<code>cpint</code>, which computes your critical power (see below). All three
|
||||
are written in simple C code but have only been tested on Mac OS X so far.
|
||||
We've also written several Perl scripts to help you graph and summarize the
|
||||
data.
|
||||
To install GoldenCheetah, go to <a href="download.html">the download page</a>
|
||||
and download the version for your operating system and processor.
|
||||
|
||||
<p>
|
||||
On Mac OS X, when the download finishes, Mac OS X should automatically open
|
||||
the <code>.dmg</code> file for you. If not, double-click to open it. Drag
|
||||
the GoldenCheetah icon into your Applications folder, and you're done.
|
||||
|
||||
<p>
|
||||
The Linux version of GoldenCheetah is distributed as a tarball. Download this
|
||||
file and save it to <code>/tmp</code>, then from a terminal:
|
||||
|
||||
<pre>
|
||||
cd /tmp
|
||||
tar xzvf GoldenCheetah_DATE_Linux_x86.tgz
|
||||
cd GoldenCheetah_DATE_Linux_x86
|
||||
sudo cp GoldenCheetah /usr/local/bin
|
||||
cd ..
|
||||
rm -rf GoldenCheetah_DATE_Linux_x86.tgz
|
||||
</pre>
|
||||
|
||||
Be sure to replace "DATE" with the date of the revision you downloaded, such
|
||||
as "2007-09-23".
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Extracting the Data
|
||||
Step 3: Running GoldenCheetah
|
||||
</font></big>
|
||||
<p>
|
||||
To use <code>ptdl</code>, you'll first need to install
|
||||
<a href="http://www.ftdichip.com/Drivers/VCP.htm">the drivers</a> for the
|
||||
FTDI chip the PowerTap Pro USB Downloader uses. Once these are installed, you
|
||||
should be able to just run <code>ptdl</code> without arguments:
|
||||
|
||||
<pre>
|
||||
$ ./ptdl
|
||||
Reading from /dev/tty.usbserial-3B1.
|
||||
Reading version information...done.
|
||||
Reading ride time...done.
|
||||
Writing to 2006_05_15_11_34_03.raw.
|
||||
Reading ride data..............done.
|
||||
$ head -5 2006_05_15_11_34_03.raw
|
||||
57 56 55 64 02 15
|
||||
60 06 05 0f 6b 22
|
||||
40 08 30 00 00 00
|
||||
86 0e 74 99 00 55
|
||||
81 06 77 a8 40 55
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
If everything goes well, <code>ptdl</code> will automatically detect the
|
||||
device (<code>/dev/tty.usbserial-3B1</code> in the example above), read the
|
||||
ride data from it, and write to a file named by the date and time at which the
|
||||
ride started (<code>2006_05_15_11_34_03.raw</code> in the example; the format
|
||||
is YYYY_MM_DD_hh_mm_ss.raw).
|
||||
To run GoldenCheetah on Mac OS X, double-click on the GoldenCheetah icon in
|
||||
your Applications folder. On Linux, just type "GoldenCheetah" at the prompt.
|
||||
|
||||
<p>
|
||||
The first time you run GoldenCheetah, you'll get an empty "Choose a Cyclist"
|
||||
dialog box:
|
||||
|
||||
<p>
|
||||
<center><img src="choose-a-cyclist.png"></center>
|
||||
|
||||
<p>
|
||||
Click on "New...", enter your name, and then select your name and click
|
||||
"Open". After that, the main GoldenCheetah window will open:
|
||||
|
||||
<p>
|
||||
<center><img src="main-window.png"></center>
|
||||
|
||||
<p>
|
||||
Your main window won't yet have any rides in it, of course. To fix that, you
|
||||
need either to download a ride from your PowerTap or import one from another
|
||||
program. GoldenCheetah can import <code>.srm</code> files recorded on SRM
|
||||
power meters and <code>.csv</code> files created by other programs. To
|
||||
download a file from your PowerTap, select "Ride->Download from device..."
|
||||
from the menu. To import one, select either "Ride->Import from SRM..." or
|
||||
"Ride->Import from CSV...".
|
||||
|
||||
<p>
|
||||
Once you've downloaded or imported a ride, you can see some simple statistics
|
||||
about it on the "Ride Summary" page: your total riding time and average power,
|
||||
for example. If you click on the "Ride Plot" tab at the top of the screen,
|
||||
you can see a graph of your speed, power, cadence, and heart rate during the
|
||||
ride. The "Power Histogram" shows how much time you spent at each power
|
||||
during the ride, and the "Notes" tab allows you to record notes about the
|
||||
ride. The "Weekly Summary" shows your total time and work for the week.
|
||||
|
||||
<p>
|
||||
The "Critical Power Plot" is one of the most useful features of GoldenCheetah.
|
||||
It shows the highest average power you attained for every interval length
|
||||
during the ride. Some people call this the "Mean Maximal Power" graph. The
|
||||
green line shows values for this ride; the red line shows the combination of
|
||||
all your rides. (If you only have one ride so far, the two lines will
|
||||
overlap.) Clicking on the graph with your mouse brings up a blue line, and
|
||||
the values under this line are shown at the bottom of the screen.
|
||||
|
||||
<p>
|
||||
It helps to think about an example:
|
||||
|
||||
<p>
|
||||
<center><img src="critical-power.png"></center>
|
||||
|
||||
<p>
|
||||
In this example, the blue line is right around the 14-second mark on the
|
||||
x-axis. So the values shown under "Today" and "All Rides", at the bottom, are
|
||||
the hardest the cyclist went for any 14-second period during the ride itself
|
||||
and during all rides he's ever recorded in GoldenCheetah. Since the two
|
||||
values are the same, he set a new personal record during this ride.
|
||||
|
||||
<p>
|
||||
The Critical Power Plot is most useful before you're going to go do intervals
|
||||
or a time trial. Say you want to do six 2-minute intervals with three minutes
|
||||
rest in between. Click on the Critical Power Plot, drag the blue line to the
|
||||
2-minute mark, and read the value shown in "All Rides". That's the hardest
|
||||
you've ever gone for two minutes. Now go out and try to beat it!
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Unpacking the Data
|
||||
Step 4: Setting Up Your Power Zones
|
||||
</font></big>
|
||||
<p>As shown by the <code>head</code> command above, the data in this
|
||||
<code>.raw</code> file is just the raw bytes that represent your ride. To
|
||||
unpack those bytes and display them in a more human-friendly format, use
|
||||
<code>ptunpk</code>:
|
||||
|
||||
<p>
|
||||
If you look back at the screenshot above, you may notice that there are
|
||||
several things shown in the "Ride Summary" tab that aren't on your version.
|
||||
The picture above shows a non-zero "Bike Score", and there's a list of how
|
||||
much time the cyclist spent in each "Power Zone" during the ride as well.
|
||||
|
||||
<p>
|
||||
BikeScore(TM) is a measure of the physiological stress you underwent during a
|
||||
ride. It was developed by Dr. Philip Skiba, and you can read more about it in
|
||||
<a href="http://www.physfarm.com/Analysis%20of%20Power%20Output%20and%20Training%20Stress%20in%20Cyclists-%20BikeScore.pdf">an article he wrote</a>.
|
||||
|
||||
<p>
|
||||
For GoldenCheetah to compute your BikeScore and the time spent in each power
|
||||
zone, you first need to tell it what your power zones and critical power
|
||||
are. You can define your power zones however you like, maybe using the ones
|
||||
defined by Joe Friel, for example. Your critical power should be the
|
||||
maximum power you can sustain over an hour. Some people call this your
|
||||
"lactate threshold" or "functional threshold power". Our friend Bill says a
|
||||
rose by any other name would smell as sweet.
|
||||
|
||||
<p>
|
||||
We'll have a dialog box that will let you set up your power zones and
|
||||
critical power in a future version of GoldenCheetah, but for now you'll need
|
||||
to use a text editor. On Linux, that probably means nano, vi, or emacs.
|
||||
On Mac, it means TextEdit, which is in your Applications folder. Start by
|
||||
downloading <a href="power.zones">this sample file</a> and saving it in
|
||||
|
||||
<pre>
|
||||
$ ./ptunpk 2006_05_15_11_34_03.raw
|
||||
$ head -5 2006_05_15_11_34_03.dat
|
||||
# Time Torq MPH Watts Miles Cad HR Int
|
||||
# 2006/5/15 11:34:03 1147707243
|
||||
# wheel size=2096 mm, interval=0, rec int=1
|
||||
0.021 13.1 2.450 43 0.00781 0 85 0
|
||||
0.042 13.4 5.374 97 0.00912 64 85 0
|
||||
~/Library/GoldenCheetah/Your Name/power.zones
|
||||
</pre>
|
||||
|
||||
<code>ptunpk</code> takes a <code>.raw</code> file for input and writes a
|
||||
<code>.dat</code> file as output. Lines that start with an ampersand ("#") in
|
||||
this file are comments; the other lines represent measured samples. As shown
|
||||
by the first comment in the file, the columns are: time in minutes, torque in
|
||||
Newton-meters, speed in miles per hour, power in watts, distance in miles,
|
||||
cadence, heart rate, and interval number.
|
||||
<p>
|
||||
where "~" is your home directory (e.g., <code>/Users/srhea</code> on Mac or
|
||||
<code>/home/srhea</code> on Linux) and "Your Name" is the name you chose when
|
||||
you first opened GoldenCheetah. Open the power.zones file in a text editor
|
||||
and you'll see this:
|
||||
|
||||
<blockquote>
|
||||
<pre>
|
||||
From BEGIN until 2006/07/17, CP=297:
|
||||
1, Active Recovery, 122, 167
|
||||
2, Endurance, 167, 228
|
||||
3, Tempo, 228, 274
|
||||
4, Lactate Threshold, 274, 319
|
||||
5, VO2 Max, 319, 365
|
||||
6, Anaerobic Capacity, 365, 678
|
||||
7, Sprinting, 678, MAX
|
||||
|
||||
From 2006/07/17 until 2007/02/05, CP=329:
|
||||
1, Active Recovery, 135, 185
|
||||
2, Endurance, 185, 253
|
||||
3, Tempo, 253, 303
|
||||
4, Lactate Threshold, 303, 354
|
||||
5, VO2 Max, 354, 404
|
||||
6, Anaerobic Capacity, 404, 752
|
||||
7, Sprinting, 752, MAX
|
||||
|
||||
From 2007/02/05 until END, CP=347:
|
||||
1, Active Recovery, 139, 191
|
||||
2, Endurance, 191, 260
|
||||
3, Tempo, 260, 312
|
||||
4, Lactate Threshold, 312, 364
|
||||
5, VO2 Max, 364, 416
|
||||
6, Anaerobic Capacity, 416, 774
|
||||
7, Sprinting, 774, MAX
|
||||
</pre>
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
The format of the file is simple. You define a range of time, starting with a
|
||||
date or "BEGIN" to indicate the oldest possible time and ending with a date or
|
||||
"END" to indicate the latest possible time. Then you put your critical power
|
||||
(CP) for that date range. Then you list your zones, where each zone has a
|
||||
number, a name, a minimum power value, and a maximum power value. You can
|
||||
have as many time ranges and zones as you like. Most people enter a new time
|
||||
range every time their critical power goes up--right after a fitness test, for
|
||||
example.
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Summarizing the Data
|
||||
</font></big>
|
||||
<p>
|
||||
We hope to have a graphical interface to these programs soon, but until then,
|
||||
the only summarization tools we have are command-line programs. The script
|
||||
<code>intervals.pl</code> summarizes the intervals performed in a workout:
|
||||
|
||||
<small>
|
||||
<pre>
|
||||
$ ./intervals.pl 2006_05_03_16_24_04.dat
|
||||
Power Heart Rate Cadence Speed
|
||||
Int Dur Dist Avg Max Avg Max Avg Max Avg Max
|
||||
0 77:10 19.3 213 693 134 167 82 141 16.0 27.8
|
||||
1 4:03 0.9 433 728 175 203 84 122 13.0 18.8
|
||||
2 7:23 1.0 86 502 135 179 71 141 16.0 28.2
|
||||
3 4:27 0.9 390 628 170 181 70 100 12.0 17.6
|
||||
4 8:04 0.9 60 203 130 178 50 120 18.0 30.1
|
||||
5 4:30 0.9 384 682 170 179 79 113 11.0 18.6
|
||||
6 8:51 1.1 53 245 125 176 70 141 8.0 26.6
|
||||
7 2:48 0.4 400 614 164 178 62 91 8.0 13.6
|
||||
8 7:01 1.1 46 268 128 170 71 141 12.0 28.8
|
||||
9 4:30 0.9 379 560 168 180 81 170 11.0 18.3
|
||||
10 28:46 6.5 120 409 128 179 79 141 15.0 31.0
|
||||
</pre>
|
||||
</small>
|
||||
|
||||
<p>
|
||||
In the example above, a rider performed five hill intervals, four of which
|
||||
climbed a medium size hill that took about 4-5 minutes to climb (intervals
|
||||
1, 3, 5, and 9), and one on a shorter hill that took just under 3 minutes to
|
||||
climb (interval 7).
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Graphing the Data
|
||||
</font></big>
|
||||
<p>
|
||||
For graphing the data in the ride, we use <code>smooth.pl</code> and the
|
||||
<code>gnuplot</code> program. You can use <a href="sample.gp">sample.gp</a>
|
||||
to graph the power, heart rate, cadence, and speed for the hill workout above:
|
||||
|
||||
<pre>
|
||||
$ gnuplot sample.gp
|
||||
</pre>
|
||||
|
||||
<img align="center" alt="Sample Plot" src="sample.png">
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Finding Your "Critical Power"
|
||||
</font></big>
|
||||
<p>
|
||||
Joe Friel calls the maximum average power a rider can sustain over an interval
|
||||
the rider's "critical power" for that duration. The <code>cpint</code>
|
||||
program automatically computes your critical power over all interval lengths
|
||||
using the data from all your past rides. This program looks at all the
|
||||
<code>.raw</code> files in a directory, calculating your maximum power over
|
||||
every subinterval length and storing them in a corresponding <code>.cpi</code>
|
||||
file. It then combines the data in all of the <code>.cpi</code> files to find
|
||||
your critical power over <i>all</i> subintervals of <i>all</i> your rides.
|
||||
|
||||
<pre>
|
||||
$ ls *.raw
|
||||
2006_04_28_10_48_33.raw 2006_05_10_17_08_30.raw 2006_05_18_16_32_53.raw
|
||||
2006_05_03_16_24_04.raw 2006_05_13_10_29_12.raw 2006_05_21_12_25_07.raw
|
||||
2006_05_05_10_52_05.raw 2006_05_15_11_34_03.raw 2006_05_22_18_28_47.raw
|
||||
...
|
||||
2006_05_09_09_54_29.raw 2006_05_17_16_44_35.raw
|
||||
$ ./cpint
|
||||
Compiling data for ride on Fri Apr 28 10:48:33 2006...done.
|
||||
Compiling data for ride on Sat Apr 29 10:07:48 2006...done.
|
||||
Compiling data for ride on Sun Apr 30 14:00:17 2006...done.
|
||||
...
|
||||
Compiling data for ride on Mon May 22 18:28:47 2006...done.
|
||||
0.021 1264
|
||||
0.042 1221
|
||||
0.063 1216
|
||||
...
|
||||
5.019 391
|
||||
...
|
||||
171.885 163
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
Over this set of rides, the rider's maximum power is 1264 watts, achieved over
|
||||
an interval of 0.021 minutes (1.26 seconds). Over all five-minute
|
||||
subintervals, he has achieved a maximum average power of 391 watts. The
|
||||
longest ride in this set was 171.885 minutes long, and he averaged 163 watts
|
||||
over it.
|
||||
|
||||
<p>
|
||||
We can graph the output of <code>cpint</code> using <code>gnuplot</code> with
|
||||
<a href="cpint.gp">cpint.gp</a>:
|
||||
|
||||
<pre>
|
||||
$ ./cpint > cpint.out
|
||||
$ gnuplot cpint.gp
|
||||
</pre>
|
||||
|
||||
<img src="cpint.png">
|
||||
|
||||
<p>
|
||||
The first time you run <code>cpint</code> it will take a while, as it has to
|
||||
analyze all your past rides. On subsequent runs, however, it will only
|
||||
analyze new files.
|
||||
|
||||
<p><i>Training and Racing with a Power Meter</i> (see the <a
|
||||
href="faq.html">FAQ</a>) contains a table of critical powers of Cat 5 cyclists
|
||||
up through international pros at interval lengths of 5 seconds, 1 minute, 5
|
||||
minutes, and 60 minutes. Using this table and the <code>cpint</code> program,
|
||||
you can determine whether you're stronger than others in your racing category
|
||||
at each interval length and adapt your training program accordingly.
|
||||
|
||||
<p>
|
||||
<big><font face="arial,helvetica,sanserif">
|
||||
Converting Old Data
|
||||
Legacy Command-Line Tools
|
||||
</font></big>
|
||||
|
||||
<p>
|
||||
If you've used the PowerTuned software that comes with the PowerTap you may
|
||||
have lots of old ride data in that program that you'd like to include in your
|
||||
critical power graph. You can convert the <code>.xml</code> files that
|
||||
PowerTuned produces to <code>.raw</code> files using the <code>ptpk</code>
|
||||
program:
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
$ ./ptpk 2006_04_27_00_23_28.xml
|
||||
$ head -5 2006_04_27_00_23_28.raw
|
||||
57 56 55 64 02 15
|
||||
60 06 04 7b 80 17
|
||||
40 08 30 00 00 00
|
||||
84 04 00 24 00 ff
|
||||
83 03 00 d7 00 ff
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
<code>ptpk</code> assumes the input <code>.xml</code> file was generated with
|
||||
a wheel size of 2,096 mm and a recording interval of 1. If this is not the
|
||||
case, you should specify the correct values with the <code>-w</code> and
|
||||
<code>-r</code> options.
|
||||
|
||||
<p>
|
||||
Note that the PowerTuned software computes the output speed in miles per hour
|
||||
by multiplying the measured speed in kilometers per hour by 0.62, and the
|
||||
miles per hour values in a <code>.xml</code> file are thus only accurate to
|
||||
two significant figures, even though they're printed out to three decimal
|
||||
places. Because of this limitation, the sequence <code>ptpk</code>,
|
||||
<code>ptunpk</code> is not quite the identity function; in particular, the
|
||||
wattage values from <code>ptpk</code> may only be accurate to two significant
|
||||
digits.
|
||||
You can still build the older, command-line tools from the source code, but we
|
||||
no longer include them in releases. <a href="command-line.html">You can find
|
||||
documentation for them here.</a>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user