From b7e048fc263798cc38cc758709b2c91d77bca7d1 Mon Sep 17 00:00:00 2001 From: ajouatom Date: Sun, 11 May 2025 12:45:26 +0900 Subject: [PATCH] fix buttonMode[0,1], BSD desire, torque always , MPH, etc --- selfdrive/car/cruise.py | 6 ++++-- selfdrive/carrot_settings.json | 12 ++++++------ selfdrive/controls/lib/desire_helper.py | 13 +++++++++++-- selfdrive/ui/carrot.cc | 6 +++--- selfdrive/ui/qt/offroad/settings.cc | 2 +- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/selfdrive/car/cruise.py b/selfdrive/car/cruise.py index ecb4226..c87bbef 100644 --- a/selfdrive/car/cruise.py +++ b/selfdrive/car/cruise.py @@ -465,7 +465,7 @@ class VCruiseCarrot: self._pause_auto_speed_up = False if self._soft_hold_active > 0: self._soft_hold_active = 0 - elif self._cruise_ready: + elif self._cruise_ready or not CC.enabled: pass elif self._v_cruise_kph_at_brake > 0 and v_cruise_kph < self._v_cruise_kph_at_brake: v_cruise_kph = self._v_cruise_kph_at_brake @@ -480,9 +480,11 @@ class VCruiseCarrot: self._pause_auto_speed_up = True if self._soft_hold_active > 0: self._cruise_control(-1, -1, "Cruise off,softhold mode (decelCruise)") + elif not CC.enabled: + v_cruise_kph = max(self.v_ego_kph_set, self._cruise_speed_min) elif self._cruise_ready: pass - elif self.v_ego_kph_set > v_cruise_kph + 2: + elif self.v_ego_kph_set > v_cruise_kph + 2 and self._cruise_button_mode in [2]: v_cruise_kph = max(self.v_ego_kph_set, self._cruise_speed_min) elif self._cruise_button_mode in [0, 1]: v_cruise_kph = button_kph diff --git a/selfdrive/carrot_settings.json b/selfdrive/carrot_settings.json index c1b119c..0e727b8 100644 --- a/selfdrive/carrot_settings.json +++ b/selfdrive/carrot_settings.json @@ -95,14 +95,14 @@ { "group": "조향튜닝", "name": "LateralTorqueKd", - "title": "_LateralTorqueKd*0.01(800)", + "title": "_LateralTorqueKd*0.01(0)", "descr": "", "egroup": "LAT", - "etitle": "_LateralTorqueKd*0.01(800)", + "etitle": "_LateralTorqueKd*0.01(0)", "edescr": "", "min": 0, "max": 10000, - "default": 100, + "default": 0, "unit": 10 }, { @@ -1059,12 +1059,12 @@ "group": "조향일반", "name": "LaneChangeNeedTorque", "title": "차선변경 조향토크 사용", - "descr": "1: 차선변경시 조향토크를 줘야 작동함, 2: 깜박이 차선변경안함.", + "descr": "1: 차선변경시 조향토크를 줘야 작동함, 2: 깜박이 차선변경안함, 3: BSD무시함, 4:토크우선", "egroup": "LAT", "etitle": "LaneChange use steering torque", - "edescr": "1: need torque, 2:no lanechange", + "edescr": "1: need torque, 2:no lanechange, 3:ignore BSD, 4:torque always", "min": 0, - "max": 2, + "max": 4, "default": 0, "unit": 1 }, diff --git a/selfdrive/controls/lib/desire_helper.py b/selfdrive/controls/lib/desire_helper.py index 6c53d09..9043dda 100644 --- a/selfdrive/controls/lib/desire_helper.py +++ b/selfdrive/controls/lib/desire_helper.py @@ -127,6 +127,8 @@ class DesireHelper: self.object_detected_count = 0 self.laneChangeNeedTorque = 0 + self.ignore_bsd = False + self.torque_always = False self.driver_blinker_state = BLINKER_NONE self.atc_type = "" @@ -182,6 +184,11 @@ class DesireHelper: if self.laneChangeNeedTorque == 2: driver_desire_enabled = False + if self.laneChangeNeedTorque == 3: + self.ignore_bsd = True + if self.laneChangeNeedTorque == 4: + self.torque_always = True + self.blindspot_detected_counter = max(0, self.blindspot_detected_counter - 1) ##### check ATC's blinker state @@ -297,7 +304,7 @@ class DesireHelper: torque_applied = carstate.steeringPressed and torque_cond blindspot_detected = blindspot_cond - if blindspot_detected: + if blindspot_detected and not self.ignore_bsd: self.blindspot_detected_counter = int(1.5 / DT_MDL) # BSD검출시.. 아래 두줄로 자동차선변경 해제함.. 위험해서 자동차선변경기능은 안하는걸로... #self.lane_change_state = LaneChangeState.off @@ -306,7 +313,9 @@ class DesireHelper: self.lane_change_state = LaneChangeState.off self.lane_change_direction = LaneChangeDirection.none else: - if self.laneChangeNeedTorque > 0 or self.blindspot_detected_counter > 0: + if self.blindspot_detected_counter > 0 and not self.torque_always: + pass + elif self.laneChangeNeedTorque == 1: # 1: need torque, 2: no lanechange, 3: ignore bsd if torque_applied and lane_available: self.lane_change_state = LaneChangeState.laneChangeStarting # 운전자가 깜박이켠경우는 바로 차선변경 시작 diff --git a/selfdrive/ui/carrot.cc b/selfdrive/ui/carrot.cc index 76a7bdd..1e86cf3 100644 --- a/selfdrive/ui/carrot.cc +++ b/selfdrive/ui/carrot.cc @@ -2010,7 +2010,7 @@ public: auto [rx, ry, rd, rv, ry_rel, v_lat, radar] = vrd; if (rv < -1.0 || rv > 1.0) { - sprintf(str, "%.0f", rv * 3.6); + sprintf(str, "%.0f", (s->scene.is_metric)? rv * MS_TO_KPH : rv * MS_TO_MPH); wStr = 35 * (strlen(str) + 0); ui_fill_rect(s->vg, { (int)(rx - wStr / 2), (int)(ry - 35), wStr, 42 }, (!radar) ? COLOR_BLUE : (rv > 0.) ? COLOR_GREEN : COLOR_RED, 15); ui_draw_text(s, rx, ry, str, 40, COLOR_WHITE, BOLD); @@ -2153,7 +2153,7 @@ public: // draw speed char speed[32]; - sprintf(speed, "%.0f", v_ego * 3.6); + sprintf(speed, "%.0f", (s->scene.is_metric)? v_ego * MS_TO_KPH : v_ego * MS_TO_MPH); ui_draw_text(s, bx, by + 50, speed, 120, COLOR_WHITE, BOLD, 3.0f, 8.0f); ui_draw_image(s, { bx - 100, by - 60, 350, 150 }, "ic_speed_bg", 1.0f); @@ -2161,7 +2161,7 @@ public: char cruise_speed[32]; int cruise_x = bx + 170; int cruise_y = by + 15; - if(longActive) sprintf(cruise_speed, "%.0f", v_cruise); + if(longActive) sprintf(cruise_speed, "%.0f", (s->scene.is_metric)?v_cruise: v_cruise * KM_TO_MILE); else sprintf(cruise_speed, "--"); if (strcmp(cruise_speed_last, cruise_speed) != 0) { strcpy(cruise_speed_last, cruise_speed); diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 7f3f87d..16f487f 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -678,7 +678,7 @@ CarrotPanel::CarrotPanel(QWidget* parent) : QWidget(parent) { latLongToggles->addItem(new CValueControl("RadarReactionFactor", "LONG: Radar reaction factor(100)", "", "../assets/offroad/icon_logic.png", 0, 200, 10)); //latLongToggles->addItem(new CValueControl("StartAccelApply", "LONG: StartingAccel 2.0x(0)%", "정지->출발시 가속도의 가속율을 지정합니다 0: 사용안함.", "../assets/offroad/icon_road.png", 0, 100, 10)); //latLongToggles->addItem(new CValueControl("StopAccelApply", "LONG: StoppingAccel -2.0x(0)%", "정지유지시 브레이크압을 조정합니다. 0: 사용안함. ", "../assets/offroad/icon_road.png", 0, 100, 10)); - latLongToggles->addItem(new CValueControl("LaneChangeNeedTorque", "LaneChange need torque", "1:need torque, 2:no lanechange", "../assets/offroad/icon_logic.png", 0, 2, 1)); + latLongToggles->addItem(new CValueControl("LaneChangeNeedTorque", "LaneChange need torque", "1:need torque, 2:no lanechange, 3:ignore BSD, 4:torque always", "../assets/offroad/icon_logic.png", 0, 4, 1)); latLongToggles->addItem(new CValueControl("StoppingAccel", "LONG: StoppingStartAccelx0.01(-40)", "", "../assets/offroad/icon_logic.png", -100, 0, 5)); latLongToggles->addItem(new CValueControl("StopDistanceCarrot", "LONG: StopDistance (600)cm", "", "../assets/offroad/icon_logic.png", 300, 1000, 10)); //latLongToggles->addItem(new CValueControl("TraffStopDistanceAdjust", "LONG: TrafficStopDistance adjust(150)cm", "", "../assets/offroad/icon_road.png", -1000, 1000, 10));