fix buttonMode[0,1], BSD desire, torque always , MPH, etc

This commit is contained in:
ajouatom 2025-05-11 12:45:26 +09:00
parent 34a80f7341
commit b7e048fc26
5 changed files with 25 additions and 14 deletions

View File

@ -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

View File

@ -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
},

View File

@ -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
# 운전자가 깜박이켠경우는 바로 차선변경 시작

View File

@ -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);

View File

@ -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));