VeloMetric iOS · Predictive Cycling Drivetrain Wear Telemetry
Native iOS telemetry and predictive maintenance application built in Swift and SwiftUI. Replaces naive distance-only maintenance intervals with a physics-informed wear engine that integrates normalized power output, climbing torque, weather contamination factors, and chain-line cross-chaining stress.
Beyond Distance-Only Cycling Maintenance
Standard cycling trackers schedule chain, cassette, and bottom bracket replacements purely by accumulated kilometers. However, a 100 km flat ride at 180W in dry summer conditions induces less than one-third of the pin-and-roller tribological wear of a 100 km wet alpine climb at 320W. [VeloMetric](https://github.com/FrancescoCastaldi/VeloMetric) models real-time mechanical wear on iOS.
Distance-Only vs Physics-Informed Wear Modeling
| Wear Dimension | Naive Odometer Tracking | VeloMetric Physics Engine (iOS) | Mechanical Advantage |
|---|---|---|---|
| Chain Elongation (0.5% limit) | Fixed 4,000 km threshold | Torque × Cadence × Wetness integral | Prevents premature cassette tooth shark-finning |
| Wet / Gritty Road Penalty | Ignored (1.0x multiplier) | Automated 2.4x abrasive wear factor | Accurate winter & rain training tracking |
| Climbing Torque Factor | Ignored | Gradient > 6% low-cadence tension weight | Captures peak chain pin surface pressure |
| Lubrication Lifecycle | Manual reminder | Wax / Wet lube degradation curve | Optimizes drivetrain efficiency (saves 4 to 6 Watts) |
*Table 1: VeloMetric Predictive Drivetrain Wear Model Comparison*
// Swift: Composite drivetrain wear stress integration per ride segment
struct RideTelemetrySample {
let distanceKm: Double
let averageWatts: Double
let gradientPercent: Double
let isWetCondition: Bool
}func computeEffectiveWearKm(sample: RideTelemetrySample) -> Double { let powerFactor = max(0.7, sample.averageWatts / 200.0) let gradientFactor = sample.gradientPercent > 5.0 ? 1.0 + (sample.gradientPercent - 5.0) * 0.08 : 1.0 let weatherMultiplier = sample.isWetCondition ? 2.35 : 1.0 return sample.distanceKm * powerFactor * gradientFactor * weatherMultiplier } ```
Key Capabilities
- Component Health Matrix: Independent wear tracking for chains, 11s/12s cassettes, chainrings, tires, brake pads, and wax lubrication intervals. - Native iOS Architecture: Built with SwiftUI, CoreData persistence, and smooth haptic telemetry gauges.
