인지 결과 기반 판단 전략

  • 이전 강의에서 다룬 인지 모델을 통해 주변 환경을 이해했다면,
  • 이제는 이 정보를 바탕으로 차량이 어떻게 주행할지 ‘생각’하고 ‘결정’하는 단계

1. 판단 단계 개요

  • 판단 단계(Decision-making)란?
    • 인지(Perception) 모듈로부터 얻은 주변 환경 정보(차선, 객체, 신호등 등)를 바탕으로,
    • 현재 상황을 분석하고
    • 자율주행 차량이 다음에 취해야 할 최적의 경로(Path)행동(Behavior)을 결정하는 과정

    • 자율주행차의 두뇌
      • 인지 모듈이 ‘눈’ 역할을 한다면,
      • 판단 모듈은
        • 이 시각 정보를 해석하고
        • 과거의 경험(학습된 지식)을 바탕으로 미래를 예측하며,
        • 목표를 달성하기 위한 최선의 방법을 ‘생각’하고 ‘결정’하는
        • ‘두뇌’ 역할을 수행
  • 판단 단계의 중요성
    • 안전성 확보
      • 주변 환경의 불확실성 속에서 안전을 최우선으로 고려하여 최악의 상황에 대비하는 결정 수립
        • 불확실성 예시: 예측 불가능한 보행자, 갑작스러운 장애물 등
    • 효율적인 주행
      • 교통 흐름을 원활하게 하고,
      • 최적의 경로로 주행하며,
      • 에너지 효율을 고려한 결정을 통해
      • 이동의 효율성을 극대화
    • 사용자 경험
      • 탑승자가 편안하고 부드러운 주행을 경험할 수 있도록
      • 예측 가능한 방식으로 움직임
    • 법규 준수
      • 교통 법규 및 신호 체계를 정확히 이해하고 준수하는 결정을 통해
      • 안전하고 합법적인 주행을 보장

2. 인지 결과의 활용: 판단의 ‘입력’

  • 판단 모듈은 이전 차시에서 구현했던 인지 모듈의 다양한 출력들을 입력으로 받음
  • 인지 결과들은 단일 이미지 프레임 단위로 제공될 뿐만 아니라,
  • 연속된 프레임 간의 변화를 통해 객체의 움직임(Trajectory) 정보까지 포함하여 판단 모듈로 전달됨

  • 인지 모듈의 주요 입력 (재활용)
    • 차선 인식 결과
      • 현재 차량이 위치한 차선 정보, 차선의 경계, 차선 변경 가능 여부 등
      • 사용 기술: 이진 마스크, 차선 폴리라인 등
    • 객체 탐지 및 분류 결과
      • 주변 차량, 보행자, 자전거, 오토바이 등의 위치(바운딩 박스), 속도, 방향, 클래스 정보
    • 시맨틱 세그멘테이션 결과
      • 도로 영역, 보도, 건물, 표지판 등 이미지 픽셀 단위의 클래스 정보
    • 교통 표지판 및 신호등 인식 결과
      • 정지선, 속도 제한 표지판, 좌회전/우회전 표지판, 신호등의 현재 상태(빨간불/초록불)
    • 차량의 현재 상태
      • GPS를 통한 위치, IMU를 통한 속도, 가속도, yaw/pitch/roll 등
    • HD Map (고정밀 지도) 정보
      • 차선 정보, 교차로 구조, 건물, 도로 경계 등 정적(Static) 환경 정보

3. 판단 전략의 핵심 구성 요소

  • 인지된 정보를 바탕으로 차량의 주행을 결정하기 위해 판단 단계는 여러 하위 구성 요소로 이루어짐

