From 5c6af6a43929aa3b7ccd5e6d0f328d8210a1106a Mon Sep 17 00:00:00 2001 From: nvikramraj Date: Mon, 24 Feb 2025 19:06:45 -0600 Subject: [PATCH 1/2] edge case fix --- GEMstack/onboard/perception/pedestrian_detection.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/GEMstack/onboard/perception/pedestrian_detection.py b/GEMstack/onboard/perception/pedestrian_detection.py index f12cec27e..d32fd32ec 100644 --- a/GEMstack/onboard/perception/pedestrian_detection.py +++ b/GEMstack/onboard/perception/pedestrian_detection.py @@ -137,6 +137,7 @@ def update(self, vehicle : VehicleState) -> Dict[str,AgentState]: # Edge cases + # Initial vehicle pose data if(self.current_vehicle_state == None and self.previous_vehicle_state == None): self.current_vehicle_state = vehicle # We get vehicle state from GNSS in global state @@ -150,8 +151,13 @@ def update(self, vehicle : VehicleState) -> Dict[str,AgentState]: self.previous_vehicle_state = self.current_vehicle_state self.current_vehicle_state = vehicle + # edge case to handle no pedestrian data if(self.current_agent_obj_dims == {}): return self.current_agents + + # edge case to handle empty lists and missing data + if(len(self.current_agent_obj_dims['pose']) == 0 or len(self.current_agent_obj_dims['dims'])) or (len(self.current_agent_obj_dims['pose']) != len(self.current_agent_obj_dims['dims'])): + return self.current_agents # Update current time: self.curr_time = vehicle.pose.t From 74acb15422a22ab05f79f3c0ae51057f360d49bd Mon Sep 17 00:00:00 2001 From: LucasEby Date: Mon, 24 Feb 2025 20:45:09 -0500 Subject: [PATCH 2/2] Added exception to edge case and fixed return values for similar exceptions --- .../onboard/perception/pedestrian_detection.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/GEMstack/onboard/perception/pedestrian_detection.py b/GEMstack/onboard/perception/pedestrian_detection.py index d32fd32ec..6b164e047 100644 --- a/GEMstack/onboard/perception/pedestrian_detection.py +++ b/GEMstack/onboard/perception/pedestrian_detection.py @@ -37,7 +37,6 @@ from copy import deepcopy # ROS, CV import rospy -import message_filters import tf from cv_bridge import CvBridge from sensor_msgs.msg import Image, PointCloud2 @@ -52,7 +51,7 @@ from ..component import Component from .IdTracker import IdTracker from scipy.spatial.transform import Rotation as R -from septentrio_gnss_driver.msg import INSNavGeod + def box_to_fake_agent(box): """Creates a fake agent state from an (x,y,w,h) bounding box. @@ -153,11 +152,16 @@ def update(self, vehicle : VehicleState) -> Dict[str,AgentState]: # edge case to handle no pedestrian data if(self.current_agent_obj_dims == {}): - return self.current_agents + return {} - # edge case to handle empty lists and missing data - if(len(self.current_agent_obj_dims['pose']) == 0 or len(self.current_agent_obj_dims['dims'])) or (len(self.current_agent_obj_dims['pose']) != len(self.current_agent_obj_dims['dims'])): - return self.current_agents + # edge case to handle empty lists: + if(len(self.current_agent_obj_dims['pose']) == 0 or len(self.current_agent_obj_dims['dims']) == 0): + return {} + + # Edge case to handle differently sized lists: + # TODO: Handle different lengths properly + if len(self.current_agent_obj_dims['pose']) != len(self.current_agent_obj_dims['dims']): + raise Exception( f"Length of extracted poses ({len(self.current_agent_obj_dims['pose'])}) and dimensions ({len(self.current_agent_obj_dims['dims'])}) are not equal") # Update current time: self.curr_time = vehicle.pose.t