From 59387d119416a3e00e42dc0debbd21e56493644c Mon Sep 17 00:00:00 2001 From: Tucker Date: Sun, 19 Feb 2023 13:20:40 -0500 Subject: [PATCH 1/3] Fix envision crash --- smarts/core/smarts.py | 8 +++++--- smarts/core/sumo_road_network.py | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/smarts/core/smarts.py b/smarts/core/smarts.py index f1ea6b697a..1e65d168a2 100644 --- a/smarts/core/smarts.py +++ b/smarts/core/smarts.py @@ -1508,11 +1508,13 @@ def _try_emit_envision_state(self, provider_state: ProviderState, obs, scores): if self._agent_manager.is_ego(agent_id): actor_type = envision_types.TrafficActorType.Agent if filter.actor_data_filter["mission_route_geometry"].enabled: - mission_route_geometry = ( - self._vehicle_index.sensor_state_for_vehicle_id( + mission_route_geometry = [ + geo + for geo in self._vehicle_index.sensor_state_for_vehicle_id( v.actor_id ).plan.route.geometry - ) + if len(geo) + ] else: actor_type = envision_types.TrafficActorType.SocialAgent diff --git a/smarts/core/sumo_road_network.py b/smarts/core/sumo_road_network.py index da3420e089..20262706c2 100644 --- a/smarts/core/sumo_road_network.py +++ b/smarts/core/sumo_road_network.py @@ -1074,7 +1074,7 @@ def type_specific_info(self) -> Optional[Any]: # the only type we currently handle is FIXED_LOC_SIGNAL in_lane, to_lane, _ = self._feat_data via_id = in_lane.getConnection(to_lane).getViaLaneID() - return self.lane_by_id(via_id) + return self._map.lane_by_id(via_id) def min_dist_from(self, point: Point) -> float: return np.linalg.norm(self.geometry[0].as_np_array - point.as_np_array) From eb230e4ade8269a393ba1bb3e1fbfccdca892750 Mon Sep 17 00:00:00 2001 From: Tucker Date: Sun, 19 Feb 2023 13:26:31 -0500 Subject: [PATCH 2/3] Shift formatting to data formatter. --- envision/data_formatter.py | 2 ++ smarts/core/smarts.py | 8 +++----- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/envision/data_formatter.py b/envision/data_formatter.py index 4c08eb1a67..7a37b624ee 100644 --- a/envision/data_formatter.py +++ b/envision/data_formatter.py @@ -280,6 +280,8 @@ def _format_traffic_actor(obj, data_formatter: EnvisionDataFormatter): for l_point in data_formatter.layer(obj.point_cloud): data_formatter.add(l_point, op=Operation.FLATTEN) for geo in data_formatter.layer(obj.mission_route_geometry): + if len(geo) == 0: + continue for route_point in data_formatter.layer(geo): data_formatter.add(route_point, op=Operation.FLATTEN) assert type(obj.actor_type) is TrafficActorType diff --git a/smarts/core/smarts.py b/smarts/core/smarts.py index 1e65d168a2..f1ea6b697a 100644 --- a/smarts/core/smarts.py +++ b/smarts/core/smarts.py @@ -1508,13 +1508,11 @@ def _try_emit_envision_state(self, provider_state: ProviderState, obs, scores): if self._agent_manager.is_ego(agent_id): actor_type = envision_types.TrafficActorType.Agent if filter.actor_data_filter["mission_route_geometry"].enabled: - mission_route_geometry = [ - geo - for geo in self._vehicle_index.sensor_state_for_vehicle_id( + mission_route_geometry = ( + self._vehicle_index.sensor_state_for_vehicle_id( v.actor_id ).plan.route.geometry - if len(geo) - ] + ) else: actor_type = envision_types.TrafficActorType.SocialAgent From 42a9a5654e57e803355fb0f18ca2100057a8a191 Mon Sep 17 00:00:00 2001 From: Tucker Date: Sun, 19 Feb 2023 13:30:31 -0500 Subject: [PATCH 3/3] Update changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f8dea3fce..dee090a085 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,8 @@ Copy and pasting the git commit messages is __NOT__ enough. - Made the heading input relative to the current heading in `RelativeTargetPose` action space. ### Deprecated ### Fixed +- Issue where a 0 length lane caused `envision` to crash. +- Fixed an issue where `Feature.type_specific_info` was calling a non-existant method. ### Removed ### Security