Skip to content

[FEATURE] Add noise options for tactile sensors: hysteresis, dead taxels, probe gain#2813

Open
Milotrince wants to merge 5 commits into
Genesis-Embodied-AI:mainfrom
Milotrince:tactile_noise
Open

[FEATURE] Add noise options for tactile sensors: hysteresis, dead taxels, probe gain#2813
Milotrince wants to merge 5 commits into
Genesis-Embodied-AI:mainfrom
Milotrince:tactile_noise

Conversation

@Milotrince
Copy link
Copy Markdown
Contributor

@Milotrince Milotrince commented May 21, 2026

Description

  • Schmitt-trigger hysteresis on ContactProbe with separate contact_threshold / release_threshold
  • Viscoelastic hysteresis on ContactDepthProbe, KinematicTaxel, ProximityTaxel, ElastomerTaxel
  • Spatial crosstalk on KinematicTaxel, share FFT code with ElastomerTaxel
  • Per-taxel probe_gain applied to measured contact depth, with optional resample-on-reset (probe_gain_resample_range).
  • Dead taxels — dead_taxel_probability + dead_taxel_value_range, resampled per scene.reset()
  • Allow 0 radius probes to be used like padding, so that we can use FFT acceleration for non perfect grid patterns

Related Issue

Motivation and Context

  • More realistic noise parameters to match real tactile sensors

How Has This Been / Can This Be Tested?

Added tests to test_sensors.py

Screenshots (if appropriate):

noisy.mp4

Checklist:

  • I read the CONTRIBUTING document.
  • I followed the Submitting Code Changes section of CONTRIBUTING document.
  • I tagged the title correctly (including BUG FIX/FEATURE/MISC/BREAKING)
  • I updated the documentation accordingly or no change is needed.
  • I tested my changes and added instructions on how to test it for reviewers.
  • I have added tests to cover my changes.
  • All new and existing tests passed.

@Milotrince Milotrince marked this pull request as ready for review May 21, 2026 05:38
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f6ff7d64a3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +238 to +239
uniforms = torch.rand((n_envs, shared_metadata.total_n_probes), device=gs.device, dtype=gs.tc_float)
shared_metadata.dead_taxel_values[envs_idx] = uniforms * (high - low) + low
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Sample dead-taxel replacement per output channel

The dead-taxel replacement values are sampled with shape (n_envs, total_n_probes) and later broadcast to cache columns via cache_col_probe_idx, so multi-channel taxels (e.g., force/torque xyz) get the same scalar in every channel for a dead probe. This makes dead outputs artificially correlated and does not match the documented per-channel dead-value behavior, so dead KinematicTaxel/ProximityTaxel readings lose channel independence after each reset.

Useful? React with 👍 / 👎.

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