From 0b3f970fc1961bd29f37109eb03e9042874b2c3f Mon Sep 17 00:00:00 2001 From: infiniteCable <75014343+infiniteCable@users.noreply.github.com> Date: Wed, 28 May 2025 16:36:04 +0200 Subject: [PATCH] Update cruise.py --- selfdrive/car/cruise.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/selfdrive/car/cruise.py b/selfdrive/car/cruise.py index 6dbfc8d9a..b31615a77 100644 --- a/selfdrive/car/cruise.py +++ b/selfdrive/car/cruise.py @@ -42,14 +42,14 @@ class VCruiseHelper: def v_cruise_initialized(self): return self.v_cruise_kph != V_CRUISE_UNSET - def update_v_cruise(self, CS, enabled, is_metric, speed_limit_control=False): + def update_v_cruise(self, CS, enabled, is_metric, speed_limit_control=False, speed_limit_predicative=False): self.v_cruise_kph_last = self.v_cruise_kph if CS.cruiseState.available: if not self.CP.pcmCruise: # if stock cruise is completely disabled, then we can use our own set speed logic - self._update_v_speed_limit(CS, enabled, speed_limit_control) + self._update_v_speed_limit(CS, enabled, speed_limit_control, speed_limit_predicative) self._update_v_cruise_non_pcm(CS, enabled, is_metric) self.v_cruise_cluster_kph = self.v_cruise_kph self.update_button_timers(CS, enabled) @@ -66,16 +66,20 @@ class VCruiseHelper: self.v_cruise_kph = V_CRUISE_UNSET self.v_cruise_cluster_kph = V_CRUISE_UNSET - def _update_v_speed_limit(self, CS, enabled, speed_limit_control): + def _update_v_speed_limit(self, CS, enabled, speed_limit_control, predicative): if not speed_limit_control: # or not enabled # always set speed limit return - speed_limit = CS.cruiseState.speedLimit * CV.MS_TO_KPH + speed_limit_current = CS.cruiseState.speedLimit * CV.MS_TO_KPH + speed_limit_predicative = CS.cruiseState.speedLimitPredicative * CV.MS_TO_KPH + + speed_limit = speed_limit_predicative if predicative and speed_limit_predicative != 0 else speed_limit_current + if speed_limit != self.v_speed_limit_kph: if speed_limit != 0: self.v_cruise_kph = speed_limit self.v_cruise_kph = np.clip(round(self.v_cruise_kph, 1), V_CRUISE_MIN, V_CRUISE_MAX) - self.v_speed_limit_kph = speed_limit + self.v_speed_limit_kph = speed_limit def _update_v_cruise_non_pcm(self, CS, enabled, is_metric): # handle button presses. TODO: this should be in state_control, but a decelCruise press