To use a NoisyGroupedRayCasterCameraCfg, you must define the sensor's attachment point (prim_path), the target meshes (mesh_prim_paths), the camera's physical properties (offset, rotation, pattern), and the noise pipeline.
Note that when targeting robot links, you should use NoisyGroupedRayCasterCameraCfg.RaycastTargetCfg(prim_expr=...) within the mesh_prim_paths list to ensure the raycaster tracks the moving robot parts.
from instinctlab.sensors import GroupedRayCasterCfg, NoisedGroupedRayCasterCameraCfg
# Configure noisy camera (Example: RealSense D435i)
noisy_camera = NoisyGroupedRayCasterCameraCfg(
prim_path="{ENV_REGEX_NS}/Robot/torso_link",
mesh_prim_paths=[
"/World/ground",
# Use RaycastTargetCfg for moving robot links
# NoisyGroupedRayCasterCameraCfg.RaycastTargetCfg(prim_expr="/World/envs/env_.*/Robot/torso_link/visuals")
],
offset=NoisyGroupedRayCasterCameraCfg.OffsetCfg(
pos=(0.04, 0.015, 0.46),
rot=(0.707, 0.0, 0.707, 0.0),
convention="world",
),
ray_alignment="yaw",
pattern_cfg=patterns.PinholeCameraPatternCfg(
focal_length=1.0,
horizontal_aperture=1.5,
vertical_aperture=1.0,
height=270,
width=480,
),
data_types=["distance_to_image_plane"],
noise_pipeline={
"depth_artifact_noise": DepthArtifactNoiseCfg(),
"stereo_noise": RangeBasedGaussianNoiseCfg(
max_value=1.2,
min_value=0.12,
noise_std=0.02,
),
"normalize": DepthNormalizationCfg(
depth_range=(0.0, 1.5),
normalize=True,
),
},
update_period=1 / 60,
depth_clipping_behavior="max",
min_distance=0.05,
max_distance=2.0,
)