Skip to content

feat: read physical rack displacement in L5 hardpoint steering - #36

Merged
Onlyti merged 6 commits into
mainfrom
feat/l5-rack-travel-input
Nov 2, 2026
Merged

Onlyti merged 6 commits into
mainfrom
feat/l5-rack-travel-input

Conversation

@Onlyti

@Onlyti Onlyti commented Nov 1, 2026 •

Copy link
Copy Markdown
Owner

Physical +y rack displacement now reaches L5 hardpoint geometry when steer_input="rack_travel". The default roadwheel path retains its previous steering output contract.

Acceptance and fixed conditions

  • Original locked eight-value product-toe table and tolerances unchanged: front +/-2%, rear 1e-6 deg.
  • Loaded fixture, hardpoints, contact and load model retained; 1 ms steps, zero rack for the first 0.2 s, deadline 8 s.
  • Zero/positive/negative runs advance at identical times. The first common 0.5 s consecutive window requires body speed <=0.001 m/s, angular speed <=0.001 rad/s, every wheel travel rate <=0.001 m/s, toe rate <=0.01 deg/s and vertical load rate <=1 N/s; all monitored channels finite and all loads positive.
  • No hardcoded acceptance time, unloaded substitute, fixed wheel position, later favourable-time search or permanent-equilibrium claim.
  • T6 checks both rack signs at settlement. T8 independently compares both signs with Ackerman 0/100 byte-for-byte. T9 removes the actual direct-read expression, fails the formal test, then restores and passes (raw logs).

Post-measurement changes

  • 4159e41 restores the shared UnitySteering contract; product defaults and frozen fixtures have zero diff from 94113b6.
  • 5dca79e introduces a test-only physical RackOutput and compares zero/input at the same time instead of subtracting an earlier control observation.
  • 155b727 incorporates the approved first-common-settlement assertions as a separate test commit; locked table, tolerances and product geometry remain unchanged.
  • e10bb55 is a document-only currency confirmation (docs/VALIDATION.md). Measurement tree remains c63aa1f.

Local verification

HEAD at measurement: c63aa1f
Confirmation HEAD: e10bb55
Canonical serial validation: 595/595.
Main registration: 587; additions: L5RackTravel.T1T2_DefaultMatchesRoadwheel, L5RackTravel.T3_RackWithoutHardpointThrows, L5RackTravel.T4_RackPlusDynamicThrows, L5RackTravel.T5T6T8_LockedTableAndSameSign, L5RackTravel.T7_BadKeyThrows, L5RackTravel.T8_AckermanDoesNotChangeRackOutput, L5RackTravel.T9_DisableEnvFailsT5ThenRestores, l5_rack_travel; removals: none.
Language counts: {"Python": 45, "C++": 550}.
Baseline 94113b6 vs current: ten serialized file pairs (L1-L5, omitted/explicit roadwheel) byte-identical.
D0FlatContactBaseline and restored targeted C++/Python acceptance pass.
mkdocs strict rc=0. Documentation audit FAIL count matches main after currency fill.

CI measurement

Same-head measurement run 41351185235 (head c63aa1f):

attempt jobs fail-0 lines of 595 timing/known_failure exec
1 5/5 success 5 0
2 5/5 success 5 0
3 5/5 success 5 0

Confirmation run 41360044716 (head e10bb55, VALIDATION 1 file):

attempt jobs fail-0 lines of 595 timing/known_failure exec
1 5/5 success 5 0

Wheels 41360143451 (head e10bb55): ubuntu-latest, windows-latest, sdist, verify success; publish skipped.
No merge, tag or publication performed.

Documentation impact

Updated hardpoint-kinematics section and CHANGELOG input-contract table; no changes to other levels' rack meaning. Raw evidence: /home/ailab-12/q48b/settlement/ and /home/ailab-12/q48b/followup/.

Read SteeringOutput.rack_travel as physical +y travel when
VehicleParams.steer_input is rack_travel. Default remains
roadwheel. Reject Dynamic steering and missing front
hardpoints from SimSession::tick. L2-L4 warn once and keep
existing rack_travel meaning.

Tests cover default identity, rejects, locked-table geometry,
same-sign rack, unused Ackerman, and disable-env fallback.
@Onlyti
Onlyti merged commit 645780c into main Nov 2, 2026
10 checks passed
@Onlyti
Onlyti deleted the feat/l5-rack-travel-input branch November 2, 2026 00:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant