Skip to content

Add constraint-aware benchmarks and native Panda dual-arm support - #897

Merged
yangchen73 merged 11 commits into
mainfrom
yc/nmg-benchmark-native-hand
Oct 30, 2026
Merged

yangchen73 merged 11 commits into
mainfrom
yc/nmg-benchmark-native-hand

Conversation

@yangchen73

@yangchen73 yangchen73 commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Motion-generation comparisons need consistent constraint goals, per-row ownership and replay evidence across cuRobo, IK+TOPPRA, raw NMG and retimed NMG. This change adds that support and native Panda Hand integration for Franka single- and dual-arm manipulation.

  • Preserve Joint, Position, Orientation, FullPose and mixed constraint semantics, named-arm TCP/base transforms and packed ready-arm requests.
  • Use explicit mounted-gripper mesh geometry and canonical-contact-to-runtime-TCP conversion. Migrate existing benchmark, Task Program, example and annotation callers. Direct grasp-generator callers must now provide collision geometry; removed scalar box fields are rejected.
  • Qualify both arms independently and retain Placement footprint/support evidence. Fix numerical overlay holes with a 1e-12 m precision grid after union; preserve the original vertical rays and zero-gap threshold.
  • Correct eight existing test-contract failures involving mounted-gripper configuration and TOPPRA float64 outputs.
  • Accept float64 retimed paths at the OPW FK boundary by converting only the temporary kernel input to float32; leave trajectory positions unchanged. Add the required future import to the hand-geometry test.

Companion: NMG PR #35. Planning, solved timing, execution and physical success retain separate reports; official performance replay is Free-space only.

Validation

  • Follow-up OPW review fix: 114 CPU tests passed and the real CUDA retiming/FK regression passed. The original Warp dtype mismatch is reproduced before the fix. The regression verifies float64 trajectories are unchanged after scalar/batched FK.

  • Native input-freeze CPU regressions: 843 passed, 4 GPU/simulation tests deselected. The new known-support regression fails before the fix and passes after it; real holes, penetration, handle-only support and a 10 nm overhang remain rejected.

  • Black 26.10.1, git diff --check and public API coverage 3280/3280 passed. Existing motion-planning context remains accurate.

  • The measured native integration batch on parent 29ff7e260 passed six simulator/export tests and all 28 four-method design trials / 224 row outcomes. Its NMG fixture has zero training interactions.

  • All eight Franka development/test input corpora and both full dual-arm evidence audits passed. Numerical requalification covers 794 Placement rows with exact native mesh hashes and unchanged task poses, grasps, endpoints, IDs and seeds. Original inputs and failures are independently preserved. Reserved test was prepared without candidate execution.

Fresh remote CI is observed separately from these local and measured checks. This PR does not report trained-policy quality or measured planner latency. Full input hashes and receipts are recorded in the companion freeze study.

Type of change

Benchmark/runtime enhancement and bug fix, with the explicit grasp-geometry API migration described above.

Unify planner constraints, batched and paired execution, replay evidence and frozen input qualification. Add native single- and dual-Panda hardware providers.
Replace scalar collision proxies with explicit open-hand URDF meshes, migrate existing callers and convert contact poses to the runtime TCP once. Reject invalid HandOver grasp samples before endpoint IK.
@yangchen73
yangchen73 force-pushed the yc/nmg-benchmark-native-hand branch from 9e8d6f7 to 364eb1f Compare October 28, 2026 13:23
@yangchen73
yangchen73 marked this pull request as ready for review October 28, 2026 14:29
@greptile-apps

greptile-apps Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[High impact] The PR appears safe to merge; no new blocking issue was established.

Summary

Adds constraint-aware planner comparisons, native Panda hand support and grouped dual-arm planning.

  • Motion benchmarks can compare planners on partial and mixed goals.
  • Dual-arm tasks can plan ready arm requests together and keep their results separate.
  • Grasp generation uses the mounted hand's mesh and runtime TCP frame.
  • Placement and replay runs can retain evidence about their inputs and outcomes.
  • Benchmark runs can compare sequential and packed calls on the same arm requests.
  • Retimed paths keep useful precision across planning and execution boundaries.
  • Benchmark suites and existing callers use the new arm and geometry contracts.

No new actionable issues were established. This review used code inspection; no runtime tests were run.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Frozen task inputs] --> B[Independent named-arm requests]
  B --> C{Selected planner}
  C --> D[Sequential classical calls]
  C --> E[Packed neural policy call]
  D --> F[Per-arm results]
  E --> F
  F --> G[Task-owned execution stages]
  G --> H[Separate geometry, timing and physical reports]
Loading

Reviews (6) · Last reviewed commit: "Merge main into yc/nmg-benchmark-native-..." · Reviewed by Greptile

…dencies

Compare the TOPPRA failed trajectory with a start state promoted to the result dtype. Skip the RigidFormer recovery regression when its optional model dependencies are unavailable, consistent with neighboring tests.

Validation: 40 CPU tests passed; original TOPPRA CUDA regression passed; RigidFormer regression skipped without roma. Black 26.10.1, API docs coverage (3293/3293), and git diff --check passed. Agent context remains accurate because this change only corrects test expectations and optional dependency guards.
Resolve the RigidFormer demo visualization conflict through its CLI configuration, preserving the disabled default and optional Viser support without duplicate keyword arguments.

Validation: 42 focused visualization/kinematics tests passed, 5 skipped; demo --help and compilation passed; Black 26.10.1, API docs coverage (3293/3293), and git diff --cached --check passed. Existing context remains accurate; no further context changes are required for the conflict resolution.
@yangchen73
yangchen73 merged commit 8d30e2f into main Oct 30, 2026
5 of 8 checks passed
@yangchen73
yangchen73 deleted the yc/nmg-benchmark-native-hand branch October 30, 2026 09:56
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