Cornering G
Algorithm speed-1.0.0 (channel) and segments-1.0.0+segment-results-1.0.0 (sustained) · source
engine/src/dtta/engine/speed/analysis.py, engine/src/dtta/engine/segments/results.py.
Definition
Cornering G is the kinematic lateral acceleration of the car's path: how hard the car is actually changing direction. It comes from GPS only.
- : Savitzky–Golay first derivatives of the local east/north position (window
sg_window_heading_s= 1.0 s, ordersg_polyorder= 2). - : path heading, unwrapped, then zero-phase low-passed at
speed_cutoff_hz(1 Hz). Positive counter-clockwise: left turns increase . - : Savitzky–Golay derivative of (same window and order).
- Masked (undefined) where
heading_min_speed_ms(3 m/s). - Equivalent form with path curvature .
Sign: positive in a left turn. Displayed in g: .
Because it is built from speed and heading of the path, it contains no gravity, no banking and no body roll. That is what makes it the driver-facing lateral number: it answers "how hard did the car corner", independent of how the camera is mounted.
Sustained value (per segment)
Inside a segment the channel is resampled onto a uniform 20 ms time axis and the maximum sliding-window mean of is taken. A spike of amplitude and duration can move it by at most ; the Phase 8 spike test injected a 5 g sample into a real 1.5 g corner and measured a change below 0.01 g. The window was chosen from 0.5 / 0.75 / 1.0 / 1.5 s: lap-to-lap spread of the per-corner value is within noise for all candidates and 1.0 s is 8–16 % of a corner's duration, so it measures the loaded phase, not the whole corner. Mean and peak (filtered) values are also computed; the raw accelerometer peak is never called Cornering G.
Cross-validation
| check | result on the fixtures |
|---|---|
| Synthetic constant-speed circle, radius | within 2 % |
| Net rotation per lap: (gyro, vehicle frame) vs (GPS) | 0.957–1.033 vs 0.996–1.023 turns, i.e. ≤ 5 % on every stable lap |
| Bias between the gyro-derived lateral and Cornering G | within ±0.03 g on stable laps |
| Two cameras in the same car, gyro lateral | 0.084–0.097 g RMS agreement |
The instantaneous comparison with the gyro was expected to agree to 0.15 g RMS in the plan, and it does not on dirt (0.47–0.74 g RMS): the body yaw rate leads the path heading rate while the car is rotated into the corner (slip-angle rate RMS 0.17–0.31 rad/s, identical on two cameras). That is physics, not error; the gyro channel is therefore shown to engineers as body-yaw lateral and never labelled Cornering G (Amendment A2 of the deployment plan).
Engineer channels on the same page
- Body-yaw lateral (gyro): with the yaw rate in the
vehicle frame (bias removed on stationary data) and the low-passed lean estimate
(
lean_lowpass_hz0.5 Hz). - Slip-rate diagnostic: , reported as an RMS per lap.
Limitations
- Undefined below 3 m/s and in the first/last 0.5 s of a GPS run.
- Heading from positions at 10–18 Hz limits the bandwidth to ~1 Hz; very short transients are smoothed.
- Shares the GPS lag (0.15–0.40 s behind the IMU clock); the delta between two laps is unaffected.
Verified
docs/proofs/phase-06, docs/proofs/phase-08/REPORT.md; tests engine/tests/synthetic,
engine/tests/unit/test_speed_filters.py, regression goldens cornering_g_sustained per corner ± 0.02 g.