3.1. 환경 이해 및 상황 분석

  • 역할
    • 인지 모듈에서 개별적으로 얻은 정보들을 종합하여
    • 차량 주변의 전체적인 상황을 구축하고 해석함
  • 수행 내용
    • 센서 퓨전 (Sensor Fusion)
      • 카메라, 라이다, 레이더 등 다양한 센서의 출력들을 통합하여
      • 하나의 일관된 주변 환경 지도를 생성
      • 이는 특히 불확실성을 줄이고 정확도를 높이는 데 중요함
    • 객체 추적 및 ID 부여 (Object Tracking & ID Assignment)
      • 연속된 프레임에서 동일한 객체를 추적하고
      • 고유 ID를 부여하여
      • 각 객체의 움직임 히스토리를 관리함
    • 가상 환경 모델 구축 (Scene Representation)
      • 주변 차량, 차선, 신호등 등의 2D/3D 위치 및 속도를 통합하여
      • 자율주행 차량 입장에서의 ‘World’ 모델을 생성함
    • 교통 흐름 분석
      • 도로의 교통량, 속도 제한, 혼잡도 등을 분석하여
      • 주행 전략에 반영함

3.2. 예측

  • 역할
    • 주변 환경에서 움직이는 다른 차량, 보행자 등의 미래 행동을 예측
    • 자율주행은 단순히 현재를 보는 것이 아니라 ‘미래’를 예측하고 대비해야 함
  • 수행 내용:
    • Trajectory Prediction (궤적 예측)
      • 다른 차량이나 보행자의 현재 속도, 가속도, 방향, 과거 이동 패턴 등을 기반으로
      • 1~5초 후의 미래 궤적을 예측함
    • Intent Prediction (의도 예측)
      • 주변 차량이 차선을 변경하려는지, 감속하려는지 등의 의도를 예측하여
      • 의사결정에 반영함
    • 딥러닝 기반 예측 모델
      • RNN(Recurrent Neural Network), LSTM(Long Short-Term Memory) 등의 시계열 모델이나
      • Transformer 기반 모델이 주로 사용됨
      # 간략화된 예측 예시 (의사 코드)
      # def predict_agent_trajectory(agent_id, past_positions, past_velocities, road_info):
      #     # 딥러닝 모델에 과거 데이터 및 환경 정보 입력
      #     future_trajectory = model.predict(past_positions, past_velocities, road_info)
      #     return future_trajectory # [x, y, vx, vy] 시퀀스
    

3.3. 경로 계획

  • 역할
    • 차량이 목적지까지 안전하고 효율적으로 이동할 수 있는 경로를 생성
  • 수행 내용:
    • 전역 경로 계획 (Global Path Planning)
      • 출발지에서 목적지까지의 고수준의 ‘큰 그림’ 경로를 생성함(일반적인 내비게이션 기능과 유사)
      • HD Map을 기반으로 최단 거리, 최단 시간, 연료 효율 등을 고려함
        • 예: A*, Dijkstra 알고리즘 등
    • 지역 경로 계획 (Local Path Planning)
      • 현재 차량의 위치와 실시간으로 변화하는 주변 환경(객체, 차선, 장애물)을 바탕으로
      • 전역 경로를 따르면서 안전한 단기적인 경로를 초 단위로 생성함

      • 주요 고려 사항
        • 차선 유지, 차선 변경, 장애물 회피, 추월, 교차로 통과, 차간 거리 유지 등
      • 알고리즘 예시
        • Spline 기반 경로 생성
        • 샘플링 기반 알고리즘(RRT: Rapidly-exploring Random Tree)
        • 최적화 기반 알고리즘(MPC: Model Predictive Control) 등
      # 간략화된 지역 경로 계획 예시 (의사 코드)
      # def local_path_planner(current_pose, perceived_objects, lane_info, predicted_trajectories):
      #     possible_paths = generate_candidate_paths(current_pose, lane_info) # 여러 가능한 경로 생성
      #     scores = evaluate_paths(possible_paths, perceived_objects, predicted_trajectories) # 안전성, 효율성 평가
      #     best_path = select_best_path(possible_paths, scores)
      #     return best_path # 다음 몇 초간의 궤적 (위치, 속도, 가속도 시퀀스)
    

3.4. 행동 결정

  • 역할
    • 생성된 지역 경로를 따라가기 위해 차량이 어떤 종류의 주행 행동(Action)을 취할지 결정
    • 이는 운전자가 “직진”, “정지”, “좌회전”, “차선 변경” 등의 의도를 갖는 것과 같음
  • 수행 내용:
    • 유한 상태 기계 (FSM: Finite State Machine) 기반
      • 미리 정의된 주행 상태(예: 직진, 차선 변경, 교차로 진입, 정지 대기)와
      • 각 상태 간의 전환 규칙(트랜지션)에 따라 행동을 결정
      • 간단하고 예측 가능하나,
      • 복잡한 상황 대응에 한계가 있음
    • 규칙 기반 (Rule-based)
      • IF (신호등 == 빨강 AND 정지선_거리 < 5m) THEN 정지,
      • IF (앞차_거리 < 안전거리 AND 앞차_속도 < 내_속도) THEN 감속
      • 과 같은 명시적인 규칙 활용
    • 강화 학습 (Reinforcement Learning) 기반
      • 다양한 주행 시뮬레이션 환경에서
      • 시행착오를 통해 최적의 행동 정책(Policy)을 학습
      • 복잡하고 동적인 상황에 유연하게 대처할 수 있으나,
      • 안전성 검증 및 해석의 어려움이 있음
      # 간략화된 행동 결정 예시 (FSM 유사)
      # def decide_behavior(current_state, perceived_env, goal_reached):
      #     if goal_reached:
      #         return "정지"
      #     elif perceived_env.traffic_light == "빨강" and perceived_env.distance_to_stop_line < 5:
      #         return "정지"
      #     elif perceived_env.has_obstacle_in_path:
      #         return "장애물 회피"
      #     elif perceived_env.can_change_lane_left and current_state.lane_offset > 0.5:
      #         return "차선 변경 좌"
      #     else:
      #         return "차선 유지 직진"
    

3.5. 위험 평가 및 충돌 회피

  • 역할
    • 생성된 경로와 결정된 행동이 안전한지 지속적으로 평가하고,
    • 잠재적인 위험이 발생할 경우 즉각적으로 대응함
  • 수행 내용:
    • 충돌 시간(TTC: Time-To-Collision)
      • 주변 객체와의 충돌까지 남은 시간을 계산하여 위험도를 평가
      • TTC = 상대 거리 / 상대 속도
    • 최소 안전 거리 유지
      • 앞차와의 최소 안전 거리를 지속적으로 모니터링
    • 비상 제동/회피 기동
      • 충돌 위험이 임박했을 경우,
      • 인지된 정보를 바탕으로 가장 안전한 비상 조치(예: 비상 제동, 급회피)를 결정하고
      • 제어 모듈로 명령을 전달

4. 판단 전략의 출력

  • 판단 단계의 최종 출력
    • 제어(Control) 모듈이 직접 실행할 수 있는 형태의 상세한 지시
      • 계획된 궤적 (Planned Trajectory)
        • 차량이 따라야 할 미래의 시간-위치-속도-가속도 시퀀스
          • 예: 다음 5초 동안의 X, Y, 속도, 조향각 값의 리스트
      • 다음 행동 지침 (Next Action Command)
        • “속도 50km/h로 차선 유지”, “2초간 브레이크”, “좌회전 준비” 등 고수준 명령

5. 실제 주행 시나리오별 판단 전략 예시

5.1. 차선 유지 주행 시나리오

  • 인지
    • 차선 인식 모듈에서 현재 주행 차선의 좌/우 경계선을 인식
    • 차량의 차선 중앙으로부터의 편차 계산
  • 판단
    • 상황 분석
      • 현재 차선 내부이며,
      • 차량이 약간 좌측으로 치우쳐 있음을 파악
    • 예측
      • 차선 내에서 안전하게 주행 중이므로
      • 주변 차량의 급작스러운 움직임은 예측하지 않음
    • 경로 계획
      • 현재 차선의 중앙을 따라가는 부드러운 궤적 생성
    • 행동 결정
      • “차선 유지(Lane Keeping)” 명령을 내림
  • 제어
    • 생성된 궤적을 따라 조향각과 속도를 미세하게 조정하여 차량을 차선 중앙으로 유도

5.2. 앞차와의 간격 유지 시나리오

  • Adaptive Cruise Control(ACC)

  • 인지
    • 객체 탐지 모듈에서 전방의 차량을 인식하고
    • 라이다/레이더로 앞차와의 정확한 거리와 상대 속도를 측정
  • 판단:
    • 상황 분석
      • 앞차가 존재하며
      • 현재 설정된 안전거리보다 가까워지고 있음을 파악
    • 예측
      • 앞차의 속도 변화(감속/가속) 예측
    • 경로 계획
      • 앞차와의 안전거리를 유지하면서 따라가는 궤적 생성
    • 행동 결정
      • “차간 거리 유지(Follow Lead Car)” 명령을 내림
      • 앞차와의 간격이 줄어들면 감속, 늘어나면 가속 명령을 추가
  • 제어
    • 계산된 목표 속도에 따라 가속/감속 페달 조절

5.3. 신호등 교차로 정지/진입 시나리오

  • 인지
    • 신호등 인식 모듈에서 전방 신호등의 위치와 색상(빨간불)을 인식
    • 동시에 객체 탐지로 교차로 내 차량/보행자 유무를 파악
  • 판단
    • 상황 분석
      • 전방 신호등이 ‘빨간불’이고,
      • 차량이 ‘정지선’에 접근하고 있으며,
      • 교차로 내에 다른 차량이나 보행자는 없음을 파악
    • 예측
      • 신호등이 곧 초록불로 바뀔 가능성은 낮으며,
      • 주변 차량의 급정거는 없을 것으로 예측
    • 경로 계획
      • 정지선 직전에 안전하게 정지하는 궤적 생성
    • 행동 결정
      • “정지(Stop)” 명령을 내림
  • 제어
    • 생성된 궤적에 따라 브레이크를 조작하여 차량을 감속하고
    • 정지선에 부드럽게 정차시킴

6. 도전 과제 및 고려 사항

  • 불확실성 관리
    • 센서 데이터의 노이즈, 예측 불가능한 사람의 행동, 날씨 변화 등 다양한 불확실성 속에서 견고한 결정을 내리는 것이 중요
  • 안전성 및 신뢰성
    • 모든 잠재적 위험 상황(예: 센서 고장, 소프트웨어 버그)에서도 차량이 안전을 최우선으로 확보할 수 있는 판단을 내려야 함
    • Fail-safe, Fallback Plan
  • 윤리적 딜레마
    • 회피할 수 없는 사고 상황(예: 보행자 vs. 운전자 보호)에서 누구를 우선시할 것인가에 대한
    • 윤리적, 사회적 합의 및 알고리즘 구현 문제 잔존
  • 연산 효율성
    • 실시간 주행 환경에서 방대한 인지 정보를 분석하고 복잡한 경로를 계획하며 행동을 결정하는
    • 모든 과정이 수 밀리초(ms) 이내에 이루어져야 함
  • 다양한 상황 대응
    • 극단적인 날씨, 비포장 도로, 예기치 않은 교통상황 등 무한히 많은 상황에 대한 대응 전략 구축이 어려움
  • “인지 결과 기반 판단 전략”은 자율주행차의 심장부와 같음
    • 인지 모듈이 제공하는 원천 정보를 지능적으로 해석하고, 미래를 예측하며, 안전하고 효율적인 방식으로 목표를 달성하기 위한 최적의 행동과 경로를 결정함
  • 이 판단 단계에서 결정된 계획된 궤적행동 명령은 곧바로 제어(Control) 모듈로 전달됨
    • 제어 모듈은 이 명령들을 받아 차량의 실제 하드웨어(모터, 브레이크, 조향 장치)를 움직여 차량을 물리적으로 제어함