Skip to main content

PedalOverlapAnalyzer - Rally Stage - Citroen C4 WRC

Pedal overlap analysis: left-foot braking detection and scoring

Sample Data

AttributeValue
Sourcemotec
Categoryrally_stage
File/Users/mhild/src/durandom/racing/b4racing/packages/source-motec/tests/fixtures/telemetry-NGP-Car_5-Citroen_C4_WRC-Stage_230-20260122_130000.ld

Available Channels: brake, clutch, distance, gear, lap_distance_pct, lat_accel, long_accel, pitch, position_x, position_y, position_z, raw_LB.brakeDiskLayerTemp, raw_LB.brakeDiskTemp, raw_LB.brakeWear, raw_LB.currentTyreSegment, raw_LB.dampingForce, raw_LB.deflectionVelocity, raw_LB.helperSpringActive, raw_LB.innerBumpDeflectionVelocity, raw_LB.outerBumpDeflectionVelocity, raw_LB.rollbarForce, raw_LB.segmentData[0].temperature, raw_LB.segmentData[1].temperature, raw_LB.segmentData[2].temperature, raw_LB.segmentData[3].temperature, raw_LB.segmentData[4].temperature, raw_LB.segmentData[5].temperature, raw_LB.segmentData[6].temperature, raw_LB.segmentData[7].temperature, raw_LB.springForce, raw_LB.strutForce, raw_LB.temperature, raw_LB.treadTemperature, raw_LB.wear[0], raw_LB.wear[1], raw_LB.wear[2], raw_LB.wear[3], raw_LB.wear[4], raw_LB.wear[5], raw_LB.wear[6], raw_LB.wear[7], raw_LF.brakeDiskLayerTemp, raw_LF.brakeDiskTemp, raw_LF.brakeWear, raw_LF.currentTyreSegment, raw_LF.dampingForce, raw_LF.deflectionVelocity, raw_LF.helperSpringActive, raw_LF.innerBumpDeflectionVelocity, raw_LF.outerBumpDeflectionVelocity, raw_LF.rollbarForce, raw_LF.segmentData[0].temperature, raw_LF.segmentData[1].temperature, raw_LF.segmentData[2].temperature, raw_LF.segmentData[3].temperature, raw_LF.segmentData[4].temperature, raw_LF.segmentData[5].temperature, raw_LF.segmentData[6].temperature, raw_LF.segmentData[7].temperature, raw_LF.springForce, raw_LF.strutForce, raw_LF.temperature, raw_LF.treadTemperature, raw_LF.wear[0], raw_LF.wear[1], raw_LF.wear[2], raw_LF.wear[3], raw_LF.wear[4], raw_LF.wear[5], raw_LF.wear[6], raw_LF.wear[7], raw_RB.brakeDiskLayerTemp, raw_RB.brakeDiskTemp, raw_RB.brakeWear, raw_RB.currentTyreSegment, raw_RB.dampingForce, raw_RB.deflectionVelocity, raw_RB.helperSpringActive, raw_RB.innerBumpDeflectionVelocity, raw_RB.outerBumpDeflectionVelocity, raw_RB.rollbarForce, raw_RB.segmentData[0].temperature, raw_RB.segmentData[1].temperature, raw_RB.segmentData[2].temperature, raw_RB.segmentData[3].temperature, raw_RB.segmentData[4].temperature, raw_RB.segmentData[5].temperature, raw_RB.segmentData[6].temperature, raw_RB.segmentData[7].temperature, raw_RB.springForce, raw_RB.strutForce, raw_RB.temperature, raw_RB.treadTemperature, raw_RB.wear[0], raw_RB.wear[1], raw_RB.wear[2], raw_RB.wear[3], raw_RB.wear[4], raw_RB.wear[5], raw_RB.wear[6], raw_RB.wear[7], raw_RF.brakeDiskLayerTemp, raw_RF.brakeDiskTemp, raw_RF.brakeWear, raw_RF.currentTyreSegment, raw_RF.dampingForce, raw_RF.deflectionVelocity, raw_RF.helperSpringActive, raw_RF.innerBumpDeflectionVelocity, raw_RF.outerBumpDeflectionVelocity, raw_RF.rollbarForce, raw_RF.segmentData[0].temperature, raw_RF.segmentData[1].temperature, raw_RF.segmentData[2].temperature, raw_RF.segmentData[3].temperature, raw_RF.segmentData[4].temperature, raw_RF.segmentData[5].temperature, raw_RF.segmentData[6].temperature, raw_RF.segmentData[7].temperature, raw_RF.springForce, raw_RF.strutForce, raw_RF.temperature, raw_RF.treadTemperature, raw_RF.wear[0], raw_RF.wear[1], raw_RF.wear[2], raw_RF.wear[3], raw_RF.wear[4], raw_RF.wear[5], raw_RF.wear[6], raw_RF.wear[7], raw_distanceToEnd, raw_driveLineLocation, raw_engineCoolantHeatState.temperatu, raw_engineTemperature, raw_footbrakePressure, raw_handbrakePressure, raw_raceTime, raw_radiatorCoolantHeatState.tempera, raw_steering, raw_vecAngularAccelerationCar.x, raw_vecAngularAccelerationCar.y, raw_vecAngularAccelerationCar.z, raw_vecAngularVelocityCar.x, raw_vecAngularVelocityCar.y, raw_vecAngularVelocityCar.z, raw_vecAvgAngularAccelerationCar.x, raw_vecAvgAngularAccelerationCar.y, raw_vecAvgAngularAccelerationCar.z, raw_vecAvgLinearAccelerationCar.x, raw_vecAvgLinearAccelerationCar.y, raw_vecAvgLinearAccelerationCar.z, raw_vecRelativeAngularAcceleration.x, raw_vecRelativeAngularAcceleration.y, raw_vecRelativeAngularAcceleration.z, raw_vecRelativeAngularVelocity.x, raw_vecRelativeAngularVelocity.y, raw_vecRelativeAngularVelocity.z, raw_vecRelativeLinearAcceleration.x, raw_vecRelativeLinearAcceleration.y, raw_vecRelativeLinearAcceleration.z, raw_vecRelativeLinearVelocity.x, raw_vecRelativeLinearVelocity.y, raw_vecRelativeLinearVelocity.z, roll, rpm, speed, speed_kph, speed_mph, steering, suspension_fl_travel, suspension_fr_travel, suspension_rl_travel, suspension_rr_travel, throttle, time, tire_pressure_fl, tire_pressure_fr, tire_pressure_rl, tire_pressure_rr, tire_temp_fl, tire_temp_fr, tire_temp_rl, tire_temp_rr, track_pct, velocity_x, velocity_y, velocity_z, vert_accel, yaw


