Garmin Foot Pod Calibration
This is a pair of small Windows utilities that analyzes a run and calculates the appropriate recalibration for your Garmin Footpod. The software is available as a GUI and a Command Line Interface. Note, this is open source and released under GPL.
- 1 Device Support
- 2 How does it work?
- 3 Frequently Asked Questions
- 4 Installation
- 5 Gathering the data
- 6 Online Version
- 7 GUI Version
- 8 Command Line Version
- 9 Support
- 10 Change log
1 Device Support
|iPhone with iSmoothRun||Supported|
|Garmin Fenix 2||Supported||To convert the FIT file to TCX, upload to Garmin Connect, then export as a TCX file.|
|Garmin 620||Supported||To convert the FIT file to TCX, upload to Garmin Connect, then export as a TCX file.|
|Garmin 610||Supported||For the calibration run the speed source must be set to Footpod, not GPS|
|Garmin 210||Supported||The watch saves a .fit file but you can use the website garmin Connect to export as .tcx.|
|Garmin 405||Unsupported||Does not write any speed or distance information from the Footpod to the TCX file.|
|Garmin 410||Unsupported||Does not write any speed or distance information from the Footpod to the TCX file.|
|Garmin 305||Unsupported||Exports from Garmin Connect contain what looks like speed data from the Footpod, but it matches the GPS signal perfectly.|
2 How does it work?
The Garmin devices record your position along with other data such as Heart Rate every few seconds. If the Footpod is active, then the speed according to the Footpod is also recorded. By looking at each position that is recorded, you can work out how far you've traveled and how long it took. That should be the same as the foodpod speed if the GPS is accurate and Footpod is calibrated.
2.1 Is this different to a Garmin calibration run?
This is using the same principle as the Garmin calibration run, where you tell the Garmin to calibrate and then run about 1 Kilometer. The calibration run is comparing the GPS distance covered with the Footpod reported speed. The advantage of this utility is that you can use any run to check the calibration and you can run much further.
2.2 Flaws in the approach
The biggest flaw in the approach is that it relies on the GPS signal, and GPS is not that accurate itself. If you do not have a GPS signal, such as a treadmill run, then there is no calibration possible and this utility will show that no calibration can be automatically performed. That is because the Garmin recorded data is based on the Footpod, so it's calibrating the Footpod against itself.
2.3 Getting the best data
The best run to use for calibration is a run that has the most accurate GPS data. That will be a run that is reasonably straight, as twists and turns tend to reduce the GPS accuracy. A good view of a clear sky can also help a little.
2.4 Is there a better way?
A better approach would be to run a known distance, either on a track or using a known course and calibrate against that known value. The GUI version allows this type of adjustment.
3 Frequently Asked Questions
- Why do I see Footpod data when I'm not wearing the Footpod?
- The Garmin will record Footpod data if you have the watch set so that the Footpod is active, even if you're not wearing the Footpod at the time. This is a bit odd, but there's no way of detecting if the Footpod data is real or fake, though the calibration value is normally very close (within a fraction of a percent), with just rounding error discrepancies.
- Why is the 'actual distance' different from what I ran?
- The 'actual distance' field is updated based on 'good data', and ignores data where the Footpod and the GPS are wildly different.
- Download the GUI executable from http://fellrnr.com//Utilities/CalibrateFootPod/GarminFootpodCalibration.exe
- You can also download the command line executable from http://fellrnr.com//Utilities/CalibrateFootPod/GarminFootpodCalibrationCLI.exe
- Check the executable for viruses (Trust No One!)
There is no further installation ;}
5 Gathering the data
This utility does not require a special calibration run to gather data. Any run with your Garmin 310XT and Foot Pod enabled will provide the data needed. Running at a steady pace will provide good data. If you take Walking Breaks, this will tend to produce a lot of variability.
6 Online Version
My code has been ported to an online version at http://dashr.net:4000. However, this version is not always available.
7 GUI Version
- Run the executable (GarminFootpodCalibration.exe).
- On startup it will look for the history files transferred for the Garmin Ant Agent.
7.1 Easy Mode
- On startup, you should see a screen similar to the one below
- Use the tree view on the left to select the file you are interested in. You can expand a file with laps to view each lap seperately.
- Entering your current calibration factor will show a new calibration factor you can enter based on the selected exercise or lap.
- If you know the distance you ran, such as a marked course or a treadmill, you can enter that value for a more accurate calibration.
- Hovering the mouse will produce extra help.
- You can load a file that has been exported from Garmin Training Center (see below) using the File, Open menu.
- The graphs give a visual representation of the calibration data.
- The top graph is the distance recorded by GPS and the Footpod. The values vary, as the Garmin does not record at even intervals,
- The bottom graph is the scaling factor. The horizontal lines show the average and the standard deviations.
7.2 Expert Mode
- Clicking on the 'Expert Mode' check box gives more detail and more options.
8 Command Line Version
8.1 Garmin Training Center
- Transfer the record of the run to Garmin Training Center.
- Export the record of the run from Garmin Training Center as a 'TCX' file.
- Run the executable ParseTCX.exe passing the full path to the TCX file as a parameter.
- Open a windows explorer window and navigate to the folder with the TCX file.
- Right click on the TCX file and select "Open With..." then "Choose Program..."
- Click on "Browse..." and navigate to where you downloaded ParseTCX.exe from.
- I would recommend checking the box "Always use the selected program to open this kind of file" so that you can just double click on the TCX file in the future.
- Click OK
- A command window should open and print out a lot of data. At the end you should have a line that says "Multiply your current calibration factor by N" where N is the scaling factor.
- On your Garmin, multiply your current calibration factor by this new scale. So if your scale is currently 990 and the calibration factor is 0.94255403, the new scale will be 933.
8.2 Garmin Ant Agent
- Transfer the record of the run using the Ant Agent.
- Run the executable ParseTCX.exe with no parameters. The utility will try to find the store of TCX files that the Ant Agent uses.
- On XP this is under C:\Documents and Settings\<username>\Application Data\GARMIN\Devices\<device number>\History".
- On Windows 7 this is under C:\Documents and Settings\<username>\AppData\Roaming\GARMIN\Devices\<device number>\History"
- A command window should open and print out a scaling factor for each file it finds.
- On your Garmin, multiply your current calibration factor by one of the new scaling factors. So if your scale is currently 990 and the calibration factor is 0.94255403, the new scale will be 933.
8.3 Example Output
8.3.1 All Ant Agent Files
Version 2.0 2011-02-03-063813.TCX Looks like data from cycling not running 2011-02-04-071012.TCX filtered calibration factor adjustment 0.9807 (stddev 0.0964) 2011-02-04-071012.TCX raw calibration factor adjustment 0.8722 (stddev 0.2023) 2011-02-05-075131.TCX filtered calibration factor adjustment 0.9856 (stddev 0.0945) 2011-02-05-075131.TCX raw calibration factor adjustment 0.9811 (stddev 0.1393) 2011-02-06-115537.TCX Looks like data from cycling not running 2011-02-07-065800.TCX filtered calibration factor adjustment 0.9855 (stddev 0.067) 2011-02-07-065800.TCX raw calibration factor adjustment 0.983 (stddev 0.0907) Press return to continePress return to contine
8.3.2 Single File
Version 2.0 Per Lap Scaling =============== lap average scale 0.9755 lap average scale 0.9924 lap average scale 0.9866 lap average scale 0.9797 lap average scale 0.9755 lap average scale 0.9976 lap average scale 0.9974 lap average scale 0.9877 lap average scale 1.0025 lap average scale 0.99 lap average scale 0.9705 lap average scale 0.983 lap average scale 0.9553 lap average scale 0.9778 lap average scale 0.9967 lap average scale 1.002 lap average scale 0.9606 lap average scale 0.9907 lap average scale 0.9837 lap average scale 0.9929 lap average scale 0.9972 lap average scale 0.9843 Details ======= Filtered Average scale 0.9855, 98.5455% Standard Deviation scale 0.067, 6.6979% Scale+stddev 1.0524, 105.24% Scale-stddev 0.9185, 91.85% Raw Average scale 0.983, 98.3044% Standard Deviation scale 0.0907, 9.0679% Scale+stddev 1.0737, 107.37% Scale-stddev 0.8924, 89.24% Calibration Instructions ======================== Multiply your current calibration factor by 0.983 Press return to continue
As always Contact Me if you have a problem and I will try to help. Emailing me the TCX file helps debug any issues. You can also download the source code from http://fellrnr.com//Utilities/CalibrateFootPod/ParseTCX.zip
9.1 The Application Failed to Initialize Properly (0cx0000135)
If you get this message, it is probable that you don't have the .NET framework version 2.0 installed. Version 2.0 has been around a long time, and most users should have it available; I've only had this error reported once by a someone using an XP partition on a Mac.
The first thing to check is that you’re running a version of XP with at least service pack 2 installed, preferably 3. If you go to control panel, then system, the general tab should have "service pack X" shown. If you don’t have SP2 or SP3, windows update should handle the upgrade for you.
If you have SP2 or SP3, you can download .NET 2.0 and the updates for .NET 2.0 SP2 from http://msdn.microsoft.com/en-us/netframework/aa731542
10 Change log
- Get iRunSmooth support right this time.
- Fix build bug in 2.5.
- Look for the footpod data in any of the TPX child nodes, not just the first (needed for iRunSmooth).
- Prevent points in the TCX file from resetting the elapsed distance, which could dramatically increase the GPS distance detected.
- Change the way bad data is detected to allow for rounding errors
- Ignore data from between tracks, which often indicates a pause
- Support calibration without GPS, such as treadmill workouts
- Change to allow a variant of the TCX XML format (TPX without the CadenceSensor attribute)
- Major refactoring and the creation of a GUI version
- Fix a crash on TCX files that had a lap with no track points
- Add more defensive coding
- Many thanks to Dan M. for finding this bug!
- Documentation for 1.2 can be found at http://fellrnr.com/mediawiki/index.php?title=Garmin_Foot_Pod_Calibration&oldid=765
- Fix bug in XML parsing (Use of XML node name rather than local name)
- Add better error handling
- Correct behavior of number parsing in other culture settings
- Look for files in Ant Agent cache
- Add consistency rating
- Many thanks to Tibor Karaszi who provided some of the code changes for this release!
- Available as http://fellrnr.com//Utilities/CalibrateFootPod/ParseTCX_1.1.exe and http://fellrnr.com//Utilities/CalibrateFootPod/ParseTCX_1.1.zip
- Initial release
- Available as http://fellrnr.com//Utilities/CalibrateFootPod/ParseTCX_1.0.exe and http://fellrnr.com//Utilities/CalibrateFootPod/ParseTCX_1.0.zip