Skip to content

Commit df86ee6

Browse files
committed
order vertices
1 parent b292f52 commit df86ee6

2 files changed

Lines changed: 11 additions & 14 deletions

File tree

GEMstack/onboard/perception/cone_detection_parking.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import struct, ctypes
1515
from message_filters import Subscriber, ApproximateTimeSynchronizer
1616
from cv_bridge import CvBridge
17+
from scipy.spatial import ConvexHull
1718
from .visualization_utils import *
1819
from .parking_utils import *
1920
import time
@@ -259,6 +260,12 @@ def filter_ground_points(lidar_points, ground_threshold = 0):
259260
filtered_array = lidar_points[lidar_points[:, 2] > ground_threshold]
260261
return filtered_array
261262

263+
def order_points_convex_hull(points_2d):
264+
points_np = np.array(points_2d)
265+
hull = ConvexHull(points_np)
266+
ordered = [points_np[i] for i in hull.vertices]
267+
return ordered
268+
262269
# ----- New: Vectorized projection function -----
263270
def project_points(pts_cam, K, original_lidar_points):
264271
"""
@@ -405,14 +412,15 @@ def viz_object_states(self, cone_3d_centers, cone_3d_dims, cv_image, boxes):
405412
def detect_parking_spot(self, cone_3d_centers):
406413
cone_ground_centers = np.array(cone_3d_centers)
407414
cone_ground_centers_2D = cone_ground_centers[:, :2]
415+
ordered_cone_ground_centers_2D = order_points_convex_hull(cone_ground_centers_2D)
408416
# print(f"-----cone_ground_centers_2D: {cone_ground_centers_2D}")
409-
candidates = findAllCandidateParkingLot(cone_ground_centers_2D)
417+
candidates = findAllCandidateParkingLot(ordered_cone_ground_centers_2D)
410418
# print(f"-----candidates: {candidates}")
411419
if len(candidates) > 0:
412420
closest_spot = candidates[0]
413421
# print(f"-----closest_spot: {closest_spot}")
414422
# Draw polygon first
415-
ros_polygon_marker = create_polygon_marker(cone_ground_centers_2D, ref_frame="vehicle")
423+
ros_polygon_marker = create_polygon_marker(ordered_cone_ground_centers_2D, ref_frame="vehicle")
416424
self.pub_polygon_marker.publish(ros_polygon_marker)
417425
# Create parking spot marker
418426
ros_parking_spot_marker = create_parking_spot_marker(closest_spot, ref_frame="vehicle")

GEMstack/onboard/perception/visualization_utils.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
from visualization_msgs.msg import Marker, MarkerArray
33
from geometry_msgs.msg import Point
44
import sensor_msgs.point_cloud2 as pc2
5-
from scipy.spatial import ConvexHull
6-
import numpy as np
75
import cv2
86
import rospy
97
import struct
@@ -126,16 +124,7 @@ def create_bbox_marker(centroids, dimensions, color = (0.0, 1.0, 1.5, 0.2), ref_
126124
return marker_array
127125

128126

129-
def order_points_convex_hull(points_2d):
130-
points_np = np.array(points_2d)
131-
hull = ConvexHull(points_np)
132-
ordered = [points_np[i] for i in hull.vertices]
133-
return ordered
134-
135-
136127
def create_polygon_marker(vertices_2d, ref_frame="map"):
137-
vertices_2d = order_points_convex_hull(vertices_2d)
138-
139128
marker_array = MarkerArray()
140129

141130
marker = Marker()
@@ -168,7 +157,7 @@ def create_polygon_marker(vertices_2d, ref_frame="map"):
168157
return marker_array
169158

170159

171-
def create_parking_spot_marker(closest_spot, length = GEM_E4_LENGTH, width = GEM_E4_WIDTH, ref_frame="map"):
160+
def create_parking_spot_marker(closest_spot, length=GEM_E4_LENGTH, width=GEM_E4_WIDTH, ref_frame="map"):
172161
marker_array = MarkerArray()
173162

174163
marker = Marker()

0 commit comments

Comments
 (0)