|
10 | 10 | import open3d as o3d |
11 | 11 | from ..component import Component |
12 | 12 | from ...state import VehicleState, AgentState |
| 13 | +from .parking_utils import * |
13 | 14 |
|
14 | 15 |
|
15 | 16 | class ConeDetector3D(Component): |
@@ -41,6 +42,21 @@ def __init__(self): |
41 | 42 | self.sync = ApproximateTimeSynchronizer([self.rgb_sub, self.lidar_sub], queue_size=10, slop=0.1) |
42 | 43 | self.sync.registerCallback(self.callback) |
43 | 44 |
|
| 45 | + |
| 46 | + def detect_parking_spot(self, cone_3d_centers): |
| 47 | + cone_ground_centers = np.array(cone_3d_centers) |
| 48 | + cone_ground_centers_2D = cone_ground_centers[:, :2] |
| 49 | + # print(f"-----cone_ground_centers_2D: {cone_ground_centers_2D}") |
| 50 | + candidates = findAllCandidateParkingLot(cone_ground_centers_2D) |
| 51 | + # print(f"-----candidates: {candidates}") |
| 52 | + if len(candidates) > 0: |
| 53 | + closest_spot = candidates[0] |
| 54 | + # print(f"-----closest_spot: {closest_spot}") |
| 55 | + # Create parking spot marker |
| 56 | + # ros_parking_spot_marker = create_parking_spot_marker(closest_spot, ref_frame="vehicle") |
| 57 | + # self.pub_parking_spot_marker.publish(ros_parking_spot_marker) |
| 58 | + return |
| 59 | + |
44 | 60 | def callback(self, img_msg, lidar_msg): |
45 | 61 | # Convert data |
46 | 62 | image = self.bridge.imgmsg_to_cv2(img_msg, "bgr8") |
@@ -77,6 +93,10 @@ def callback(self, img_msg, lidar_msg): |
77 | 93 | if centroids: |
78 | 94 | self.pub_centroids.publish(self.create_pc2(centroids)) |
79 | 95 |
|
| 96 | + # Parking space detection logic here |
| 97 | + |
| 98 | + |
| 99 | + |
80 | 100 | def undistort_image(self, img): |
81 | 101 | h, w = img.shape[:2] |
82 | 102 | new_K, _ = cv2.getOptimalNewCameraMatrix(self.K, self.D, (w, h), 1) |
|
0 commit comments