Skip to content

docs(vehicle-ph-plant): wheel spin, the full (q, p) form with the side slope, and compliant contact - #151

Merged
transfix merged 2 commits into
mainfrom
docs/vehicle-ph-spin-contact
Nov 3, 2026
Merged

transfix merged 2 commits into
mainfrom
docs/vehicle-ph-spin-contact

Conversation

@transfix

@transfix transfix commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

This follow-up to #150 brings docs/vehicle-ph-plant.tex and its PDF up to date with three libcvc PRs that merged on 2026-11-03: wheel spin, compliant contact, and the full (q, p) form with the side slope. All three are opt-in and in no release yet. #146 twins them.

What changed

  • New §7, "Wheel spin, the side slope and compliant contact".

    • §7.1, wheel spin (dyn_bike, dyn_4w: opt-in wheel spin in pH form; plant logs carry the wheels; cvc::ph potential and input options transfix/libcvc#982, 4b640693). The form gains the wheels' momenta, so x = (p, L). The port becomes (wheel torque, wheel speed), and R gains the longitudinal slip's secants, which are positive semi-definite at every slip, whether a wheel rolls, spins or locks. On four wheels the longitudinal coupling is reciprocal, so it adds no lever term.
    • §7.2, the full form and the side slope (#987, b89992ef). Gravity moves into H as V(q) = m g h(c(q)), and −Tᵀ∇V = −mg(θ∥, θ⊥, 0). The slopes are tangents, not sines; the sines leave m g θ³/2 unbooked. The four-wheel full form is included: there, −Tᵀ∂H/∂g is the grade force to round-off.
    • §7.3, compliant contact (#983, 2728bca8). The model is a barrier Φ(g) in H, with the Hunt–Crossley damper and the smoothed friction in R_c. It enters through the external port at each point of the outline, against the scene and between vehicles. The section compares impacts with the rigid-body world, and covers learning from contact windows.
    • §7.3 also reports a limit I found while binding the options in pycvc. At the default 0.01 s substep, a 7.8 m/s impact under the navigator's drive overshoots the damper, which is held over each substep. The vehicle rebounds at 3.2 m/s, the books show the contact supplying 1.5e5 J, and the residual is 3.1e-2 of the flow. At 0.005 s the residual is 2.4e-3, falling to 2.6e-4 at 0.00125 s. libcvc's own contact tests impact at 5 m/s only.
  • New §8.7, the learned plant's potential (#982). se2_setup::potential can be world, none or terrain, and non-world models are written as cvc-ph-se2/3. The wide plant logs carry the wheel speeds and the ground slope. The section summarizes #982's fit comparison and labels it a training run that was not re-run here; the city scene is not named.

  • Review gaps (§12.1). Actuation and collisions are now described as built, with what is left: the four-wheel plant has no compliant contact, and a learned plant learns a contact's mean response, not where the contact is. Integration is still under way, since #978 and #981 are open.

  • Proposition 1's open points.

    • The pose update now has its own test: DynPHFull.ThePoseUpdateIsTv finds q₁ = q₀ + h T(q₁) v₁ to 1.8e-16.
    • "Gravity in H once there is a side slope" is now built: §4.5 points to §7.2.
  • Three new validation tables, 7 to 9, measured on libcvc master 3d5c15c6. Its nav, ph and physics sources and tests are identical to #987's squash commit, and I checked that with git diff.

    Suite Tests passed
    nav_dyn_spin_test 13
    nav_dyn_ph_full_test 8
    physics_dyn_contact_test 7
    physics_dyn_bike_plant_test 10
    ph_se2_train_test 13
    nav_dyn_bike_test 23
    nav_dyn_4w_test 23

    The last two include the default plants' goldens. Every number is from that run, not from the PR notes. Two differ from the notes:

    • The single-track launch's per-halving ratios are 5.5, 7.5 and 6.6, not "then 4×".
    • The single-track swerve's residual is 1.3e-3 of the flow at h = 0.01 s.
  • The potential-option row is added to Table 11.

  • GRL-SNAM's twins.

  • Smaller edits.

    • The abstract, the contributions and "What is not claimed".
    • The Versions list now includes #982, #983 and #987.
    • The live plant's books equation gains its slip line and its three compliant-contact lines.
    • The "What is not twinned yet" paragraph.
    • The four-wheel limitations paragraph.
    • The appendix: its build and run commands, the ctest filter, the printed lines (preset-naming lines summarized), and the GRL-SNAM commands.
    • The equation-to-code map, now split in two.

Checks

  • pdflatex, three passes: no warnings, 48 pages. A \clearpage before §12 keeps every validation table inside §11.
  • Scope grep over the .tex: no program, engagement, radio or vehicle-preset terms, no city name except the university's, and no session names.

Not in this PR

…e slope, and compliant contact

A new section covers libcvc #982 (wheel spin: the wheels' momenta in the state, a
(wheel torque, wheel speed) port, the longitudinal slip's secants in R), #987 (the
full form with gravity in H, tangents not sines, the four-wheel full form) and
#983 (a barrier energy in H, the damper and friction in R, through the external
port; against the rigid-body world; contact windows in the logs), with three
validation tables measured on libcvc master 3d5c15c6. The learned plant gains the
potential's form (#982). The review gaps now describe actuation and collisions as
built, and Proposition 1's pose update has its own test. GRL-SNAM #146's twins
get their own table, and the twins' parity tests move to a table of their own.
At the default substep a 7.8 m/s impact overshoots the contact's damper; the
paper says so. Three passes of pdflatex: no warnings, 48 pages.
@transfix
transfix merged commit 66b254c into main Nov 3, 2026
4 checks passed
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