Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions source/isaaclab/docs/CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,13 @@ Added
joints with zero stiffness and damping receive a minimal stiffness so that
backends like Newton recognise the drive as active.

Fixed
^^^^^

* Fixed ``AttributeError`` in :meth:`Camera.__del__` when the constructor raised
before ``_renderer`` was assigned. Data attributes are now initialized early in
``__init__`` so cleanup is always safe.


4.6.0 (2026-04-13)
~~~~~~~~~~~~~~~~~~
Expand Down
16 changes: 8 additions & 8 deletions source/isaaclab/isaaclab/sensors/camera/camera.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,14 @@ def __init__(self, cfg: CameraCfg):
# initialize base class
super().__init__(cfg)

# UsdGeom Camera prim for the sensor
self._sensor_prims: list[UsdGeom.Camera] = list()
# Create empty variables for storing output data
self._data = CameraData()
# Renderer and render data — assigned in _initialize_impl.
self._renderer: BaseRenderer | None = None
self._render_data = None

# toggle rendering of rtx sensors as True
# this flag is read by SimulationContext to determine if rtx sensors should be rendered
settings = get_settings_manager()
Expand Down Expand Up @@ -152,14 +160,6 @@ def __init__(self, cfg: CameraCfg):
if len(matching_prims) == 0:
raise RuntimeError(f"Could not find prim with path {check_path}.")

# UsdGeom Camera prim for the sensor
self._sensor_prims: list[UsdGeom.Camera] = list()
# Create empty variables for storing output data
self._data = CameraData()
# Renderer and render data — assigned in _initialize_impl.
self._renderer: BaseRenderer | None = None
self._render_data = None

if not has_kit():
return
# HACK: We need to disable instancing for semantic_segmentation and instance_segmentation_fast to work
Expand Down
2 changes: 1 addition & 1 deletion source/isaaclab_contrib/config/extension.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
# Semantic Versioning is used: https://semver.org/
version = "0.3.0"
version = "0.3.1"

# Description
title = "Isaac Lab External Contributions"
Expand Down
11 changes: 11 additions & 0 deletions source/isaaclab_contrib/docs/CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
Changelog
---------

0.3.1 (2026-04-14)
~~~~~~~~~~~~~~~~~~

Changed
^^^^^^^

* Replaced deprecated :class:`~isaaclab.sensors.camera.TiledCamera` and
:class:`~isaaclab.sensors.camera.TiledCameraCfg` with :class:`~isaaclab.sensors.camera.Camera`
and :class:`~isaaclab.sensors.camera.CameraCfg` in the visuotactile sensor.


0.3.0 (2026-02-13)
~~~~~~~~~~~~~~~~~~

Expand Down
4 changes: 2 additions & 2 deletions source/isaaclab_contrib/docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -256,7 +256,7 @@ The TacSL tactile sensor system includes:

```python
import isaaclab.sim as sim_utils
from isaaclab.sensors import TiledCameraCfg
from isaaclab.sensors import CameraCfg

from isaaclab_contrib.sensors.tacsl_sensor import VisuoTactileSensorCfg

Expand Down Expand Up @@ -288,7 +288,7 @@ tactile_sensor_cfg = VisuoTactileSensorCfg(
tangential_stiffness=0.1, # Tangential stiffness

# Camera configuration (must match render_cfg dimensions)
camera_cfg=TiledCameraCfg(
camera_cfg=CameraCfg(
prim_path="{ENV_REGEX_NS}/Robot/elastomer_tip/cam",
height=GELSIGHT_R15_CFG.image_height,
width=GELSIGHT_R15_CFG.image_width,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import isaaclab.sim as sim_utils
import isaaclab.utils.math as math_utils
from isaaclab.markers import VisualizationMarkers
from isaaclab.sensors.camera import Camera, TiledCamera
from isaaclab.sensors.camera import Camera
from isaaclab.sensors.sensor_base import SensorBase
from isaaclab.sim import SimulationContext
from isaaclab.utils.math import quat_apply, quat_inv
Expand Down Expand Up @@ -66,7 +66,7 @@ class VisuoTactileSensor(SensorBase):
The following requirements must be satisfied for proper sensor operation:

**Camera Tactile Imaging**
If ``enable_camera_tactile=True``, a valid ``camera_cfg`` (TiledCameraCfg) must be
If ``enable_camera_tactile=True``, a valid ``camera_cfg`` (CameraCfg) must be
provided with appropriate camera parameters.

**Force Field Computation**
Expand Down Expand Up @@ -98,7 +98,7 @@ def __init__(self, cfg: VisuoTactileSensorCfg):
self._data: VisuoTactileSensorData = VisuoTactileSensorData()

# Camera-based tactile sensing
self._camera_sensor: Camera | TiledCamera | None = None
self._camera_sensor: Camera | None = None
self._nominal_tactile: dict | None = None

# Force field tactile sensing
Expand Down Expand Up @@ -262,7 +262,7 @@ def _initialize_camera_tactile(self):
self._tactile_rgb_render = GelsightRender(self.cfg.render_cfg, device=self.device)

# Create camera sensor
self._camera_sensor = TiledCamera(self.cfg.camera_cfg)
self._camera_sensor = Camera(self.cfg.camera_cfg)

# Initialize camera
if not self._camera_sensor.is_initialized:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

from isaaclab.markers import VisualizationMarkersCfg
from isaaclab.markers.config import VISUO_TACTILE_SENSOR_MARKER_CFG
from isaaclab.sensors import SensorBaseCfg, TiledCameraCfg
from isaaclab.sensors import CameraCfg, SensorBaseCfg
from isaaclab.utils import configclass
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR

Expand Down Expand Up @@ -171,7 +171,7 @@ class VisuoTactileSensorCfg(SensorBaseCfg):
tangential_stiffness: float = 0.1
"""Tangential stiffness for shear forces."""

camera_cfg: TiledCameraCfg | None = None
camera_cfg: CameraCfg | None = None
"""Camera configuration for tactile RGB/depth sensing.

If None, camera-based sensing will be disabled even if :attr:`enable_camera_tactile` is True.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

import isaaclab.sim as sim_utils
from isaaclab.assets import Articulation, ArticulationCfg, RigidObject, RigidObjectCfg
from isaaclab.sensors.camera import TiledCameraCfg
from isaaclab.sensors.camera import CameraCfg
from isaaclab.terrains.trimesh.utils import make_plane
from isaaclab.terrains.utils import create_prim_from_mesh
from isaaclab.utils.assets import ISAACLAB_NUCLEUS_DIR
Expand Down Expand Up @@ -69,7 +69,7 @@ def get_sensor_cfg_by_type(sensor_type: str) -> VisuoTactileSensorCfg:
return VisuoTactileSensorCfg(
prim_path="/World/Robot/elastomer/tactile_cam",
enable_force_field=False,
camera_cfg=TiledCameraCfg(
camera_cfg=CameraCfg(
height=320,
width=240,
prim_path="/World/Robot/elastomer_tip/cam",
Expand All @@ -89,7 +89,7 @@ def get_sensor_cfg_by_type(sensor_type: str) -> VisuoTactileSensorCfg:
debug_vis=False,
enable_camera_tactile=True,
enable_force_field=True,
camera_cfg=TiledCameraCfg(
camera_cfg=CameraCfg(
height=320,
width=240,
prim_path="/World/Robot/elastomer_tip/cam",
Expand Down
Loading