Skip to content

Closed tolerance table, external-force oracle on every robot, mimic wrench mapping - #15

Merged
plancherb1 merged 1 commit into
mainfrom
tolerance-keys-fext-oracle
Oct 21, 2026
Merged

plancherb1 merged 1 commit into
mainfrom
tolerance-keys-fext-oracle

Conversation

@plancherb1

Copy link
Copy Markdown
Member

Summary

  • get_tolerance refuses an unknown algorithm key instead of returning the default bucket, and the module refuses a per-robot override whose algorithm has no bucket. GRiD's CUDA equivalence modules had passed keys this table never had (forward_dynamics, f_ext_grad, f_ext_grad_so, fd) and compared under the 1e-7 default; gen3's continuous-joint bucket therefore never applied and its pinocchio leg was left out of the external-force checks.
  • forward_dynamics and inverse_dynamics_gradient are algorithm-level buckets. The latter existed only as the gen3 override, so every other robot's gradient checks compared under the default with the same values. gen3 and h1_2 carry on forward dynamics the widening their inverse-dynamics buckets already have; no allowance changes for any existing check.
  • The pinocchio oracle places the project's per-body wrenches through the mimic-inclusive scalar_joint_names, the list its f_ext gradient column already uses. Through the mimic-free list, h1_2's bodies after a mid-chain mimic joint received their neighbour's wrench and the mimic bodies none.
  • tests/test_external_force_equivalence.py: inverse dynamics, forward dynamics, ABA and the inverse-dynamics gradients with a nonzero wrench on every body of every manifest robot, both bases, against pinocchio. tests/test_tolerances.py: the table is closed.

Verification

  • Fast suite: 859 passed, 1 skipped (pre-existing singular-mass guard). Slow external-force cells (--runslow -k "f_ext or external_force"): 72 passed.
  • Measured residuals with wrenches on every body (max over the dynamics samples, relative to output scale): gen3 1.2e-6 to 2.7e-5, h1_2 and fr3 at float64 round-off, every other robot at or below 1e-9.
  • GRiD's three-way CUDA cells for gen3 (both bases), fr3 fixed and h1_2 floating pass on an RTX 5090 with this commit.

🤖 Generated with Claude Code

…t buckets, mimic-inclusive wrench mapping, external-force oracle over every robot
@plancherb1
plancherb1 merged commit c5c23f8 into main Oct 21, 2026
1 check 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