Perception(인식) 파이프라인 개요: 객체 검출, 차선 인식, Free Space

대상: 자율주행 시스템에서 인식(Perception) 단계의 전체 흐름을 이해하고 싶은 개발자
환경: ROS/ROS2 기반 자율주행 스택 (Camera, LiDAR, Radar 센서 사용)


1. 문제/주제 요약

자율주행 시스템의 Perception(인식) 단계는
센서 데이터를 이용해 주변 환경을 이해하는 역할을 합니다.

즉,

  • 어떤 물체가 있는지(객체 검출),
  • 도로가 어디까지인지(차선 인식, Free Space),
  • 신호등/표지판 등 주행에 영향을 주는 요소를
    자동으로 인식해 Planning(경로 계획) 단계에 전달합니다.

이 글에서는 자율주행 Perception 파이프라인의 전체 구조와
주요 구성 요소(객체 검출, 차선 인식, Free Space Detection)를 간단히 정리합니다.


2. 인식 파이프라인의 전체 구조

Perception 시스템은 일반적으로 다음 5단계로 구성됩니다:

[Raw Sensor Data]
        ↓
1️⃣ Sensor Fusion (센서 통합)
        ↓
2️⃣ Object Detection (객체 검출)
        ↓
3️⃣ Lane Detection (차선 인식)
        ↓
4️⃣ Free Space Detection (주행 가능 영역)
        ↓
5️⃣ Tracking & Classification (객체 추적 및 분류)

각 단계는 서로 의존하며, 결과는 주로 ROS2의 topic 형태로 발행됩니다.
예:

  • /perception/object_detection
  • /perception/lane_markings
  • /perception/freespace

3. 주요 구성 요소

(1) 객체 검출 (Object Detection)

목적: 차량, 보행자, 자전거 등 동적인 객체를 인식

입력: Camera 영상, LiDAR 포인트 클라우드
출력: 객체의 위치, 크기, 속도 정보 (bounding box 형태)

유형예시 알고리즘/모델설명
Camera 기반YOLOv8, SSD, Faster R-CNN이미지에서 2D 박스로 객체 검출
LiDAR 기반PointPillars, CenterPoint포인트 클라우드에서 3D 박스 생성
Sensor Fusion 기반AVOD, BEVFusionLiDAR+Camera 결합으로 인식 정확도 향상

ROS2 예시 토픽:

/perception/object_recognition/objects

출력 메시지 예시:

id: 12
type: "car"
position: [123.4, 45.6, 0.0]
velocity: [1.2, 0.0, 0.0]
bbox: [width: 2.0, length: 4.5, height: 1.6]

(2) 차선 인식 (Lane Detection)

목적: 도로 상의 차선, 도로 경계선(lane boundary)을 검출
입력: Camera 영상 (주로 front view)
출력: 각 차선의 위치, 곡률, 차선 타입 (solid, dashed 등)

방법설명대표 모델
Classical VisionCanny + Hough Transform간단하지만 조명에 약함
Deep Learning 기반CNN/Segmentation 모델 (e.g. LaneNet, SCNN, UltraFast)Robust한 학습 기반 검출
LiDAR 기반intensity map + clustering차선이 흐릿한 환경에서 보조로 사용

예시 결과 (2D 영상 상에 표시):

Lane 1: Polynomial(y) = a*y^2 + b*y + c
Lane 2: Polynomial(y) = ...

ROS2 예시 토픽:

/perception/lane_marker_array

(3) Free Space Detection (주행 가능 영역)

목적: 차량이 실제로 주행할 수 있는 안전한 공간 영역을 검출
입력: LiDAR PointCloud, Camera, Depth Map
출력: Free Space Polygon (2D/3D 형태)

접근 방식설명대표 예시
LiDAR 기반포인트 높이 분석 (ground segmentation)Ground plane fitting (RANSAC, Patchwork++)
Camera 기반이미지 분할(Semantic Segmentation)DeepLab, SegNet, BEVDepth
Fusion 기반LiDAR ground + Camera texture 결합Autoware freespace_detector

예시 ROS2 메시지:

header:
  frame_id: "base_link"
polygons:
  - points: [[1.0, 2.0], [2.5, 3.0], [3.0, 1.5]]

이 결과는 Planning 모듈에서 “이 영역 안에서만 경로 생성” 하는 제약으로 사용됩니다.


(4) Tracking & Classification

목적: 시간적으로 객체의 움직임을 추적하고 일관된 ID를 부여
주요 기법:

  • Kalman Filter / JPDA / DeepSORT
  • Re-ID 기반 Tracking (영상 시퀀스에서 ID 유지)
  • Multi-object tracking (MOT)

ROS2 예시 토픽:

/perception/tracked_objects

4. 실제 ROS2 인식 파이프라인 예시 (Autoware.ai / Autoware.universe 기준)

/sensing/camera → image_rectified → object_detector
/sensing/lidar → pointcloud_preprocessor → lidar_centerpoint
/perception → object_fusion → object_tracker → perception_result

토픽 흐름 예시:

/camera_front/image_raw
    ↓
/object_detection/objects
    ↓
/object_tracker/tracked_objects
    ↓
/planning/scenario_planning

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

  • 센서 동기화 실패 → 객체 검출과 FreeSpace 불일치 발생
  • ROI 설정 오류 → 차선 인식이 엉뚱한 부분을 인식함
  • Free Space Polygon 좌표계 오류 → Path Planner가 “invalid polygon” 에러 발생
  • 객체 분류 오탐 → Tracking 단계에서 ID 혼동으로 이어짐

🔧 Tip: Perception 결과는 시각화 도구(rviz2, foxglove, Autoware GUI)로 항상 검증하세요.


6. 정리

Perception 파이프라인은 자율주행의 눈과 같습니다.
센서 데이터에서 **“주행 가능한 환경 모델”**을 만드는 핵심 단계로,
다음 3가지 요소가 특히 중요합니다:

  1. 객체 검출 (Object Detection) – 무엇이 있는가?
  2. 차선 인식 (Lane Detection) – 도로 구조는 어떤가?
  3. Free Space Detection – 어디까지 갈 수 있는가?

이 세 요소가 결합되어야 차량이 안전하고 합리적인 주행 판단을 할 수 있습니다.

댓글 남기기