Skip to content

Commit 336ec5d

Browse files
committed
Refactor parking planner: add maneuver-aware spot selection and geometric collision checking
- Introduced a maneuver-complexity-aware strategy in `pick_parking_spot` to prioritize easier-to-enter parking slots. - Rewrote `available_parking_spots` to use polygon intersection with buffer clearance instead of bounding box proximity. - Updated `all_parking_spots_in_parking_lot` to compute spots based on curb geometry and yaw direction. - Refactored `find_available_parking_spots_and_search_vector` for cleaner curb processing and modular obstacle setup. - Improved `find_collision_free_trajectory` with split-path planning and clearer bound handling. - Removed redundant logic and deprecated methods for clarity and modularity.
1 parent 3fd665a commit 336ec5d

2 files changed

Lines changed: 307 additions & 142 deletions

File tree

GEMstack/onboard/planning/parallel_parking.py

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,33 +30,25 @@ def __init__(self, routefn: str, vehicle_interface: GEMInterface, frame: str = '
3030
else:
3131
raise ValueError("Unknown route file extension", ext)
3232

33-
# SLOT 1 (2.69, -2.44), SLOT 2 (7.47, -2.44)
34-
# SLOT 3 (12.25, -2.44), SLOT 4 (17.33, -2.44)
33+
# SLOT 1 (2.69, -2.44), SLOT 2 (7.57, -2.44)
34+
# SLOT 3 (12.45, -2.44), SLOT 4 (17.33, -2.44)
3535
# SLOT 5 (22.11, -2.44)
3636

3737
self.parked_cars = [
38-
39-
(7.47, -2.44),
40-
(12.25, -2.44),
41-
(17.33, -2.44),
42-
(22.11, -2.44)
43-
44-
]
45-
self.all_parking_spots_in_parking_lot = [
46-
(3.94, -2.44, 0.0, (2.44, 4.88)),
47-
(7.47, -2.44, 0.0, (2.44, 4.88)),
48-
(12.25, -2.44, 0.0, (2.44, 4.88)),
49-
(17.33, -2.44, 0.0, (2.44, 4.88)),
50-
(22.11, -2.44, 0.0,(2.44, 4.88))
38+
(2.69, -2.44),
39+
(22.11, -2.44)
5140
]
41+
5242
self.reedssheppparking = ReedsSheppParking()
53-
self.reedssheppparking.closest = False
54-
self.reedssheppparking.all_parking_spots_in_parking_lot = self.all_parking_spots_in_parking_lot
43+
# self.reedssheppparking.closest = True
44+
# self.reedssheppparking.add_static_vertical_curb_as_obstacle = False
45+
# self.reedssheppparking.add_static_horizontal_curb_as_obstacle = False
46+
self.reedssheppparking.static_horizontal_curb_xy_coordinates = [(0.0, -2.44),(24.9, -2.44)]
5547
self.reedssheppparking.find_available_parking_spots_and_search_vector(self.parked_cars)
5648
self.reedssheppparking.find_collision_free_trajectory(self.parked_cars)
5749

5850

59-
51+
6052

6153
def state_inputs(self):
6254
return ['vehicle']
@@ -69,7 +61,6 @@ def rate(self):
6961

7062
def update(self, vehicle: VehicleState, x=0.0):
7163
self.current_pose = vehicle.pose
72-
#self.reedssheppparking.find_collision_free_trajectory(self.parked_cars)
7364
self.waypoints_to_go = self.reedssheppparking.waypoints_to_go
7465
self.route = Route(frame=ObjectFrameEnum.START, points=self.waypoints_to_go.tolist())
7566
return self.route

0 commit comments

Comments
 (0)