From 5f2396d490deded87d43e378bd9e74738fe307b0 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 16 Jan 2025 11:56:07 -0500 Subject: [PATCH 1/4] use walrus for None --- sunnypilot/selfdrive/controls/lib/dec/dec.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/sunnypilot/selfdrive/controls/lib/dec/dec.py b/sunnypilot/selfdrive/controls/lib/dec/dec.py index f7bc028ee4..90c48a7186 100644 --- a/sunnypilot/selfdrive/controls/lib/dec/dec.py +++ b/sunnypilot/selfdrive/controls/lib/dec/dec.py @@ -173,8 +173,8 @@ class DynamicExperimentalController: """ Smoothing the lead detection to avoid erratic behavior. """ - self._has_lead_filtered = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob - return self._has_lead_filtered > WMACConstants.LEAD_PROB + lead_filtering: float = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob + return lead_filtering > WMACConstants.LEAD_PROB def _adaptive_lead_prob_threshold(self) -> float: """ @@ -196,7 +196,8 @@ class DynamicExperimentalController: # fcw detection self._mpc_fcw_gmac.add_data(self._mpc_fcw_crash_cnt > 0) - self._has_mpc_fcw = self._mpc_fcw_gmac.get_weighted_average() > WMACConstants.MPC_FCW_PROB + if mpc_fcw_weighted_average := self._mpc_fcw_gmac.get_weighted_average(): + self._has_mpc_fcw = mpc_fcw_weighted_average > WMACConstants.MPC_FCW_PROB # nav enable detection # self._has_nav_instruction = md.navEnabledDEPRECATED and maneuver_distance / max(car_state.vEgo, 1) < 13 @@ -211,7 +212,8 @@ class DynamicExperimentalController: adaptive_threshold = self._adaptive_slowdown_threshold() slow_down_trigger = len(md.orientation.x) == len(md.position.x) == TRAJECTORY_SIZE and md.position.x[TRAJECTORY_SIZE - 1] < adaptive_threshold self._slow_down_gmac.add_data(slow_down_trigger) - self._has_slow_down = self._slow_down_gmac.get_weighted_average() > WMACConstants.SLOW_DOWN_PROB + if slow_down_weighted_average := self._slow_down_gmac.get_weighted_average(): + self._has_slow_down = slow_down_weighted_average > WMACConstants.SLOW_DOWN_PROB # anomaly detection for slow down events if self._anomaly_detection(self._slow_down_gmac.data): @@ -238,7 +240,8 @@ class DynamicExperimentalController: # slowness detection if not self._has_standstill: self._slowness_gmac.add_data(self._v_ego_kph <= (self._v_cruise_kph * WMACConstants.SLOWNESS_CRUISE_OFFSET)) - self._has_slowness = self._slowness_gmac.get_weighted_average() > WMACConstants.SLOWNESS_PROB + if slowness_weighted_average := self._slowness_gmac.get_weighted_average(): + self._has_slowness = slowness_weighted_average > WMACConstants.SLOWNESS_PROB # dangerous TTC detection if not self._has_lead_filtered and self._has_lead_filtered_prev: @@ -248,7 +251,8 @@ class DynamicExperimentalController: if self._has_lead and car_state.vEgo >= 0.01: self._dangerous_ttc_gmac.add_data(lead_one.dRel / car_state.vEgo) - self._has_dangerous_ttc = self._dangerous_ttc_gmac.get_weighted_average() is not None and self._dangerous_ttc_gmac.get_weighted_average() <= WMACConstants.DANGEROUS_TTC + if dangerous_ttc_weighted_average := self._dangerous_ttc_gmac.get_weighted_average(): + self._has_dangerous_ttc = dangerous_ttc_weighted_average <= WMACConstants.DANGEROUS_TTC # keep prev values self._has_standstill_prev = self._has_standstill From 8673c31e4676fdacea6c1d44ff1429973e7dc09a Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 16 Jan 2025 11:59:13 -0500 Subject: [PATCH 2/4] Revert "use walrus for None" This reverts commit 5f2396d490deded87d43e378bd9e74738fe307b0. --- sunnypilot/selfdrive/controls/lib/dec/dec.py | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/sunnypilot/selfdrive/controls/lib/dec/dec.py b/sunnypilot/selfdrive/controls/lib/dec/dec.py index 90c48a7186..f7bc028ee4 100644 --- a/sunnypilot/selfdrive/controls/lib/dec/dec.py +++ b/sunnypilot/selfdrive/controls/lib/dec/dec.py @@ -173,8 +173,8 @@ class DynamicExperimentalController: """ Smoothing the lead detection to avoid erratic behavior. """ - lead_filtering: float = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob - return lead_filtering > WMACConstants.LEAD_PROB + self._has_lead_filtered = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob + return self._has_lead_filtered > WMACConstants.LEAD_PROB def _adaptive_lead_prob_threshold(self) -> float: """ @@ -196,8 +196,7 @@ class DynamicExperimentalController: # fcw detection self._mpc_fcw_gmac.add_data(self._mpc_fcw_crash_cnt > 0) - if mpc_fcw_weighted_average := self._mpc_fcw_gmac.get_weighted_average(): - self._has_mpc_fcw = mpc_fcw_weighted_average > WMACConstants.MPC_FCW_PROB + self._has_mpc_fcw = self._mpc_fcw_gmac.get_weighted_average() > WMACConstants.MPC_FCW_PROB # nav enable detection # self._has_nav_instruction = md.navEnabledDEPRECATED and maneuver_distance / max(car_state.vEgo, 1) < 13 @@ -212,8 +211,7 @@ class DynamicExperimentalController: adaptive_threshold = self._adaptive_slowdown_threshold() slow_down_trigger = len(md.orientation.x) == len(md.position.x) == TRAJECTORY_SIZE and md.position.x[TRAJECTORY_SIZE - 1] < adaptive_threshold self._slow_down_gmac.add_data(slow_down_trigger) - if slow_down_weighted_average := self._slow_down_gmac.get_weighted_average(): - self._has_slow_down = slow_down_weighted_average > WMACConstants.SLOW_DOWN_PROB + self._has_slow_down = self._slow_down_gmac.get_weighted_average() > WMACConstants.SLOW_DOWN_PROB # anomaly detection for slow down events if self._anomaly_detection(self._slow_down_gmac.data): @@ -240,8 +238,7 @@ class DynamicExperimentalController: # slowness detection if not self._has_standstill: self._slowness_gmac.add_data(self._v_ego_kph <= (self._v_cruise_kph * WMACConstants.SLOWNESS_CRUISE_OFFSET)) - if slowness_weighted_average := self._slowness_gmac.get_weighted_average(): - self._has_slowness = slowness_weighted_average > WMACConstants.SLOWNESS_PROB + self._has_slowness = self._slowness_gmac.get_weighted_average() > WMACConstants.SLOWNESS_PROB # dangerous TTC detection if not self._has_lead_filtered and self._has_lead_filtered_prev: @@ -251,8 +248,7 @@ class DynamicExperimentalController: if self._has_lead and car_state.vEgo >= 0.01: self._dangerous_ttc_gmac.add_data(lead_one.dRel / car_state.vEgo) - if dangerous_ttc_weighted_average := self._dangerous_ttc_gmac.get_weighted_average(): - self._has_dangerous_ttc = dangerous_ttc_weighted_average <= WMACConstants.DANGEROUS_TTC + self._has_dangerous_ttc = self._dangerous_ttc_gmac.get_weighted_average() is not None and self._dangerous_ttc_gmac.get_weighted_average() <= WMACConstants.DANGEROUS_TTC # keep prev values self._has_standstill_prev = self._has_standstill From a3db53044ef17e4c04d0d86d23d86ab06d2e161a Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 16 Jan 2025 12:00:20 -0500 Subject: [PATCH 3/4] fix wrong typing and variable name --- sunnypilot/selfdrive/controls/lib/dec/dec.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sunnypilot/selfdrive/controls/lib/dec/dec.py b/sunnypilot/selfdrive/controls/lib/dec/dec.py index f7bc028ee4..dc9a94543d 100644 --- a/sunnypilot/selfdrive/controls/lib/dec/dec.py +++ b/sunnypilot/selfdrive/controls/lib/dec/dec.py @@ -173,8 +173,8 @@ class DynamicExperimentalController: """ Smoothing the lead detection to avoid erratic behavior. """ - self._has_lead_filtered = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob - return self._has_lead_filtered > WMACConstants.LEAD_PROB + lead_filtering: float = (1 - smoothing_factor) * self._has_lead_filtered + smoothing_factor * lead_prob + return lead_filtering > WMACConstants.LEAD_PROB def _adaptive_lead_prob_threshold(self) -> float: """ From baf0506033417d6e2c1ea0b9fe07f452e1825aa3 Mon Sep 17 00:00:00 2001 From: Jason Wen Date: Thu, 16 Jan 2025 12:08:15 -0500 Subject: [PATCH 4/4] use walrus (needs cleanup) --- sunnypilot/selfdrive/controls/lib/dec/dec.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/sunnypilot/selfdrive/controls/lib/dec/dec.py b/sunnypilot/selfdrive/controls/lib/dec/dec.py index dc9a94543d..4353366c55 100644 --- a/sunnypilot/selfdrive/controls/lib/dec/dec.py +++ b/sunnypilot/selfdrive/controls/lib/dec/dec.py @@ -196,7 +196,10 @@ class DynamicExperimentalController: # fcw detection self._mpc_fcw_gmac.add_data(self._mpc_fcw_crash_cnt > 0) - self._has_mpc_fcw = self._mpc_fcw_gmac.get_weighted_average() > WMACConstants.MPC_FCW_PROB + if _mpc_fcw_weighted_average := self._mpc_fcw_gmac.get_weighted_average(): + self._has_mpc_fcw = _mpc_fcw_weighted_average > WMACConstants.MPC_FCW_PROB + else: + self._has_mpc_fcw = False # nav enable detection # self._has_nav_instruction = md.navEnabledDEPRECATED and maneuver_distance / max(car_state.vEgo, 1) < 13 @@ -211,7 +214,10 @@ class DynamicExperimentalController: adaptive_threshold = self._adaptive_slowdown_threshold() slow_down_trigger = len(md.orientation.x) == len(md.position.x) == TRAJECTORY_SIZE and md.position.x[TRAJECTORY_SIZE - 1] < adaptive_threshold self._slow_down_gmac.add_data(slow_down_trigger) - self._has_slow_down = self._slow_down_gmac.get_weighted_average() > WMACConstants.SLOW_DOWN_PROB + if _has_slow_down_weighted_average := self._slow_down_gmac.get_weighted_average(): + self._has_slow_down = _has_slow_down_weighted_average > WMACConstants.SLOW_DOWN_PROB + else: + self._has_slow_down = False # anomaly detection for slow down events if self._anomaly_detection(self._slow_down_gmac.data): @@ -238,7 +244,10 @@ class DynamicExperimentalController: # slowness detection if not self._has_standstill: self._slowness_gmac.add_data(self._v_ego_kph <= (self._v_cruise_kph * WMACConstants.SLOWNESS_CRUISE_OFFSET)) - self._has_slowness = self._slowness_gmac.get_weighted_average() > WMACConstants.SLOWNESS_PROB + if _slowness_weighted_average := self._slowness_gmac.get_weighted_average(): + self._has_slowness = _slowness_weighted_average > WMACConstants.SLOWNESS_PROB + else: + self._has_slowness = False # dangerous TTC detection if not self._has_lead_filtered and self._has_lead_filtered_prev: @@ -248,7 +257,10 @@ class DynamicExperimentalController: if self._has_lead and car_state.vEgo >= 0.01: self._dangerous_ttc_gmac.add_data(lead_one.dRel / car_state.vEgo) - self._has_dangerous_ttc = self._dangerous_ttc_gmac.get_weighted_average() is not None and self._dangerous_ttc_gmac.get_weighted_average() <= WMACConstants.DANGEROUS_TTC + if _dangerous_ttc_weighted_average := self._dangerous_ttc_gmac.get_weighted_average(): + self._has_dangerous_ttc = _dangerous_ttc_weighted_average <= WMACConstants.DANGEROUS_TTC + else: + self._has_dangerous_ttc = False # keep prev values self._has_standstill_prev = self._has_standstill