Skip to content

Commit 54e1af4

Browse files
committed
Modifying for multiple pedestrians
1 parent 91632e2 commit 54e1af4

2 files changed

Lines changed: 36 additions & 16 deletions

File tree

GEMstack/onboard/planning/longitudinal_planning.py

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1290,6 +1290,7 @@ def update(self, state : AllState):
12901290
desired_speed = self.desired_speed
12911291
accel = self.acceleration
12921292
decel = self.deceleration
1293+
lookahead_distance_to_pedestrian = lookahead_distance
12931294

12941295
for r in state.relations:
12951296
if r.type == EntityRelationEnum.YIELDING and r.obj1 == '':
@@ -1362,20 +1363,25 @@ class ObjectFrameEnum(Enum):
13621363
###############################################
13631364
# # UNCOMMENT NOT TO YIELD: JUST STOP FOR PART1
13641365
# print("The vehicle is Stopping.")
1366+
# print("@@@@@", a.pose.x)
1367+
1368+
# # Update the collision distance.
1369+
# if lookahead_distance_to_pedestrian > collision_distance:
1370+
# lookahead_distance_to_pedestrian = collision_distance
1371+
13651372
# # Decide the deceleration based on the collision distance.
1366-
# brake_deceleration = max(self.deceleration, v1[0]**2 / (2 * (collision_distance)))
1367-
# if brake_deceleration > self.deceleration:
1368-
# if brake_deceleration > self.max_deceleration:
1369-
# brake_deceleration = self.max_deceleration
1373+
# # To stop perfectly, assume the vehicle is running at the desired speed.
1374+
# brake_deceleration = max(self.deceleration, desired_speed**2 / (2 * (collision_distance)))
1375+
# if brake_deceleration > self.max_deceleration:
1376+
# brake_deceleration = self.max_deceleration
1377+
1378+
# if brake_deceleration > decel:
13701379
# decel = brake_deceleration if brake_deceleration > decel else decel
13711380
# should_brake = True
1372-
# break
13731381
# break
13741382
###############################################
13751383

13761384
print("Collision detected. Try to find yielding speed.")
1377-
# Update lookahead distance to pedestrian.
1378-
route_with_lookahead = route.trim(closest_parameter, closest_parameter + collision_distance)
13791385

13801386
collision_distance_after_yield = -1
13811387

@@ -1391,23 +1397,29 @@ class ObjectFrameEnum(Enum):
13911397
collision_distance_after_yield = sim.run()
13921398
if collision_distance_after_yield < 0:
13931399
print(f"Yielding at speed: {v}")
1394-
desired_speed = v if v < desired_speed else desired_speed
1395-
decel = self.yield_deceleration if self.yield_deceleration > decel else decel
1396-
break
1400+
if lookahead_distance_to_pedestrian > collision_distance:
1401+
lookahead_distance_to_pedestrian = collision_distance
1402+
desired_speed = v
1403+
decel = self.yield_deceleration
1404+
break
13971405

13981406
# Collision detected with any yielding speed.
13991407
# => Brake to avoid collision.
1400-
if collision_distance_after_yield > 0:
1408+
if collision_distance_after_yield >= 0:
14011409
print("The vehicle is Stopping.")
14021410
# Decide the deceleration based on the collision distance.
14031411
brake_deceleration = max(self.deceleration, v1[0]**2 / (2 * (collision_distance)))
14041412
if brake_deceleration > self.max_deceleration:
14051413
brake_deceleration = self.max_deceleration
1406-
decel = brake_deceleration if brake_deceleration > decel else decel
1407-
should_brake = True
1414+
if lookahead_distance_to_pedestrian > collision_distance:
1415+
lookahead_distance_to_pedestrian = collision_distance
1416+
decel = brake_deceleration
1417+
route = route_with_lookahead
1418+
should_brake = True
1419+
1420+
# Update the lookahead distance to pedestrian.
1421+
route_with_lookahead = route.trim(closest_parameter,closest_parameter + lookahead_distance_to_pedestrian)
14081422

1409-
break
1410-
14111423
# # UNCOMMENT TO BRAKE FOR ALL PEDESTRIANS
14121424
# should_brake = True
14131425
# desired_speed = 0.0

scenes/xyhead_demo.yaml

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,12 @@ agents:
88
target: [15.0,10.0]
99
# target: [10.0,10.0]
1010
behavior: loop
11-
11+
12+
ped2:
13+
type: pedestrian
14+
position: [15.0, 0.0]
15+
# position: [10.0, 2.0]
16+
nominal_velocity: 0.25
17+
target: [15.0,10.0]
18+
# target: [10.0,10.0]
19+
behavior: loop

0 commit comments

Comments
 (0)