Skip to main content

HandbrakeAnalyzer - Rally Stage - Aston Martin DBR9

Handbrake technique analysis: timing, duration, steering coordination

Sample Data

AttributeValue
Sourcemotec
Categoryrally_stage
File/Users/mhild/src/durandom/racing/b4racing/packages/source-motec/tests/fixtures/telemetry-NGP-Car_5-Aston_Martin_DBR9-Stage_138-20260122_120000.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 Channelssteering, time

When to Use

  • User asks about handbrake technique
  • User wants to know if they're using handbrake correctly
  • User asks about hairpin or tight corner technique
  • User wants to improve rotation skills

Key Options

OptionDescription
lap_selectionall
quick_pull_threshold_secondsMax duration for good technique (default: 0.5s)
steering_window_secondsWindow to check for steering-first (default: 0.3s)

Sample Output

Subjects Analyzed: 1

Default Threshold

Options: quick_pull_threshold_seconds=0.5

{
"metrics": [
{
"subject_id": "d0c8e5bbf805540b",
"driver_name": "RSF driver",
"handbrake_count": 12,
"quick_pull_count": 6,
"steering_first_count": 10,
"technique_score": 0.7,
"quick_pull_pct": 0.5,
"steering_first_pct": 0.8333333333333334,
"avg_duration_seconds": 1.5591336612182687,
"avg_steering_coordination": 0.875,
"technique_formatted": "70%",
"quick_pull_formatted": "50%"
}
],
"handbrake_events": {
"d0c8e5bbf805540b": [
{
"distance_m": 0.0,
"time_seconds": 0.0,
"duration_seconds": 8.340844218811315,
"max_handbrake": 0.9880220293998718,
"steering_at_pull": 0.011699333027005196,
"steering_delta": -0.008220650555565954,
"is_quick_pull": false,
"is_steering_first": false
},
{
"distance_m": 132.85800170898438,
"time_seconds": 19.855515088744003,
"duration_seconds": 0.2361271469105617,
"max_handbrake": 0.8572819828987122,
"steering_at_pull": 0.2732839334011078,
"steering_delta": -0.0007399359941482886,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 135.66099548339844,
"time_seconds": 20.54306178121887,
"duration_seconds": 0.08333899302725811,
"max_handbrake": 0.1337909996509552,
"steering_at_pull": 0.27134579002857206,
"steering_delta": 0.001396585226058955,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 147.28199768066406,
"time_seconds": 22.327905215219296,
"duration_seconds": 0.32641105602342435,
"max_handbrake": 0.9814299941062927,
"steering_at_pull": -0.6799236097335816,
"steering_delta": -0.0026092922687529496,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 181.4759979248047,
"time_seconds": 26.994888824745694,
"duration_seconds": 0.493089042077937,
"max_handbrake": 0.8751199841499329,
"steering_at_pull": 0.29738226759433745,
"steering_delta": -0.02904397118091584,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 222.41700744628906,
"time_seconds": 32.57860135757192,
"duration_seconds": 0.5417034546771688,
"max_handbrake": 0.9564970135688782,
"steering_at_pull": -0.18977344048023223,
"steering_delta": -0.004013127326965321,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 460.072998046875,
"time_seconds": 50.447870445832955,
"duration_seconds": 0.36808055253705874,
"max_handbrake": 0.8482490181922913,
"steering_at_pull": -0.724,
"steering_delta": 0.0,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 468.74200439453125,
"time_seconds": 51.57294685170093,
"duration_seconds": 3.465513126716779,
"max_handbrake": 0.9203330278396606,
"steering_at_pull": -0.724,
"steering_delta": 1.1507169213294983,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 734.81201171875,
"time_seconds": 79.09564929895258,
"duration_seconds": 1.1598009862959913,
"max_handbrake": 0.9833829998970032,
"steering_at_pull": 0.11844060498476028,
"steering_delta": -0.06548985376954078,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 734.81201171875,
"time_seconds": 81.39441652328776,
"duration_seconds": 2.7015723573002504,
"max_handbrake": 0.9838709831237793,
"steering_at_pull": 0.022658522382378577,
"steering_delta": -0.02398876375518739,
"is_quick_pull": false,
"is_steering_first": false
},
{
"distance_m": 927.1599731445312,
"time_seconds": 98.70809232470042,
"duration_seconds": 0.2569618951673789,
"max_handbrake": 0.9838709831237793,
"steering_at_pull": 0.4311115710735321,
"steering_delta": 0.10849214148521419,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 945.6820068359375,
"time_seconds": 101.43744434634309,
"duration_seconds": 0.7361611050741033,
"max_handbrake": 0.986312985420227,
"steering_at_pull": 0.02185690887272358,
"steering_delta": 0.05981753169000148,
"is_quick_pull": false,
"is_steering_first": true
}
]
},
"metadata": {
"analyzer": "handbrake_analysis",
"title": "Handbrake Analysis",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: d0c8e5bbf805540bRSF driver

Strict Quick Pull

Options: quick_pull_threshold_seconds=0.3

{
"metrics": [
{
"subject_id": "d0c8e5bbf805540b",
"driver_name": "RSF driver",
"handbrake_count": 12,
"quick_pull_count": 3,
"steering_first_count": 10,
"technique_score": 0.6,
"quick_pull_pct": 0.25,
"steering_first_pct": 0.8333333333333334,
"avg_duration_seconds": 1.5591336612182687,
"avg_steering_coordination": 0.875,
"technique_formatted": "60%",
"quick_pull_formatted": "25%"
}
],
"handbrake_events": {
"d0c8e5bbf805540b": [
{
"distance_m": 0.0,
"time_seconds": 0.0,
"duration_seconds": 8.340844218811315,
"max_handbrake": 0.9880220293998718,
"steering_at_pull": 0.011699333027005196,
"steering_delta": -0.008220650555565954,
"is_quick_pull": false,
"is_steering_first": false
},
{
"distance_m": 132.85800170898438,
"time_seconds": 19.855515088744003,
"duration_seconds": 0.2361271469105617,
"max_handbrake": 0.8572819828987122,
"steering_at_pull": 0.2732839334011078,
"steering_delta": -0.0007399359941482886,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 135.66099548339844,
"time_seconds": 20.54306178121887,
"duration_seconds": 0.08333899302725811,
"max_handbrake": 0.1337909996509552,
"steering_at_pull": 0.27134579002857206,
"steering_delta": 0.001396585226058955,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 147.28199768066406,
"time_seconds": 22.327905215219296,
"duration_seconds": 0.32641105602342435,
"max_handbrake": 0.9814299941062927,
"steering_at_pull": -0.6799236097335816,
"steering_delta": -0.0026092922687529496,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 181.4759979248047,
"time_seconds": 26.994888824745694,
"duration_seconds": 0.493089042077937,
"max_handbrake": 0.8751199841499329,
"steering_at_pull": 0.29738226759433745,
"steering_delta": -0.02904397118091584,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 222.41700744628906,
"time_seconds": 32.57860135757192,
"duration_seconds": 0.5417034546771688,
"max_handbrake": 0.9564970135688782,
"steering_at_pull": -0.18977344048023223,
"steering_delta": -0.004013127326965321,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 460.072998046875,
"time_seconds": 50.447870445832955,
"duration_seconds": 0.36808055253705874,
"max_handbrake": 0.8482490181922913,
"steering_at_pull": -0.724,
"steering_delta": 0.0,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 468.74200439453125,
"time_seconds": 51.57294685170093,
"duration_seconds": 3.465513126716779,
"max_handbrake": 0.9203330278396606,
"steering_at_pull": -0.724,
"steering_delta": 1.1507169213294983,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 734.81201171875,
"time_seconds": 79.09564929895258,
"duration_seconds": 1.1598009862959913,
"max_handbrake": 0.9833829998970032,
"steering_at_pull": 0.11844060498476028,
"steering_delta": -0.06548985376954078,
"is_quick_pull": false,
"is_steering_first": true
},
{
"distance_m": 734.81201171875,
"time_seconds": 81.39441652328776,
"duration_seconds": 2.7015723573002504,
"max_handbrake": 0.9838709831237793,
"steering_at_pull": 0.022658522382378577,
"steering_delta": -0.02398876375518739,
"is_quick_pull": false,
"is_steering_first": false
},
{
"distance_m": 927.1599731445312,
"time_seconds": 98.70809232470042,
"duration_seconds": 0.2569618951673789,
"max_handbrake": 0.9838709831237793,
"steering_at_pull": 0.4311115710735321,
"steering_delta": 0.10849214148521419,
"is_quick_pull": true,
"is_steering_first": true
},
{
"distance_m": 945.6820068359375,
"time_seconds": 101.43744434634309,
"duration_seconds": 0.7361611050741033,
"max_handbrake": 0.986312985420227,
"steering_at_pull": 0.02185690887272358,
"steering_delta": 0.05981753169000148,
"is_quick_pull": false,
"is_steering_first": true
}
]
},
"metadata": {
"analyzer": "handbrake_analysis",
"title": "Handbrake Analysis",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: d0c8e5bbf805540bRSF driver

Example Calls

How is my handbrake technique

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

Analyzes handbrake timing, duration, and steering coordination


Generated from b4racing.analysis.analyzers.handbrake_analysis.HandbrakeAnalyzer