Controls - Lane Change Customizations - One Lane Change Per Signal

Only allow one nudgeless lane change per turn signal activation.
This commit is contained in:
FrogAi 2024-05-27 03:06:35 -07:00
parent e60234d4d0
commit fb6da7c78c

View File

@ -40,6 +40,8 @@ class DesireHelper:
self.desire = log.Desire.none self.desire = log.Desire.none
# FrogPilot variables # FrogPilot variables
self.lane_change_completed = False
self.lane_change_wait_timer = 0 self.lane_change_wait_timer = 0
def update(self, carstate, lateral_active, lane_change_prob, frogpilotPlan, frogpilot_toggles): def update(self, carstate, lateral_active, lane_change_prob, frogpilotPlan, frogpilot_toggles):
@ -84,8 +86,9 @@ class DesireHelper:
if not one_blinker or below_lane_change_speed: if not one_blinker or below_lane_change_speed:
self.lane_change_state = LaneChangeState.off self.lane_change_state = LaneChangeState.off
self.lane_change_direction = LaneChangeDirection.none self.lane_change_direction = LaneChangeDirection.none
elif torque_applied and not blindspot_detected and lane_available and self.lane_change_wait_timer >= frogpilot_toggles.lane_change_delay: elif torque_applied and not blindspot_detected and lane_available and not self.lane_change_completed and self.lane_change_wait_timer >= frogpilot_toggles.lane_change_delay:
self.lane_change_state = LaneChangeState.laneChangeStarting self.lane_change_state = LaneChangeState.laneChangeStarting
self.lane_change_completed = True if frogpilot_toggles.one_lane_change else False
self.lane_change_wait_timer = 0 self.lane_change_wait_timer = 0
# LaneChangeState.laneChangeStarting # LaneChangeState.laneChangeStarting
@ -114,6 +117,7 @@ class DesireHelper:
else: else:
self.lane_change_timer += DT_MDL self.lane_change_timer += DT_MDL
self.lane_change_completed &= one_blinker
self.prev_one_blinker = one_blinker self.prev_one_blinker = one_blinker
self.desire = DESIRES[self.lane_change_direction][self.lane_change_state] self.desire = DESIRES[self.lane_change_direction][self.lane_change_state]