Skip to content

Adds visual-based tactile sensor with shape sensing example#3420

Merged
Mayankm96 merged 65 commits intoisaac-sim:mainfrom
JuanaDd:tacsl_demo
Jan 8, 2026
Merged

Adds visual-based tactile sensor with shape sensing example#3420
Mayankm96 merged 65 commits intoisaac-sim:mainfrom
JuanaDd:tacsl_demo

Conversation

@JuanaDd
Copy link
Contributor

@JuanaDd JuanaDd commented Sep 10, 2025

Description

This is an implementation of TacSL integrated with Isaac Lab, which demonstrates how to properly configure and use tactile sensors to obtain realistic sensor outputs including tactile RGB images, force fields, and other relevant tactile measurements.

Fixes # (issue)

Type of change

  • New feature (non-breaking change which adds functionality)

Screenshots

The screenshots of added documentation and simulation outputs.
image
image
image

Checklist

  • I have run the pre-commit checks with ./isaaclab.sh --format
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • I have updated the changelog and the corresponding version in the extension's config/extension.toml file
  • I have added my name to the CONTRIBUTORS.md or my name already exists there

clean up license and configs; use full import path;

add doc for visuo_tactile_sensor

References
~~~~~~~~~~

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@iakinola23 Could you help view this documentation here? Thanks!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi @iakinola23 updated the documentation with your edits.

Copy link
Contributor Author

@JuanaDd JuanaDd Sep 10, 2025

Choose a reason for hiding this comment

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

@kellyguo11 Hi Kelly, I will upload the npz binaries, and the USD files to nucleus once the licensing concerns are resolved. Thanks!

@Mayankm96 Mayankm96 changed the title visual-based tactile sensor impl. and shape sensing example Adds visual-based tactile sensor with shape sensing example Sep 10, 2025
@Mayankm96 Mayankm96 added the enhancement New feature or request label Sep 10, 2025
@github-actions github-actions bot added documentation Improvements or additions to documentation isaac-lab Related to Isaac Lab team labels Sep 11, 2025
Copy link
Contributor

@kellyguo11 kellyguo11 left a comment

Choose a reason for hiding this comment

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

just a few high-level comments, haven't gone through the code in detail yet

taxim_gelsight = gelsightRender("gelsight_r15")
import ipdb

ipdb.set_trace()
Copy link
Contributor

Choose a reason for hiding this comment

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

why is there a breakpoint here?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

deleted in the newest commit.

self._camera_sensor = TiledCamera(self.cfg.camera_cfg)

# Initialize camera if not already done
# TODO: Juana: this is a hack to initialize the camera sensor. Should camera_sensor be managed by TacSL sensor or InteractiveScene?
Copy link
Contributor

Choose a reason for hiding this comment

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

maybe we can do something similar as the Raycaster camera?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Hi Kelly, I checked the RayCasterCamera implementation, and it differs slightly from the tacsl sensor logic. The tacsl_sensor includes a camera sensor that can be enabled or disabled via the cfg, while RayCasterCamera only uses CameraData without having a camera or other sensor as a member. I’ve kept the current implementation and cleaned up the comments. Please let me know if you have any further concerns or suggestions.

Copy link
Contributor

Choose a reason for hiding this comment

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

images should be .jpg

Copy link
Contributor Author

Choose a reason for hiding this comment

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

all changed to jpg format and documentation is updated accordingly.

.. code-block:: bash

conda activate env_isaaclab
pip install opencv-python==4.11.0 trimesh==4.5.1 imageio==2.37.0
Copy link
Contributor

Choose a reason for hiding this comment

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

do we need to add these to setup.py?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added opencv-python to setup.py; trimesh is already included, and imageio's dependency is not required in the newest commit.

license agreement from NVIDIA CORPORATION is strictly prohibited.

----------------
Tensorized implementation of RGB rendering of gelsight-style visuo-tactile sensors
Copy link
Contributor

Choose a reason for hiding this comment

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

