Skip to main content

CoastingDetectorAnalyzer - Rally Stage - Citroen C4 WRC

Coasting detection: time spent on neither throttle nor brake

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

When to Use

  • User asks about pedal control or coasting
  • User wants to know if they're maintaining car control
  • User asks 'am I coasting too much?'
  • User wants to improve weight transfer management

Key Options

OptionDescription
lap_selectionall
throttle_thresholdThreshold below which throttle is 'off' (default: 0.05)
brake_thresholdThreshold below which brake is 'off' (default: 0.05)

Sample Output

Subjects Analyzed: 1

Short Duration (Default)

Options: min_coast_duration_seconds=0.1

{
"metrics": [
{
"subject_id": "e240d0597bb22cc0",
"driver_name": "RSF driver",
"coasting_pct": 0.08359375,
"coasting_event_count": 20,
"total_coasting_time_seconds": 8.299151420448384,
"avg_coast_duration_seconds": 0.4149575710224192,
"max_coast_duration_seconds": 2.1320832519478268,
"control_score": 0.8328125,
"coasting_pct_formatted": "8.4%",
"control_score_formatted": "83%"
}
],
"coasting_events": {
"e240d0597bb22cc0": [
{
"start_distance_m": -0.0006026849732734263,
"end_distance_m": -0.0006026849732734263,
"duration_seconds": 0.5833713132365389,
"start_speed_kmh": 0.0,
"end_speed_kmh": 0.0
},
{
"start_distance_m": -0.0006026849732734263,
"end_distance_m": 0.0003793089999817312,
"duration_seconds": 2.1320832519478268,
"start_speed_kmh": 0.0,
"end_speed_kmh": 0.00012427777821560286
},
{
"start_distance_m": 0.00038918000063858926,
"end_distance_m": 0.0003892059903591871,
"duration_seconds": 0.18751220782603095,
"start_speed_kmh": 0.0,
"end_speed_kmh": 0.0
},
{
"start_distance_m": 64.40840148925781,
"end_distance_m": 69.23789978027344,
"duration_seconds": 0.22223669075677677,
"start_speed_kmh": 30.511389838324654,
"end_speed_kmh": 29.93944380018446
},
{
"start_distance_m": 193.78500366210938,
"end_distance_m": 199.24000549316406,
"duration_seconds": 0.20140200099833194,
"start_speed_kmh": 36.593331231011284,
"end_speed_kmh": 36.194445292154946
},
{
"start_distance_m": 222.26800537109375,
"end_distance_m": 234.7899932861328,
"duration_seconds": 0.6250406927534335,
"start_speed_kmh": 30.476387871636284,
"end_speed_kmh": 24.872555202907986
},
{
"start_distance_m": 235.53199768066406,
"end_distance_m": 244.7760009765625,
"duration_seconds": 0.4861427610304503,
"start_speed_kmh": 24.517777760823567,
"end_speed_kmh": 26.65069368150499
},
{
"start_distance_m": 672.7760009765625,
"end_distance_m": 677.6619873046875,
"duration_seconds": 0.2014020009983284,
"start_speed_kmh": 35.22250069512261,
"end_speed_kmh": 34.49861102634006
},
{
"start_distance_m": 679.7219848632812,
"end_distance_m": 684.8690185546875,
"duration_seconds": 0.20834689758447666,
"start_speed_kmh": 34.28027682834201,
"end_speed_kmh": 34.22166612413194
},
{
"start_distance_m": 968.1589965820312,
"end_distance_m": 969.7639770507812,
"duration_seconds": 0.29863055320441845,
"start_speed_kmh": 6.7132499482896595,
"end_speed_kmh": 9.762194951375326
},
{
"start_distance_m": 1071.469970703125,
"end_distance_m": 1075.3499755859375,
"duration_seconds": 0.20834689758447666,
"start_speed_kmh": 24.828389485677082,
"end_speed_kmh": 25.0371954176161
},
{
"start_distance_m": 1093.0999755859375,
"end_distance_m": 1094.969970703125,
"duration_seconds": 0.11111834537838661,
"start_speed_kmh": 25.245111253526474,
"end_speed_kmh": 24.682305653889973
},
{
"start_distance_m": 1150.8199462890625,
"end_distance_m": 1168.0899658203125,
"duration_seconds": 0.7500488313041132,
"start_speed_kmh": 33.00388971964518,
"end_speed_kmh": 31.431666480170357
},
{
"start_distance_m": 1181.699951171875,
"end_distance_m": 1185.0699462890625,
"duration_seconds": 0.15973262148143874,
"start_speed_kmh": 32.382500966389976,
"end_speed_kmh": 31.90888934665256
},
{
"start_distance_m": 1201.6600341796875,
"end_distance_m": 1205.1700439453125,
"duration_seconds": 0.19445710441218012,
"start_speed_kmh": 25.59441672431098,
"end_speed_kmh": 24.387694464789497
},
{
"start_distance_m": 1221.3699951171875,
"end_distance_m": 1224.0400390625,
"duration_seconds": 0.19445710441218012,
"start_speed_kmh": 19.57116656833225,
"end_speed_kmh": 16.605055067274304
},
{
"start_distance_m": 1249.6700439453125,
"end_distance_m": 1251.02001953125,
"duration_seconds": 0.2500162771013805,
"start_speed_kmh": 10.036222669813368,
"end_speed_kmh": 6.213277710808648
},
{
"start_distance_m": 1344.18994140625,
"end_distance_m": 1352.1600341796875,
"duration_seconds": 0.3750244156520637,
"start_speed_kmh": 30.003055996365017,
"end_speed_kmh": 29.10000059339735
},
{
"start_distance_m": 1550.1500244140625,
"end_distance_m": 1555.0,
"duration_seconds": 0.35418972589360465,
"start_speed_kmh": 21.374611324734158,
"end_speed_kmh": 19.07133314344618
},
{
"start_distance_m": 1662.6400146484375,
"end_distance_m": 1674.68994140625,
"duration_seconds": 0.5555917268919472,
"start_speed_kmh": 30.779444376627602,
"end_speed_kmh": 29.553332858615452
}
]
},
"metadata": {
"analyzer": "coasting_detector",
"title": "Coasting Detection",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: e240d0597bb22cc0RSF driver

Longer Duration

Options: min_coast_duration_seconds=0.3

{
"metrics": [
{
"subject_id": "e240d0597bb22cc0",
"driver_name": "RSF driver",
"coasting_pct": 0.08359375,
"coasting_event_count": 8,
"total_coasting_time_seconds": 5.861492718709978,
"avg_coast_duration_seconds": 0.7326865898387472,
"max_coast_duration_seconds": 2.1320832519478268,
"control_score": 0.8328125,
"coasting_pct_formatted": "8.4%",
"control_score_formatted": "83%"
}
],
"coasting_events": {
"e240d0597bb22cc0": [
{
"start_distance_m": -0.0006026849732734263,
"end_distance_m": -0.0006026849732734263,
"duration_seconds": 0.5833713132365389,
"start_speed_kmh": 0.0,
"end_speed_kmh": 0.0
},
{
"start_distance_m": -0.0006026849732734263,
"end_distance_m": 0.0003793089999817312,
"duration_seconds": 2.1320832519478268,
"start_speed_kmh": 0.0,
"end_speed_kmh": 0.00012427777821560286
},
{
"start_distance_m": 222.26800537109375,
"end_distance_m": 234.7899932861328,
"duration_seconds": 0.6250406927534335,
"start_speed_kmh": 30.476387871636284,
"end_speed_kmh": 24.872555202907986
},
{
"start_distance_m": 235.53199768066406,
"end_distance_m": 244.7760009765625,
"duration_seconds": 0.4861427610304503,
"start_speed_kmh": 24.517777760823567,
"end_speed_kmh": 26.65069368150499
},
{
"start_distance_m": 1150.8199462890625,
"end_distance_m": 1168.0899658203125,
"duration_seconds": 0.7500488313041132,
"start_speed_kmh": 33.00388971964518,
"end_speed_kmh": 31.431666480170357
},
{
"start_distance_m": 1344.18994140625,
"end_distance_m": 1352.1600341796875,
"duration_seconds": 0.3750244156520637,
"start_speed_kmh": 30.003055996365017,
"end_speed_kmh": 29.10000059339735
},
{
"start_distance_m": 1550.1500244140625,
"end_distance_m": 1555.0,
"duration_seconds": 0.35418972589360465,
"start_speed_kmh": 21.374611324734158,
"end_speed_kmh": 19.07133314344618
},
{
"start_distance_m": 1662.6400146484375,
"end_distance_m": 1674.68994140625,
"duration_seconds": 0.5555917268919472,
"start_speed_kmh": 30.779444376627602,
"end_speed_kmh": 29.553332858615452
}
]
},
"metadata": {
"analyzer": "coasting_detector",
"title": "Coasting Detection",
"subjects_analyzed": 1
}
}

Metrics Summary

MetricValue
Subject: e240d0597bb22cc0RSF driver

Example Calls

Am I coasting too much

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

Detects time spent on neither pedal


Generated from b4racing.analysis.analyzers.coasting_detector.CoastingDetectorAnalyzer