Skip to content

Commit

Permalink
Send only observation buffers that are in use.
Browse files Browse the repository at this point in the history
  • Loading branch information
Gamenot committed Jan 16, 2024
1 parent d788ba5 commit 2a8aa10
Show file tree
Hide file tree
Showing 6 changed files with 444 additions and 348 deletions.
13 changes: 8 additions & 5 deletions examples/occlusion/mask.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
CustomRenderConstantDependency,
DoneCriteria,
DrivableAreaGridMap,
Lidar,
NeighborhoodVehicles,
OcclusionMap,
RoadWaypoints,
Expand All @@ -44,7 +45,7 @@
from smarts.core.colors import Colors
from smarts.core.observations import Observation, VehicleObservation
from smarts.core.road_map import Waypoint, interpolate_waypoints
from smarts.core.shader_buffer import BufferName, CameraSensorName
from smarts.core.shader_buffer import BufferID, CameraSensorName
from smarts.core.utils.core_math import slope, squared_dist
from smarts.core.utils.observations import points_to_pixels
from smarts.env.utils.observation_conversion import ObservationOptions
Expand Down Expand Up @@ -790,6 +791,8 @@ def occlusion_main(steps):
resolution=resolution,
surface_noise=True,
),
signals=True,
lidar_point_cloud=Lidar(),
lane_positions=True,
accelerometer=Accelerometer(),
road_waypoints=RoadWaypoints(horizon=50),
Expand All @@ -811,12 +814,12 @@ def occlusion_main(steps):
variable_name="iChannel1",
),
CustomRenderBufferDependency(
buffer_dependency_name=BufferName.ELAPSED_SIM_TIME,
variable_name=BufferName.ELAPSED_SIM_TIME.value,
buffer_dependency_name=BufferID.ELAPSED_SIM_TIME,
variable_name=BufferID.ELAPSED_SIM_TIME.value,
),
CustomRenderBufferDependency(
buffer_dependency_name=BufferName.NEIGHBORHOOD_VEHICLE_STATES_POSITION,
variable_name=BufferName.NEIGHBORHOOD_VEHICLE_STATES_POSITION.value,
buffer_dependency_name=BufferID.NEIGHBORHOOD_VEHICLE_STATES_POSITION,
variable_name=BufferID.NEIGHBORHOOD_VEHICLE_STATES_POSITION.value,
),
CustomRenderConstantDependency(
value=(0.1, 0.5, 0.1),
Expand Down
8 changes: 4 additions & 4 deletions smarts/core/agent_interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
from smarts.core.controllers.action_space_type import ActionSpaceType
from smarts.core.lidar_sensor_params import BasicLidar
from smarts.core.lidar_sensor_params import SensorParams as LidarSensorParams
from smarts.core.shader_buffer import BufferName, CameraSensorName
from smarts.core.shader_buffer import BufferID, CameraSensorID
from smarts.core.utils import iteration_tools


Expand Down Expand Up @@ -134,7 +134,7 @@ def __post_init__(self):
class CustomRenderBufferDependency(RenderDependencyBase):
"""Base for referencing an observation buffer (other than a camera)."""

buffer_dependency_name: Union[str, BufferName]
buffer_dependency_name: Union[str, BufferID]
"""The identification of buffer to reference."""
variable_name: str
"""The variable name inside the shader."""
Expand All @@ -150,7 +150,7 @@ def name(self) -> str:
class CustomRenderCameraDependency(RenderDependencyBase):
"""Provides a uniform texture access to an existing camera."""

camera_dependency_name: Union[str, CameraSensorName]
camera_dependency_name: Union[str, CameraSensorID]
"""The name of the camera (type) to target."""
variable_name: Literal["iChannel0", "iChannel1", "iChannel2", "iChannel3"]
"""The name of the camera texture variable."""
Expand All @@ -168,7 +168,7 @@ def is_self_targetted(self):

def __post_init__(self):
assert self.camera_dependency_name
if isinstance(self.camera_dependency_name, CameraSensorName):
if isinstance(self.camera_dependency_name, CameraSensorID):
self.camera_dependency_name = self.camera_dependency_name.value


Expand Down
12 changes: 5 additions & 7 deletions smarts/core/renderer_base.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
from .coordinates import Pose

if TYPE_CHECKING:
from smarts.core.shader_buffer import BufferName
from smarts.core.shader_buffer import BufferID


class DEBUG_MODE(IntEnum):
Expand Down Expand Up @@ -131,14 +131,12 @@ def __post_init__(self):
class ShaderStepBufferDependency(ShaderStepDependencyBase):
"""The base for shader dependencies."""

buffer_name: BufferName
script_variable_name: str
buffer_id: BufferID
script_uniform_name: str

def __post_init__(self):
assert (
self.buffer_name
), f"`{self.script_variable_name=}` cannot be None or empty."
assert self.script_variable_name
assert self.buffer_id, f"`{self.script_uniform_name=}` cannot be None or empty."
assert self.script_uniform_name


@dataclass(frozen=True)
Expand Down
26 changes: 13 additions & 13 deletions smarts/core/sensor.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
ShaderStepVariableDependency,
)
from smarts.core.road_map import RoadMap, Waypoint
from smarts.core.shader_buffer import BufferName, CameraSensorName
from smarts.core.shader_buffer import BufferID, CameraSensorID
from smarts.core.signals import SignalState
from smarts.core.simulation_frame import SimulationFrame
from smarts.core.utils.core_math import squared_dist
Expand Down Expand Up @@ -211,7 +211,7 @@ def __init__(
super().__init__(
vehicle_state,
renderer,
CameraSensorName.DRIVABLE_AREA_GRID_MAP.value,
CameraSensorID.DRIVABLE_AREA_GRID_MAP.value,
RenderMasks.DRIVABLE_AREA_HIDE,
width,
height,
Expand Down Expand Up @@ -254,7 +254,7 @@ def __init__(
super().__init__(
vehicle_state,
renderer,
CameraSensorName.OCCUPANCY_GRID_MAP.value,
CameraSensorID.OCCUPANCY_GRID_MAP.value,
RenderMasks.OCCUPANCY_HIDE,
width,
height,
Expand Down Expand Up @@ -296,7 +296,7 @@ def __init__(
super().__init__(
vehicle_state,
renderer,
CameraSensorName.TOP_DOWN_RGB.value,
CameraSensorID.TOP_DOWN_RGB.value,
RenderMasks.RGB_HIDE,
width,
height,
Expand Down Expand Up @@ -342,7 +342,7 @@ def __init__(
super().__init__(
vehicle_state,
renderer,
CameraSensorName.OCCLUSION.value,
CameraSensorID.OCCLUSION.value,
RenderMasks.NONE,
width,
height,
Expand All @@ -367,7 +367,7 @@ def __init__(
),
ShaderStepCameraDependency(
_gen_sensor_name(
CameraSensorName.DRIVABLE_AREA_GRID_MAP.value,
CameraSensorID.DRIVABLE_AREA_GRID_MAP.value,
vehicle_state,
),
"iChannel0",
Expand All @@ -383,7 +383,7 @@ def __init__(
# feed simplex and ogm to composite
with pkg_resources.path(glsl, "occlusion.frag") as composite_shader_path:
composite_camera_name = _gen_sensor_name(
CameraSensorName.OCCLUSION.value, vehicle_state
CameraSensorID.OCCLUSION.value, vehicle_state
)
renderer.build_shader_step(
name=composite_camera_name,
Expand Down Expand Up @@ -466,9 +466,9 @@ def __init__(

dependencies = []
named_camera_sensors = (
(CameraSensorName.OCCUPANCY_GRID_MAP, ogm_sensor),
(CameraSensorName.TOP_DOWN_RGB, top_down_rgb_sensor),
(CameraSensorName.DRIVABLE_AREA_GRID_MAP, drivable_area_grid_map_sensor),
(CameraSensorID.OCCUPANCY_GRID_MAP, ogm_sensor),
(CameraSensorID.TOP_DOWN_RGB, top_down_rgb_sensor),
(CameraSensorID.DRIVABLE_AREA_GRID_MAP, drivable_area_grid_map_sensor),
)

def has_required(dependency_name, required_name, sensor) -> bool:
Expand Down Expand Up @@ -502,13 +502,13 @@ def has_required(dependency_name, required_name, sensor) -> bool:
)
elif isinstance(d, CustomRenderBufferDependency):
if isinstance(d.buffer_dependency_name, str):
buffer_name = BufferName(d.buffer_dependency_name)
buffer_name = BufferID(d.buffer_dependency_name)
else:
buffer_name = d.buffer_dependency_name

dependency = ShaderStepBufferDependency(
buffer_name=buffer_name,
script_variable_name=d.variable_name,
buffer_id=buffer_name,
script_uniform_name=d.variable_name,
)
else:
raise TypeError(
Expand Down
6 changes: 3 additions & 3 deletions smarts/core/shader_buffer.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
from enum import Enum


class CameraSensorName(Enum):
class CameraSensorID(Enum):
"""Describes default names for camera configuration."""

DRIVABLE_AREA_GRID_MAP = "dagm"
Expand All @@ -31,7 +31,7 @@ class CameraSensorName(Enum):
OCCLUSION = "occlusion"


class BufferName(Enum):
class BufferID(Enum):
"""The names of the different buffers available for camera rendering."""

DELTA_TIME = "dt"
Expand Down Expand Up @@ -92,7 +92,7 @@ class BufferName(Enum):

DISTANCE_TRAVELLED = "distance_travelled"

ROAD_WAYPOINTS_POSITIONS = "road_waypoints_lanes_pos"
ROAD_WAYPOINTS_POSITION = "road_waypoints_lanes_pos"
ROAD_WAYPOINTS_HEADING = "road_waypoints_lanes_heading"
ROAD_WAYPOINTS_LANE_ID = "road_waypoints_lane_id"
ROAD_WAYPOINTS_LANE_WIDTH = "road_waypoints_lane_width"
Expand Down
Loading

0 comments on commit 2a8aa10

Please sign in to comment.