can you also add any licenses required for gelsight under docs/licenses?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Updated the license header to be consistent with other files.

@kellyguo11
Copy link
Contributor

please also make sure to run ./isaaclab.sh -f for the linter checks

return dzdx, dzdy


def generate_normals(height_map):
Copy link
Contributor

Choose a reason for hiding this comment

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

generate_normals not needed and deprecated. only the tensorized version is used.

self.background_tensor = torch.tensor(self.background, device=self.device)
print("Gelsight initialization done!")

def render(self, heightMap):
Copy link
Contributor

Choose a reason for hiding this comment

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

Delete render as it is not used. Only the tensorized version (render_tensorized ) is used.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

deleted render , generate_normals, and compute_image_gradient , padding as well.

@zxhuang97
Copy link

zxhuang97 commented Sep 30, 2025

Thank you for making TacSL available on IsaacLab! I have three quick questions:

  1. Have you evaluated the physical plausibility of the GelSight finger? For example, would it allow stable grasps of objects like pegs or bolts, similar to what TacSL demonstrated in Isaac Gym?
  2. I noticed that only the USD for gelsight_r15 is currently available. Do you plan to migrate gelsight_mini as well? Alternatively, could you share guidance on converting the URDF to USD while preserving realistic physics?
  3. Is there a way to change the resolution of the tactile image? Currently it's hard-coded in configuration to be 320 x 240

Thanks!

@Mayankm96 Mayankm96 moved this to In review in Isaac Lab Oct 10, 2025
@kellyguo11
Copy link
Contributor

@ooctipus @Mayankm96 could you please help do a review of this one?

@JuanaDd
Copy link
Contributor Author

JuanaDd commented Oct 18, 2025

@zxhuang97 Hi, thanks for your questions and for checking out TacSL on IsaacLab.

  1. Yes. A full task environment (like object grasping) will be supported later after this PR. This PR mainly serves as a reference for how to implement a custom visual-based sensor in the IsaacLab framework.

  2. The GelSight Mini will likely be supported later, as long as there aren’t any license issues. In the meantime, you can try using the URDF importer tool in IsaacSim or the convert_urdf.py script in IsaacLab to convert it yourself. You can tweak the physical properties — such as compliance_stiffness and compliant_damping — in the tacsl sensor config if needed.

  3. The tactile image resolution can be modified through the camera config. Right now, it’s using the values defined in the camera prim included in the asset.

Hope this helps!

JuanaDd and others added 12 commits December 24, 2025 18:34
…der.py

Co-authored-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
…der.py

Co-authored-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
…sor.py

Co-authored-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
…sor.py

Co-authored-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
…sor_cfg.py

Co-authored-by: James Tigue <166445701+jtigue-bdai@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
…g.py

Co-authored-by: Mayank Mittal <12863862+Mayankm96@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
@YuHoChau
Copy link

Thank you very much for your contribution! @JuanaDd
Just a quick question: for the Signed Distance Filed (SDF) computation, the TacSL version in IsaacGym uses the built-in function gym.acquire_sdf_view_tensor which supports GPU parallelization. I was wondering which method you used in this Lab version implementation, for example NVIDIA Warp? Thank you.

iakinola23 and others added 4 commits December 29, 2025 19:24
Signed-off-by: iakinola23 <147214266+iakinola23@users.noreply.github.com>
Signed-off-by: Juana <yvetted@nvidia.com>
@JuanaDd
Copy link
Contributor Author

JuanaDd commented Dec 30, 2025

Thank you very much for your contribution! @JuanaDd Just a quick question: for the Signed Distance Filed (SDF) computation, the TacSL version in IsaacGym uses the built-in function gym.acquire_sdf_view_tensor which supports GPU parallelization. I was wondering which method you used in this Lab version implementation, for example NVIDIA Warp? Thank you.

@YuHoChau Hi, thanks for asking. This implementation uses the PhysX tensor API create_sdf_shape_view. You can see how it's used in the source code here.

