mirror of
https://github.com/ajouatom/openpilot.git
synced 2026-06-08 11:04:57 +08:00
Resolve lane change timing bug and improve state handling
Fix lane change flag activation and conditions for state transitions.
This commit is contained in:
@@ -469,8 +469,8 @@ class DesireHelper:
|
|||||||
|
|
||||||
# ── laneChangeStarting 상태 ──────────────────────────────
|
# ── laneChangeStarting 상태 ──────────────────────────────
|
||||||
elif self.lane_change_state == LaneChangeState.laneChangeStarting:
|
elif self.lane_change_state == LaneChangeState.laneChangeStarting:
|
||||||
if self.lane_change_timer == 0.0:
|
# [수정] 프레임 타이밍 버그 해결: 상태 진입 시 조건 없이 즉시 플래그 가동
|
||||||
self.lane_change_completed_on_blinker = True
|
self.lane_change_completed_on_blinker = True
|
||||||
|
|
||||||
# 후측방 사각지대 차량 감지 상태 정의
|
# 후측방 사각지대 차량 감지 상태 정의
|
||||||
bsd_active = (side is not None) and (side.bsd_hold_counter > 0) and (self.lane_change_bsd >= 0)
|
bsd_active = (side is not None) and (side.bsd_hold_counter > 0) and (self.lane_change_bsd >= 0)
|
||||||
@@ -492,6 +492,7 @@ class DesireHelper:
|
|||||||
self.unsafe_cancel_timer,
|
self.unsafe_cancel_timer,
|
||||||
max(self.bsd_clear_sec, self.object_clear_sec, 1.5)
|
max(self.bsd_clear_sec, self.object_clear_sec, 1.5)
|
||||||
)
|
)
|
||||||
|
# 위험 상황으로 인한 취소 시에는 플래그를 꺼서 재시도 허용
|
||||||
self.lane_change_completed_on_blinker = False
|
self.lane_change_completed_on_blinker = False
|
||||||
|
|
||||||
else:
|
else:
|
||||||
@@ -505,11 +506,12 @@ class DesireHelper:
|
|||||||
else:
|
else:
|
||||||
self.lane_change_ll_prob = max(self.lane_change_ll_prob - 2 * DT_MDL, 0.0)
|
self.lane_change_ll_prob = max(self.lane_change_ll_prob - 2 * DT_MDL, 0.0)
|
||||||
if lane_change_prob < 0.02 and self.lane_change_ll_prob < 0.01:
|
if lane_change_prob < 0.02 and self.lane_change_ll_prob < 0.01:
|
||||||
# [수정] 조기 수렴 안정화 조건 만족 시에도 완료된 방향을 백업한 뒤 finishing으로 전환
|
# 조기 수렴 안정화 조건 만족 시에도 완료된 방향을 백업한 뒤 finishing으로 전환
|
||||||
self.completed_direction = self.lane_change_direction
|
self.completed_direction = self.lane_change_direction
|
||||||
self.lane_change_direction = LaneChangeDirection.none
|
self.lane_change_direction = LaneChangeDirection.none
|
||||||
self.lane_change_state = LaneChangeState.laneChangeFinishing
|
self.lane_change_state = LaneChangeState.laneChangeFinishing
|
||||||
|
|
||||||
|
|
||||||
# ── laneChangeFinishing 상태 ─────────────────────────────
|
# ── laneChangeFinishing 상태 ─────────────────────────────
|
||||||
elif self.lane_change_state == LaneChangeState.laneChangeFinishing:
|
elif self.lane_change_state == LaneChangeState.laneChangeFinishing:
|
||||||
self.lane_change_ll_prob = min(self.lane_change_ll_prob + DT_MDL, 1.0)
|
self.lane_change_ll_prob = min(self.lane_change_ll_prob + DT_MDL, 1.0)
|
||||||
|
|||||||
Reference in New Issue
Block a user