From ed06aa89206843bd4b3550cbbd7e1654f05633af Mon Sep 17 00:00:00 2001 From: firestarsdog <229254897+firestarsdog@users.noreply.github.com> Date: Mon, 18 May 2026 03:35:51 -0400 Subject: [PATCH] Yellow Brick Road, Emerald City, Oz --- starpilot/controls/lib/speed_limit_controller.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/starpilot/controls/lib/speed_limit_controller.py b/starpilot/controls/lib/speed_limit_controller.py index 3c21ae823..3344748a4 100644 --- a/starpilot/controls/lib/speed_limit_controller.py +++ b/starpilot/controls/lib/speed_limit_controller.py @@ -57,6 +57,7 @@ class SpeedLimitController: self.previous_source = "None" self.source = "None" + self.previous_road_name = "" self._slc_adopt_counter = 0 @@ -244,7 +245,7 @@ class SpeedLimitController: self.mapbox_future = future future.add_done_callback(complete_request) - def handle_limit_change(self, desired_source, desired_target, v_ego, sm): + def handle_limit_change(self, desired_source, desired_target, current_road_name, v_ego, sm): self.speed_limit_changed_timer += DT_MDL had_override = self.override_active(v_ego, sm["carState"].gasPressed) @@ -269,6 +270,7 @@ class SpeedLimitController: self.previous_source = desired_source self.previous_target = desired_target + self.previous_road_name = current_road_name elif desired_target < self.target and not self.starpilot_toggles.speed_limit_confirmation_lower: self.source = desired_source @@ -284,11 +286,12 @@ class SpeedLimitController: self.source = "None" self.unconfirmed_speed_limit = desired_target - if self.target != self.previous_target and self.target > 0 and not speed_limit_denied: + if (self.target != self.previous_target or self.previous_road_name != current_road_name) and self.target > 0 and not speed_limit_denied: self.denied_target = 0 self.previous_source = self.source self.previous_target = self.target + self.previous_road_name = current_road_name self.starpilot_planner.params.put_nonblocking("PreviousSpeedLimit", self.target) @@ -342,7 +345,7 @@ class SpeedLimitController: desired_target = self.mapbox_limit if not display_only and (desired_target == 0 or self.target == 0): - if self.denied_target != self.previous_target > 0 and self.starpilot_toggles.slc_fallback_previous_speed_limit: + if self.previous_target > 0 and self.starpilot_toggles.slc_fallback_previous_speed_limit: desired_source = self.previous_source desired_target = self.previous_target @@ -370,8 +373,10 @@ class SpeedLimitController: return - if abs(desired_target - self.previous_target) >= 1: - self.handle_limit_change(desired_source, desired_target, v_ego, sm) + current_road_name = sm["mapdOut"].roadName if desired_source == "Map Data" else "" + + if abs(desired_target - self.previous_target) >= 1 or (current_road_name != self.previous_road_name and current_road_name != ""): + self.handle_limit_change(desired_source, desired_target, current_road_name, v_ego, sm) elif desired_source != self.source and abs(desired_target - self.target) < 1: self.source = desired_source else: