22
22
23
23
24
24
def camera_image (
25
- env : ManagerBasedEnv , sensor_cfg : SceneEntityCfg , data_type : str = "distance_to_image_plane" , flatten : bool = False
25
+ env : ManagerBasedEnv ,
26
+ sensor_cfg : SceneEntityCfg ,
27
+ data_type : str = "distance_to_image_plane" ,
28
+ flatten : bool = False ,
29
+ nan_fill_value : float | None = None ,
26
30
) -> torch .Tensor :
27
31
"""Camera image Observations.
28
32
@@ -34,6 +38,7 @@ def camera_image(
34
38
sensor_cfg: The name of the sensor.
35
39
data_type: The type of data to extract from the sensor. Default is "distance_to_image_plane".
36
40
flatten: If True, the image will be flattened to 1D. Default is False.
41
+ nan_fill_value: The value to fill nan/inf values with. If None, the maximum distance of the sensor will be used.
37
42
38
43
Returns:
39
44
The image data."""
@@ -43,8 +48,9 @@ def camera_image(
43
48
img = sensor .data .output [data_type ].clone ()
44
49
45
50
if data_type == "distance_to_image_plane" :
46
- img [torch .isnan (img )] = sensor .cfg .max_distance
47
- img [torch .isinf (img )] = sensor .cfg .max_distance
51
+ if nan_fill_value is None :
52
+ nan_fill_value = sensor .cfg .max_distance
53
+ img = torch .nan_to_num (img , nan = nan_fill_value , posinf = nan_fill_value , neginf = 0.0 )
48
54
49
55
# if type torch.uint8, convert to float and scale between 0 and 1
50
56
if img .dtype == torch .uint8 :
0 commit comments