Skip to main content

RallyBrakingAnalyzer - Rally Stage - Citroen C4 WRC

Rally braking analysis: threshold braking, trail-off quality

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 Channelsbrake, speed, time

When to Use

  • User asks about rally braking technique
  • User wants to know if they're using threshold braking
  • User asks about trail braking or progressive brake release
  • User wants to improve braking consistency

Key Options

OptionDescription
lap_selectionall
threshold_brake_ratioRatio of initial/max for threshold braking (default: 0.8)
brake_thresholdMinimum pressure to detect braking (default: 0.1)

Sample Output

Subjects Analyzed: 1

Default Threshold

Options: threshold_brake_ratio=0.8

{
"metrics": [
{
"subject_id": "e240d0597bb22cc0",
"driver_name": "RSF driver",
"brake_event_count": 19,
"threshold_brake_count": 1,
"threshold_brake_pct": 0.05263157894736842,
"avg_trail_off_quality": 0.976769458492569,
"initial_attack_score": 0.44402647513373406,
"avg_speed_reduction_kmh": 28.129229935986256,
"avg_max_pressure": 0.41993552289511027,
"threshold_brake_formatted": "5%",
"trail_off_formatted": "98%",
"initial_attack_formatted": "44%"
}
],
"brake_events": {
"e240d0597bb22cc0": [
{
"distance_m": 200.14300537109375,
"time_seconds": 17.535863880026913,
"initial_speed_kmh": 35.971666971842446,
"initial_pressure": 0.10400500148534775,
"max_pressure": 0.6151059865951538,
"time_to_max_ms": 361.1346224797636,
"trail_off_quality": 0.9531506491755998,
"is_threshold_braking": false
},
{
"distance_m": 245.57400512695312,
"time_seconds": 19.709616511491635,
"initial_speed_kmh": 26.52522193060981,
"initial_pressure": 0.1020520031452179,
"max_pressure": 0.416251003742218,
"time_to_max_ms": 1034.7895913362422,
"trail_off_quality": 0.9859566819444995,
"is_threshold_braking": false
},
{
"distance_m": 495.4070129394531,
"time_seconds": 32.960479197864444,
"initial_speed_kmh": 42.12416754828559,
"initial_pressure": 0.10840000212192535,
"max_pressure": 0.6586099863052368,
"time_to_max_ms": 687.5447620287787,
"trail_off_quality": 0.9765493596593539,
"is_threshold_braking": false
},
{
"distance_m": 537.0430297851562,
"time_seconds": 34.73142782733251,
"initial_speed_kmh": 30.44722239176432,
"initial_pressure": 0.10547000169754028,
"max_pressure": 0.40453198552131653,
"time_to_max_ms": 215.29179417062494,
"trail_off_quality": 0.9798675345843786,
"is_threshold_braking": false
},
{
"distance_m": 723.5499877929688,
"time_seconds": 43.093083317056234,
"initial_speed_kmh": 36.21666802300347,
"initial_pressure": 0.10766799747943878,
"max_pressure": 0.5948269963264465,
"time_to_max_ms": 340.2999327213152,
"trail_off_quality": 0.9863805788090505,
"is_threshold_braking": false
},
{
"distance_m": 916.4739990234375,
"time_seconds": 52.343685569807064,
"initial_speed_kmh": 39.906111823187935,
"initial_pressure": 0.1020520031452179,
"max_pressure": 0.8338289856910706,
"time_to_max_ms": 416.69379516895333,
"trail_off_quality": 0.9797653442947194,
"is_threshold_braking": false
},
{
"distance_m": 965.1309814453125,
"time_seconds": 55.038305445232986,
"initial_speed_kmh": 15.077194637722439,
"initial_pressure": 0.10131999850273132,
"max_pressure": 0.11938700079917908,
"time_to_max_ms": 125.00813855068316,
"trail_off_quality": 0.9949813882509867,
"is_threshold_braking": true
},
{
"distance_m": 1054.9599609375,
"time_seconds": 61.03175119907981,
"initial_speed_kmh": 32.24916670057509,
"initial_pressure": 0.11133000254631042,
"max_pressure": 0.47338101267814636,
"time_to_max_ms": 361.13462247976,
"trail_off_quality": 0.9722062297738515,
"is_threshold_braking": false
},
{
"distance_m": 1186.02001953125,
"time_seconds": 67.37244178223409,
"initial_speed_kmh": 31.674166785346138,
"initial_pressure": 0.10351700335741043,
"max_pressure": 0.4509190022945404,
"time_to_max_ms": 284.7407600321219,
"trail_off_quality": 0.9750286425862994,
"is_threshold_braking": false
},
{
"distance_m": 1206.02001953125,
"time_seconds": 68.42112116674264,
"initial_speed_kmh": 23.73986138237847,
"initial_pressure": 0.10131999850273132,
"max_pressure": 0.19385099411010742,
"time_to_max_ms": 166.6775180675728,
"trail_off_quality": 0.9866482825018466,
"is_threshold_braking": false
},
{
"distance_m": 1251.1700439453125,
"time_seconds": 76.08828699785143,
"initial_speed_kmh": 5.670250256856282,
"initial_pressure": 0.10400500148534775,
"max_pressure": 0.759289026260376,
"time_to_max_ms": 305.5754497905667,
"trail_off_quality": 0.9517999978905374,
"is_threshold_braking": false
},
{
"distance_m": 1353.3199462890625,
"time_seconds": 86.31117477266315,
"initial_speed_kmh": 28.81027857462565,
"initial_pressure": 0.1020520031452179,
"max_pressure": 0.18872399628162384,
"time_to_max_ms": 402.8040019966568,
"trail_off_quality": 0.9800033335174833,
"is_threshold_braking": false
},
{
"distance_m": 1377.219970703125,
"time_seconds": 87.54736636499773,
"initial_speed_kmh": 26.37375089857313,
"initial_pressure": 0.10278499871492386,
"max_pressure": 0.19604800641536713,
"time_to_max_ms": 97.22855220609006,
"trail_off_quality": 0.9728390597738326,
"is_threshold_braking": false
},
{
"distance_m": 1438.9200439453125,
"time_seconds": 90.42949844824967,
"initial_speed_kmh": 33.45611148410373,
"initial_pressure": 0.10351700335741043,
"max_pressure": 0.6955059766769409,
"time_to_max_ms": 312.520346376715,
"trail_off_quality": 0.965679766062428,
"is_threshold_braking": false
},
{
"distance_m": 1466.8299560546875,
"time_seconds": 91.80458797230723,
"initial_speed_kmh": 25.516861809624565,
"initial_pressure": 0.10547000169754028,
"max_pressure": 0.14038300514221191,
"time_to_max_ms": 62.50406927533447,
"trail_off_quality": 0.9801019988954067,
"is_threshold_braking": false
},
{
"distance_m": 1491.0999755859375,
"time_seconds": 93.06161425440025,
"initial_speed_kmh": 27.365917629665798,
"initial_pressure": 0.10620299726724625,
"max_pressure": 0.25828900933265686,
"time_to_max_ms": 166.6775180675728,
"trail_off_quality": 0.986348448042897,
"is_threshold_braking": false
},
{
"distance_m": 1538.1500244140625,
"time_seconds": 95.64511578444778,
"initial_speed_kmh": 27.984445359971787,
"initial_pressure": 0.10766799747943878,
"max_pressure": 0.6014189720153809,
"time_to_max_ms": 263.90607027366286,
"trail_off_quality": 0.9536960403311927,
"is_threshold_braking": false
},
{
"distance_m": 1572.5699462890625,
"time_seconds": 97.70080517394796,
"initial_speed_kmh": 24.553082784016926,
"initial_pressure": 0.10400500148534775,
"max_pressure": 0.20483699440956116,
"time_to_max_ms": 284.7407600321219,
"trail_off_quality": 0.9865371435880661,
"is_threshold_braking": false
},
{
"distance_m": 1586.8800048828125,
"time_seconds": 98.58975193697506,
"initial_speed_kmh": 20.793221791585285,
"initial_pressure": 0.10058700293302536,
"max_pressure": 0.17358699440956116,
"time_to_max_ms": 236.12648392908397,
"trail_off_quality": 0.9910792316763829,
"is_threshold_braking": false
}
]
},
"metadata": {
"analyzer": "rally_braking",
"title": "Rally Braking Analysis",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: e240d0597bb22cc0RSF driver

Relaxed Threshold

Options: threshold_brake_ratio=0.5

{
"metrics": [
{
"subject_id": "e240d0597bb22cc0",
"driver_name": "RSF driver",
"brake_event_count": 19,
"threshold_brake_count": 7,
"threshold_brake_pct": 0.3684210526315789,
"avg_trail_off_quality": 0.976769458492569,
"initial_attack_score": 0.44402647513373406,
"avg_speed_reduction_kmh": 28.129229935986256,
"avg_max_pressure": 0.41993552289511027,
"threshold_brake_formatted": "37%",
"trail_off_formatted": "98%",
"initial_attack_formatted": "44%"
}
],
"brake_events": {
"e240d0597bb22cc0": [
{
"distance_m": 200.14300537109375,
"time_seconds": 17.535863880026913,
"initial_speed_kmh": 35.971666971842446,
"initial_pressure": 0.10400500148534775,
"max_pressure": 0.6151059865951538,
"time_to_max_ms": 361.1346224797636,
"trail_off_quality": 0.9531506491755998,
"is_threshold_braking": false
},
{
"distance_m": 245.57400512695312,
"time_seconds": 19.709616511491635,
"initial_speed_kmh": 26.52522193060981,
"initial_pressure": 0.1020520031452179,
"max_pressure": 0.416251003742218,
"time_to_max_ms": 1034.7895913362422,
"trail_off_quality": 0.9859566819444995,
"is_threshold_braking": false
},
{
"distance_m": 495.4070129394531,
"time_seconds": 32.960479197864444,
"initial_speed_kmh": 42.12416754828559,
"initial_pressure": 0.10840000212192535,
"max_pressure": 0.6586099863052368,
"time_to_max_ms": 687.5447620287787,
"trail_off_quality": 0.9765493596593539,
"is_threshold_braking": false
},
{
"distance_m": 537.0430297851562,
"time_seconds": 34.73142782733251,
"initial_speed_kmh": 30.44722239176432,
"initial_pressure": 0.10547000169754028,
"max_pressure": 0.40453198552131653,
"time_to_max_ms": 215.29179417062494,
"trail_off_quality": 0.9798675345843786,
"is_threshold_braking": false
},
{
"distance_m": 723.5499877929688,
"time_seconds": 43.093083317056234,
"initial_speed_kmh": 36.21666802300347,
"initial_pressure": 0.10766799747943878,
"max_pressure": 0.5948269963264465,
"time_to_max_ms": 340.2999327213152,
"trail_off_quality": 0.9863805788090505,
"is_threshold_braking": false
},
{
"distance_m": 916.4739990234375,
"time_seconds": 52.343685569807064,
"initial_speed_kmh": 39.906111823187935,
"initial_pressure": 0.1020520031452179,
"max_pressure": 0.8338289856910706,
"time_to_max_ms": 416.69379516895333,
"trail_off_quality": 0.9797653442947194,
"is_threshold_braking": false
},
{
"distance_m": 965.1309814453125,
"time_seconds": 55.038305445232986,
"initial_speed_kmh": 15.077194637722439,
"initial_pressure": 0.10131999850273132,
"max_pressure": 0.11938700079917908,
"time_to_max_ms": 125.00813855068316,
"trail_off_quality": 0.9949813882509867,
"is_threshold_braking": true
},
{
"distance_m": 1054.9599609375,
"time_seconds": 61.03175119907981,
"initial_speed_kmh": 32.24916670057509,
"initial_pressure": 0.11133000254631042,
"max_pressure": 0.47338101267814636,
"time_to_max_ms": 361.13462247976,
"trail_off_quality": 0.9722062297738515,
"is_threshold_braking": false
},
{
"distance_m": 1186.02001953125,
"time_seconds": 67.37244178223409,
"initial_speed_kmh": 31.674166785346138,
"initial_pressure": 0.10351700335741043,
"max_pressure": 0.4509190022945404,
"time_to_max_ms": 284.7407600321219,
"trail_off_quality": 0.9750286425862994,
"is_threshold_braking": false
},
{
"distance_m": 1206.02001953125,
"time_seconds": 68.42112116674264,
"initial_speed_kmh": 23.73986138237847,
"initial_pressure": 0.10131999850273132,
"max_pressure": 0.19385099411010742,
"time_to_max_ms": 166.6775180675728,
"trail_off_quality": 0.9866482825018466,
"is_threshold_braking": true
},
{
"distance_m": 1251.1700439453125,
"time_seconds": 76.08828699785143,
"initial_speed_kmh": 5.670250256856282,
"initial_pressure": 0.10400500148534775,
"max_pressure": 0.759289026260376,
"time_to_max_ms": 305.5754497905667,
"trail_off_quality": 0.9517999978905374,
"is_threshold_braking": false
},
{
"distance_m": 1353.3199462890625,
"time_seconds": 86.31117477266315,
"initial_speed_kmh": 28.81027857462565,
"initial_pressure": 0.1020520031452179,
"max_pressure": 0.18872399628162384,
"time_to_max_ms": 402.8040019966568,
"trail_off_quality": 0.9800033335174833,
"is_threshold_braking": true
},
{
"distance_m": 1377.219970703125,
"time_seconds": 87.54736636499773,
"initial_speed_kmh": 26.37375089857313,
"initial_pressure": 0.10278499871492386,
"max_pressure": 0.19604800641536713,
"time_to_max_ms": 97.22855220609006,
"trail_off_quality": 0.9728390597738326,
"is_threshold_braking": true
},
{
"distance_m": 1438.9200439453125,
"time_seconds": 90.42949844824967,
"initial_speed_kmh": 33.45611148410373,
"initial_pressure": 0.10351700335741043,
"max_pressure": 0.6955059766769409,
"time_to_max_ms": 312.520346376715,
"trail_off_quality": 0.965679766062428,
"is_threshold_braking": false
},
{
"distance_m": 1466.8299560546875,
"time_seconds": 91.80458797230723,
"initial_speed_kmh": 25.516861809624565,
"initial_pressure": 0.10547000169754028,
"max_pressure": 0.14038300514221191,
"time_to_max_ms": 62.50406927533447,
"trail_off_quality": 0.9801019988954067,
"is_threshold_braking": true
},
{
"distance_m": 1491.0999755859375,
"time_seconds": 93.06161425440025,
"initial_speed_kmh": 27.365917629665798,
"initial_pressure": 0.10620299726724625,
"max_pressure": 0.25828900933265686,
"time_to_max_ms": 166.6775180675728,
"trail_off_quality": 0.986348448042897,
"is_threshold_braking": false
},
{
"distance_m": 1538.1500244140625,
"time_seconds": 95.64511578444778,
"initial_speed_kmh": 27.984445359971787,
"initial_pressure": 0.10766799747943878,
"max_pressure": 0.6014189720153809,
"time_to_max_ms": 263.90607027366286,
"trail_off_quality": 0.9536960403311927,
"is_threshold_braking": false
},
{
"distance_m": 1572.5699462890625,
"time_seconds": 97.70080517394796,
"initial_speed_kmh": 24.553082784016926,
"initial_pressure": 0.10400500148534775,
"max_pressure": 0.20483699440956116,
"time_to_max_ms": 284.7407600321219,
"trail_off_quality": 0.9865371435880661,
"is_threshold_braking": true
},
{
"distance_m": 1586.8800048828125,
"time_seconds": 98.58975193697506,
"initial_speed_kmh": 20.793221791585285,
"initial_pressure": 0.10058700293302536,
"max_pressure": 0.17358699440956116,
"time_to_max_ms": 236.12648392908397,
"trail_off_quality": 0.9910792316763829,
"is_threshold_braking": true
}
]
},
"metadata": {
"analyzer": "rally_braking",
"title": "Rally Braking Analysis",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: e240d0597bb22cc0RSF driver

Example Calls

Am I using threshold braking correctly

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

Analyzes brake attack speed and threshold braking percentage

How is my trail braking

analyze(analyzers='rally_braking', event='...', lap_selection='best')

Analyzes trail-off quality on best lap


Generated from b4racing.analysis.analyzers.rally_braking.RallyBrakingAnalyzer