Configuration

SettingValue
Slice Typelap
Metadata OnlyFalse
Required Channelsthrottle, brake, speed, time

When to Use

  • User asks about left-foot braking
  • User wants to know about pedal overlap technique
  • User asks 'am I using LFB correctly?'
  • User wants to analyze corner entry technique

Key Options

OptionDescription
lap_selectionall
throttle_thresholdMinimum throttle to count as 'on' (default: 0.05)
brake_thresholdMinimum brake to count as 'on' (default: 0.05)

Sample Output

Subjects Analyzed: 1

Short Duration (Default)

Options: min_overlap_duration_seconds=0.05

{
"metrics": [
{
"subject_id": "e240d0597bb22cc0",
"driver_name": "RSF driver",
"overlap_event_count": 10,
"total_overlap_time_seconds": 1.13201814354235,
"overlap_time_pct": 0.013736979166666666,
"avg_overlap_intensity": 0.38780492059886457,
"max_overlap_intensity": 0.6375376135110855,
"entry_events": 0,
"exit_events": 0,
"mid_corner_events": 10,
"technique_score": 19.390246029943224,
"technique_classification": "Balanced LFB",
"overlap_time_pct_formatted": "1.4%",
"technique_score_formatted": "19/100"
}
],
"overlap_events": {
"e240d0597bb22cc0": [
{
"start_time_seconds": 18.237298435227988,
"end_time_seconds": 18.299802504503333,
"duration_seconds": 0.06250406927534513,
"start_distance_m": 216.3159942626953,
"end_distance_m": 217.37100219726562,
"avg_throttle": 0.0972916092723608,
"avg_brake": 0.12026547007262707,
"max_overlap_intensity": 0.2482944019138813,
"speed_at_start_kmh": 29.961944156222874,
"speed_at_end_kmh": 30.311944749620224,
"context": "mid-corner"
},
{
"start_time_seconds": 34.18278099702672,
"end_time_seconds": 34.48141155023114,
"duration_seconds": 0.29863055320441845,
"start_distance_m": 525.7219848632812,
"end_distance_m": 531.9290161132812,
"avg_throttle": 0.20813448159870776,
"avg_brake": 0.27896332554519176,
"max_overlap_intensity": 0.5854881778359413,
"speed_at_start_kmh": 29.333888159857857,
"speed_at_end_kmh": 29.16444354587131,
"context": "mid-corner"
},
{
"start_time_seconds": 34.710593137574065,
"end_time_seconds": 34.814766586366304,
"duration_seconds": 0.10417344879223833,
"start_distance_m": 536.7379760742188,
"end_distance_m": 539.1099853515625,
"avg_throttle": 0.2606890248134732,
"avg_brake": 0.17086757067590952,
"max_overlap_intensity": 0.6375376135110855,
"speed_at_start_kmh": 30.556388431125217,
"speed_at_end_kmh": 28.518888685438366,
"context": "mid-corner"
},
{
"start_time_seconds": 35.370358313258244,
"end_time_seconds": 35.48147665863663,
"duration_seconds": 0.11111834537838661,
"start_distance_m": 548.9190063476562,
"end_distance_m": 550.6749877929688,
"avg_throttle": 0.17321239828186877,
"avg_brake": 0.17568064042750528,
"max_overlap_intensity": 0.37036699801683426,
"speed_at_start_kmh": 21.97633319430881,
"speed_at_end_kmh": 23.19433424207899,
"context": "mid-corner"
},
{
"start_time_seconds": 87.11678277665646,
"end_time_seconds": 87.2070664322764,
"duration_seconds": 0.09028365561994178,
"start_distance_m": 1368.9200439453125,
"end_distance_m": 1370.719970703125,
"avg_throttle": 0.14911979250609875,
"avg_brake": 0.08375894225069455,
"max_overlap_intensity": 0.2883345000445843,
"speed_at_start_kmh": 25.976443820529514,
"speed_at_end_kmh": 25.701749589708115,
"context": "mid-corner"
},
{
"start_time_seconds": 87.68626429672071,
"end_time_seconds": 87.7834928489268,
"duration_seconds": 0.09722855220609006,
"start_distance_m": 1379.8499755859375,
"end_distance_m": 1381.4300537109375,
"avg_throttle": 0.1798824702699979,
"avg_brake": 0.1339537727336089,
"max_overlap_intensity": 0.35130811110138893,
"speed_at_start_kmh": 24.25922181871202,
"speed_at_end_kmh": 24.57438786824544,
"context": "mid-corner"
},
{
"start_time_seconds": 91.23510645224299,
"end_time_seconds": 91.36011459079367,
"duration_seconds": 0.12500813855068316,
"start_distance_m": 1455.8299560546875,
"end_distance_m": 1458.2099609375,
"avg_throttle": 0.2096244839853362,
"avg_brake": 0.22645596140309385,
"max_overlap_intensity": 0.48583199083805084,
"speed_at_start_kmh": 24.81255637274848,
"speed_at_end_kmh": 25.818583170572914,
"context": "mid-corner"
},
{
"start_time_seconds": 91.86014714499642,
"end_time_seconds": 91.97126549037482,
"duration_seconds": 0.11111834537840082,
"start_distance_m": 1467.8399658203125,
"end_distance_m": 1469.72998046875,
"avg_throttle": 0.19842746152597315,
"avg_brake": 0.11239256687900599,
"max_overlap_intensity": 0.36229510977864265,
"speed_at_start_kmh": 25.097666846381294,
"speed_at_end_kmh": 25.336305830213757,
"context": "mid-corner"
},
{
"start_time_seconds": 93.79082839594592,
"end_time_seconds": 93.86027736180742,
"duration_seconds": 0.06944896586149696,
"start_distance_m": 1503.3499755859375,
"end_distance_m": 1504.6300048828125,
"avg_throttle": 0.16204522753303702,
"avg_brake": 0.12304879318584096,
"max_overlap_intensity": 0.2944379970431328,
"speed_at_start_kmh": 21.38138877020942,
"speed_at_end_kmh": 21.75972196790907,
"context": "mid-corner"
},
{
"start_time_seconds": 98.19389283156455,
"end_time_seconds": 98.2563969008399,
"duration_seconds": 0.06250406927534868,
"start_distance_m": 1580.77001953125,
"end_distance_m": 1581.5,
"avg_throttle": 0.13110542073845863,
"avg_brake": 0.10869300253689289,
"max_overlap_intensity": 0.2541543059051037,
"speed_at_start_kmh": 20.921749538845486,
"speed_at_end_kmh": 21.057027180989582,
"context": "mid-corner"
}
]
},
"metadata": {
"analyzer": "pedal_overlap",
"title": "Pedal Overlap (LFB) Analysis",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: e240d0597bb22cc0RSF driver

Longer Duration

Options: min_overlap_duration_seconds=0.1

{
"metrics": [
{
"subject_id": "e240d0597bb22cc0",
"driver_name": "RSF driver",
"overlap_event_count": 5,
"total_overlap_time_seconds": 0.7500488313041274,
"overlap_time_pct": 0.013736979166666666,
"avg_overlap_intensity": 0.4883039779961109,
"max_overlap_intensity": 0.6375376135110855,
"entry_events": 0,
"exit_events": 0,
"mid_corner_events": 5,
"technique_score": 24.415198899805546,
"technique_classification": "Balanced LFB",
"overlap_time_pct_formatted": "1.4%",
"technique_score_formatted": "24/100"
}
],
"overlap_events": {
"e240d0597bb22cc0": [
{
"start_time_seconds": 34.18278099702672,
"end_time_seconds": 34.48141155023114,
"duration_seconds": 0.29863055320441845,
"start_distance_m": 525.7219848632812,
"end_distance_m": 531.9290161132812,
"avg_throttle": 0.20813448159870776,
"avg_brake": 0.27896332554519176,
"max_overlap_intensity": 0.5854881778359413,
"speed_at_start_kmh": 29.333888159857857,
"speed_at_end_kmh": 29.16444354587131,
"context": "mid-corner"
},
{
"start_time_seconds": 34.710593137574065,
"end_time_seconds": 34.814766586366304,
"duration_seconds": 0.10417344879223833,
"start_distance_m": 536.7379760742188,
"end_distance_m": 539.1099853515625,
"avg_throttle": 0.2606890248134732,
"avg_brake": 0.17086757067590952,
"max_overlap_intensity": 0.6375376135110855,
"speed_at_start_kmh": 30.556388431125217,
"speed_at_end_kmh": 28.518888685438366,
"context": "mid-corner"
},
{
"start_time_seconds": 35.370358313258244,
"end_time_seconds": 35.48147665863663,
"duration_seconds": 0.11111834537838661,
"start_distance_m": 548.9190063476562,
"end_distance_m": 550.6749877929688,
"avg_throttle": 0.17321239828186877,
"avg_brake": 0.17568064042750528,
"max_overlap_intensity": 0.37036699801683426,
"speed_at_start_kmh": 21.97633319430881,
"speed_at_end_kmh": 23.19433424207899,
"context": "mid-corner"
},
{
"start_time_seconds": 91.23510645224299,
"end_time_seconds": 91.36011459079367,
"duration_seconds": 0.12500813855068316,
"start_distance_m": 1455.8299560546875,
"end_distance_m": 1458.2099609375,
"avg_throttle": 0.2096244839853362,
"avg_brake": 0.22645596140309385,
"max_overlap_intensity": 0.48583199083805084,
"speed_at_start_kmh": 24.81255637274848,
"speed_at_end_kmh": 25.818583170572914,
"context": "mid-corner"
},
{
"start_time_seconds": 91.86014714499642,
"end_time_seconds": 91.97126549037482,
"duration_seconds": 0.11111834537840082,
"start_distance_m": 1467.8399658203125,
"end_distance_m": 1469.72998046875,
"avg_throttle": 0.19842746152597315,
"avg_brake": 0.11239256687900599,
"max_overlap_intensity": 0.36229510977864265,
"speed_at_start_kmh": 25.097666846381294,
"speed_at_end_kmh": 25.336305830213757,
"context": "mid-corner"
}
]
},
"metadata": {
"analyzer": "pedal_overlap",
"title": "Pedal Overlap (LFB) Analysis",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: e240d0597bb22cc0RSF driver

Example Calls

Am I using left-foot braking

analyze(analyzers='pedal_overlap', event='...')

Detects brake+throttle overlap events


Generated from b4racing.analysis.analyzers.pedal_overlap.PedalOverlapAnalyzer