@YuHoChau
Copy link

YuHoChau commented Jan 4, 2026

Thank you very much for your contribution! @JuanaDd Just a quick question: for the Signed Distance Filed (SDF) computation, the TacSL version in IsaacGym uses the built-in function gym.acquire_sdf_view_tensor which supports GPU parallelization. I was wondering which method you used in this Lab version implementation, for example NVIDIA Warp? Thank you.

@YuHoChau Hi, thanks for asking. This implementation uses the PhysX tensor API create_sdf_shape_view. You can see how it's used in the source code here.

Thank you for your reply!

Copy link
Contributor

@Mayankm96 Mayankm96 left a comment

Choose a reason for hiding this comment

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

Merging this for now. I haven't tested it for functionality but the overall MR looks good. Thank you for the contribution.

@Mayankm96 Mayankm96 merged commit bd7cd1b into isaac-sim:main Jan 8, 2026
7 checks passed
@github-project-automation github-project-automation bot moved this from In review to Done in Isaac Lab Jan 8, 2026
Edify0991 pushed a commit to Edify0991/IsaacLab that referenced this pull request Jan 14, 2026
…m#3420)

# Description

This is an implementation of TacSL integrated with Isaac Lab, which
demonstrates how to properly configure and use tactile sensors to obtain
realistic sensor outputs including tactile RGB images, force fields, and
other relevant tactile measurements.

## Type of change

- New feature (non-breaking change which adds functionality)

## Screenshots

The screenshots of added documentation and simulation outputs.
<img width="1121" height="878" alt="image"
src="https://github.com/user-attachments/assets/5772a87b-474c-4a6c-87f5-b65aab102259"
/>
<img width="1311" height="669" alt="image"
src="https://github.com/user-attachments/assets/8c2d4e66-2c12-4724-b6fd-8180f2fe9960"
/>
<img width="765" height="281" alt="image"
src="https://github.com/user-attachments/assets/ad0e0899-7e3c-429f-9848-700d9310ae1b"
/>

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

---------

Signed-off-by: Juana <yvetted@nvidia.com>
Co-authored-by: iakinola23 <147214266+iakinola23@users.noreply.github.com>
nitesh-subedi pushed a commit to nitesh-subedi/IsaacLab that referenced this pull request Feb 5, 2026
…m#3420)

# Description

This is an implementation of TacSL integrated with Isaac Lab, which
demonstrates how to properly configure and use tactile sensors to obtain
realistic sensor outputs including tactile RGB images, force fields, and
other relevant tactile measurements.

## Type of change

- New feature (non-breaking change which adds functionality)

## Screenshots

The screenshots of added documentation and simulation outputs.
<img width="1121" height="878" alt="image"
src="https://github.com/user-attachments/assets/5772a87b-474c-4a6c-87f5-b65aab102259"
/>
<img width="1311" height="669" alt="image"
src="https://github.com/user-attachments/assets/8c2d4e66-2c12-4724-b6fd-8180f2fe9960"
/>
<img width="765" height="281" alt="image"
src="https://github.com/user-attachments/assets/ad0e0899-7e3c-429f-9848-700d9310ae1b"
/>

## Checklist

- [x] I have run the [`pre-commit` checks](https://pre-commit.com/) with
`./isaaclab.sh --format`
- [x] I have made corresponding changes to the documentation
- [x] My changes generate no new warnings
- [x] I have added tests that prove my fix is effective or that my
feature works
- [x] I have updated the changelog and the corresponding version in the
extension's `config/extension.toml` file
- [x] I have added my name to the `CONTRIBUTORS.md` or my name already
exists there

---------

Signed-off-by: Juana <yvetted@nvidia.com>
Co-authored-by: iakinola23 <147214266+iakinola23@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

asset New asset feature or request documentation Improvements or additions to documentation enhancement New feature or request isaac-lab Related to Isaac Lab team

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

7 participants