Files
sunnypilot/docs/ford_direct_path_validation.json
T
Isaac Barham 01f5d54292 Ford: trial direct model-path offset and heading
Sample position and orientation at the existing distance stations, retain measured-steering feedback against the path heading, and apply request limits independently to C0 and C1. Reuse the geometry toggle with upstream and maneuver fallback unchanged. Defer the untested raw-torque filtering change so this trial compares against the driven baseline. Validate with 593 tests and paired full-route replays; no physical tracking improvement is claimed.
2026-09-16 11:59:09 -04:00

155 lines
5.3 KiB
JSON

{
"15a": {
"cycles": 21867,
"wire_checks": 2187,
"baseline_recorded_error_p50_p95_p99_max": {
"c0": [
4.172324707951702e-09,
5.2452087118126656e-08,
8.583068833445395e-08,
1.1444091807533141e-07
],
"c1": [
8.791685157660822e-10,
1.1682510403510094e-08,
1.4305114759416426e-08,
1.478195188475695e-08
]
},
"latched_angle_match_fraction": 1.0,
"command_changes": {
"c0": [
0.2799999999999998,
1.3800000000000003,
1.8000000000000007,
2.51
],
"c1": [
0.01749999999999996,
0.124,
0.2940450000000001,
0.45200000000000007
]
},
"reference_change_p50_p95_max": [
0.0015834828704371431,
0.012526763883651669,
0.03905121179470369
],
"variants": {
"old": {
"feedback_switches_active": 112,
"feedback_switches_low_speed": 61,
"low_speed_c0_steps_over_025m": 52,
"low_speed_c1_steps_over_005rad": 36,
"low_speed_step_p99": {
"c0": 0.4996000000000004,
"c1": 0.05668000000000003
},
"c0_bound_active_s": 0.0,
"c1_bound_active_s": 2.5702606670000137
},
"new": {
"feedback_switches_active": 112,
"feedback_switches_low_speed": 61,
"low_speed_c0_steps_over_025m": 52,
"low_speed_c1_steps_over_005rad": 46,
"low_speed_step_p99": {
"c0": 0.8499999999999996,
"c1": 0.08540000000000011
},
"c0_bound_active_s": 0.0,
"c1_bound_active_s": 6.774772933000349
}
},
"method": "Compare direct model-path commands against the driven geometry-curvature controller.\n\nInput: extract.py route.npz/model_paths.npz/metadata.json directories. This checks\nreference selection, command continuity and overrides; it does not predict a changed wheel response.\n",
"provenance": {
"baseline_commit": "18ded0380045c29520cf1f690688e48ebad043d8",
"baseline_controller_sha256": "8bc8554ed6743c5faf433deaa6de3f07fae27d183f62b04f49f9c3b9f1e8dcca",
"candidate_controller_sha256": "02b64f40a56cadefb181afbf7c3720affa3c7fe4ac18a2902dc9c546fd6b395d",
"fixed_c0_distance_m": 7.0
},
"sources_sha256": {
".cache/ford_route15a/rlog_full/route.npz": "057ce69ce028b2c9c1b42ab8110f35c888a6c398ddcc4156e74afc98c83d119d",
".cache/ford_route15a/rlog_full/model_paths.npz": "ef820d9df14afa308bf46f95463b636a599ff24fd08bffaff1ae671b3932c24a",
".cache/ford_route15a/rlog_full/metadata.json": "bea47c7f0c0b583964ced3484fe814ec9a7a24abbfe6272e70f9dde12580a756"
}
},
"15b": {
"cycles": 22278,
"wire_checks": 2228,
"baseline_recorded_error_p50_p95_p99_max": {
"c0": [
6.70552502413102e-10,
3.814697269177714e-08,
1.0490417512443173e-07,
0.009999947547912669
],
"c1": [
1.9371515502797365e-10,
5.4836273299940785e-09,
1.2159347528850617e-08,
1.478195188475695e-08
]
},
"latched_angle_match_fraction": 0.9999321895978843,
"command_changes": {
"c0": [
0.040000000000000036,
1.08,
1.7699999999999996,
2.46
],
"c1": [
0.003500000000000003,
0.12449999999999994,
0.22634999999999764,
0.406
]
},
"reference_change_p50_p95_max": [
0.00021085212911765025,
0.013382994089416386,
0.03945627628640698
],
"variants": {
"old": {
"feedback_switches_active": 238,
"feedback_switches_low_speed": 107,
"low_speed_c0_steps_over_025m": 85,
"low_speed_c1_steps_over_005rad": 32,
"low_speed_step_p99": {
"c0": 0.36999999999999944,
"c1": 0.03771999999999984
},
"c0_bound_active_s": 0.0,
"c1_bound_active_s": 6.701652654999748
},
"new": {
"feedback_switches_active": 238,
"feedback_switches_low_speed": 107,
"low_speed_c0_steps_over_025m": 129,
"low_speed_c1_steps_over_005rad": 57,
"low_speed_step_p99": {
"c0": 0.6187999999999921,
"c1": 0.05121999999999982
},
"c0_bound_active_s": 0.0,
"c1_bound_active_s": 7.542629173000023
}
},
"method": "Compare direct model-path commands against the driven geometry-curvature controller.\n\nInput: extract.py route.npz/model_paths.npz/metadata.json directories. This checks\nreference selection, command continuity and overrides; it does not predict a changed wheel response.\n",
"provenance": {
"baseline_commit": "18ded0380045c29520cf1f690688e48ebad043d8",
"baseline_controller_sha256": "8bc8554ed6743c5faf433deaa6de3f07fae27d183f62b04f49f9c3b9f1e8dcca",
"candidate_controller_sha256": "02b64f40a56cadefb181afbf7c3720affa3c7fe4ac18a2902dc9c546fd6b395d",
"fixed_c0_distance_m": 7.0
},
"sources_sha256": {
".cache/ford_route15b/rlog_full/route.npz": "f95e1c16a4677fee0ab57002d714e22716bf11873c308280553312fa9d18aab0",
".cache/ford_route15b/rlog_full/model_paths.npz": "a90be55943ce0009afbf38ef2035b3fff4de8ab00ea266636247bcc5a5012eae",
".cache/ford_route15b/rlog_full/metadata.json": "545ef8d6740e57237f35b2ca684111fc2d774e83aa1d6c8a5a0fff1b71270e85"
}
}
}