Skip to content

Project completed hydroelastic contacts onto tactile pads - #1207

Open
han-xudong wants to merge 1 commit into
codex/sensors-4g-shearfrom
codex/sensors-hydroelastic-pad
Open

han-xudong wants to merge 1 commit into
codex/sensors-4g-shearfrom
codex/sensors-hydroelastic-pad

Conversation

@han-xudong

@han-xudong han-xudong commented Nov 15, 2026 •

Copy link
Copy Markdown
Collaborator

Description

Adds opt-in TactileIndentationCfg.surface. It projects the final external Newton collision pass of a completed step into the existing tactile probes. The grid reports face count and minimum signed, margin-relative separation. Per-arena fields expose collision generation, substep and capacity completeness.

The sensor resolves physical pad and opposing actors through SensorContext. It uses the collision-input pose for a moving pad, topology-scoped shape IDs, and owned SDK tensors. Regular flat and curved grids bin centroids in pad XY and check normal clearance. Explicit layouts use the nearest calibrated point inside the configured distance. Existing RGB, geometric depth and elastic shear keep their current inputs.

Refs #1174. Requires a DexSim SDK with the completed surface bindings from DexSim !1614 and an external collision pipeline with output_contact_surface=True. The option is disabled by default. A Scene with a missing or truncated snapshot reports an incomplete surface.

Stack

Type of change

  • New feature

Review focus

Check the collision-input frame, per-arena shape pairing, model rebuild and output invalidation. A completed empty pass has surface_complete=True. A raw count exceeding capacity marks all arenas incomplete while retaining available bins.

Validation

  • 97 passed in the combined CPU/CUDA selection, with the default slow packaging case deselected. Includes static and kinematic pad scenes, CUDA Graph replay with three collision passes, independent arena motion and topology rebinding.
  • CPU and CUDA grid fixtures verify pair ordering, arena isolation and overflow. Upstream CUDA tests verify cross-stream copy ownership and held faces and body poses across later publications. The candidate-based integration uses current !1614 Python sources with 0.6.0rc2 native libraries and NoRender. The installed release does not yet expose the new API, so native tests require the candidate.

Full-step performance

RTX 5070, DexSim candidate on rc2 native libraries, Warp 1.17, Newton MuJoCo Warp, NoRender, single substep, CUDA Graph disabled. Every variant runs RGB and shear on 16 × 16 probes. The benchmark times pose and velocity writes, physics, sensors and GPU completion. Tables average the two run-level percentiles from forward and reverse order, with 25 warmup and 100 timed steps per variant. Depth, hit, shape IDs and RGB match across variants.

Environments Geometric p50/p95 (ms) Export only p50/p95 (ms) With pad projection p50/p95 (ms) Projection peak Torch transient (MiB)
1 7.48 / 8.77 6.97 / 8.24 7.31 / 8.46 0.75
8 6.82 / 8.21 6.82 / 7.74 7.02 / 8.14 6.00
32 6.71 / 7.76 6.80 / 7.78 7.16 / 8.30 24.01

The 32-arena case exported 99,424 faces in a 524,288-face buffer and binned 90,464 centroids. Torch transient memory includes the independent snapshot copy. Run python -m scripts.benchmark.sensors.hydroelastic_step --envs 1 8 32 --warmup 25 --repeats 100 on the candidate SDK.

Checklist

  • Code formatting checked.
  • Affected project context updated.
  • Public API documentation coverage checked.
  • Focused behavioral coverage verified.

@han-xudong
han-xudong added this pull request to stack #1186 November 15, 2026 10:30
@han-xudong han-xudong added feature New user-facing capabilities. sensor Sensor models, attachment, lifecycle, extension interfaces and observation contracts. labels Nov 15, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature New user-facing capabilities. sensor Sensor models, attachment, lifecycle, extension interfaces and observation contracts.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant