HD Map 기본 개념: 차선, 차로, 정지선, 교차로 정보를 어떻게 담는가

대상: 자율주행이나 로보틱스 분야에서 HD Map 구조를 이해하고 싶은 개발자
환경: ROS/ROS2 기반 자율주행 시스템, OpenDrive/Autoware HD Map 포맷 사용 환경


1. 문제/주제 요약

자율주행 시스템은 단순한 GPS 지도보다 훨씬 정밀한 “HD Map (High Definition Map)”을 사용합니다.
이 지도는 도로 구조, 차선, 차로, 정지선, 교차로 등 주행에 직접적인 영향을 미치는 정보를 cm 단위로 담고 있습니다.

이 글에서는 HD Map이 실제로 어떤 정보를 어떻게 표현하는지, 차선/차로/정지선/교차로가 각각 어떤 구조로 저장되는지를 정리합니다.


2. 원인/배경 설명

자율주행 차량은 인식(Sensor)만으로 모든 환경을 판단하기 어렵습니다.
특히 다음과 같은 이유로 HD Map이 필요합니다:

  • 센서 인식의 한계 보완: 차선이 지워지거나 교차로가 복잡한 경우, 지도 기반 정보가 판단 기준이 됩니다.
  • 정밀한 위치 추정(Localization): 차량은 GPS + Lidar + HD Map을 결합하여 자신의 위치를 수 cm 오차로 추정합니다.
  • 경로 계획(Planning) 기반: 차량이 어느 차로를 따라 주행해야 하는지, 어떤 차선에서 좌회전 가능한지 등은 HD Map 데이터로부터 파생됩니다.

HD Map은 이러한 정보를 **객체 단위(Entity-based)**로 저장합니다.
즉, 단순히 도로를 한 장의 이미지처럼 표현하는 것이 아니라,
도로를 구성하는 요소(차로, 정지선, 교차로 등)를 각각 ID를 가진 객체로 구조화합니다.


3. HD Map 데이터 구조 (요소별 설명)

HD Map은 일반적으로 Lane, Waypoint, StopLine, Intersection 등의 객체로 구성됩니다.
대표적인 포맷은 OpenDrive, Lanelet2, Autoware Vector Map 등이 있습니다.

아래는 각 요소가 어떤 정보를 담는지 예시로 보여줍니다.


(1) 차선(Lane / Lanelet)

  • 기본 단위: 차량이 실제로 주행하는 ‘길의 한 줄기’.
  • 주요 정보
    • id: 차선 고유 ID
    • left/right boundary: 차선 경계선 좌표 리스트
    • centerline: 중앙선 좌표 리스트 (polyline 형태)
    • successor/predecessor: 이전/다음 차선 연결 관계
    • type: 일반, 버스전용, 좌회전전용 등
    • speed_limit: 해당 차선의 제한속도

예시 (Lanelet2 YAML 구조 일부):

lanelet_id: 1025
left_boundary: [[123.4, 45.6, 0.0], [124.0, 46.0, 0.0]]
right_boundary: [[122.8, 45.6, 0.0], [123.5, 46.0, 0.0]]
centerline: [[123.1, 45.6, 0.0], [123.8, 46.0, 0.0]]
successor: [1026]
speed_limit: 60
type: driving

(2) 차로(Road / LaneGroup)

  • **차로(lane group)**는 여러 차선이 모인 도로 구간을 의미합니다.
  • 예를 들어, 왕복 4차선 도로(2개씩 양방향)는 하나의 Road에 여러 Lane이 속합니다.
  • 주요 정보
    • id: 도로(차로 그룹) ID
    • lanes: 포함된 차선들의 ID 리스트
    • junction: 교차로 연결 여부
    • road_type: 고속도로, 일반도로 등

예시 (OpenDrive XML 일부):

<road id="101" junction="-1">
  <type>town</type>
  <lanes>
    <laneSection>
      <lane id="-1" type="driving">...</lane>
      <lane id="1" type="driving">...</lane>
    </laneSection>
  </lanes>
</road>

(3) 정지선(StopLine)

  • 정의: 차량이 신호 대기나 교차로 진입 전에 멈춰야 하는 선.
  • 연결 정보
    • 어느 차선에 속하는지 (lane_id)
    • 어떤 신호등(signal)과 연결되는지 (signal_id)
    • 위치 좌표 (line start, line end)

예시 (Autoware Vector Map CSV 형식):

stop_line_id, lane_id, start_x, start_y, end_x, end_y
501, 1025, 123.8, 46.2, 124.2, 46.2

(4) 교차로(Intersection / Junction)

  • 정의: 여러 차로가 만나는 공간으로, 차량의 이동 가능한 경로가 다양해지는 영역.
  • 주요 정보
    • id: 교차로 ID
    • incoming_lanes: 교차로로 진입하는 차선들
    • outgoing_lanes: 교차로에서 나가는 차선들
    • signal_groups: 해당 교차로에 설치된 신호등 그룹
    • shape: 교차로 영역을 다각형으로 표현

예시 (Lanelet2):

intersection_id: 12
incoming_lanes: [1025, 1026]
outgoing_lanes: [1031, 1032]
signal_groups: [45, 46]
polygon: [[123.8,46.1], [124.3,46.2], [124.1,46.6], [123.7,46.5]]

4. 추가 팁 / 자주 하는 실수

  • **차선(Lane)**과 **차로(Road)**를 혼동하기 쉽습니다.
    • Lane: 차량 1대가 주행하는 실제 경로 단위
    • Road: 여러 Lane이 모인 도로 구간 단위
  • 정지선은 신호등과 반드시 연결되어야 합니다. 그렇지 않으면 차량이 정지 위치를 계산하지 못합니다.
  • 좌표계 주의:
    • OpenDrive: 전역 좌표(WGS84) 기반
    • Autoware Vector Map: 로컬 좌표(East-North-Up, ENU) 기반
  • 교차로 영역이 누락되면 경로 생성 시 차량이 “길이 끊김” 현상을 보일 수 있습니다.

5. 정리

HD Map은 자율주행의 핵심 기반으로,
도로를 객체 단위로 구조화(차선, 차로, 정지선, 교차로 등) 하여 정밀한 주행 판단에 활용합니다.

각 객체는 좌표 정보와 상호 연결 관계를 포함하며,
센서 인식과 함께 사용될 때 안정적인 자율주행을 가능하게 합니다.

댓글 남기기