대상: 자율주행 시스템을 개발하거나 ROS 환경에서 센서 데이터를 통합하려는 개발자
환경: Ubuntu 22.04 / ROS2 Humble / 차량용 임베디드 환경
1. 문제/주제 요약
자율주행 차량은 주변 인식(Perception) 과 자기 위치 추정(Localization) 을 위해
여러 종류의 센서를 조합합니다.
대표적인 센서 4가지는 다음과 같습니다.
- 카메라 (Camera)
- LiDAR (Light Detection and Ranging)
- 레이더 (Radar)
- GPS/IMU (Global Positioning System / Inertial Measurement Unit)
이 글에서는 각각의 센서가 무엇을 보고, 어떤 역할을 하며,
ROS에서 어떻게 쓰이는지를 이해할 수 있게 정리합니다.
2. 전체 개념: 센서 융합 (Sensor Fusion)
자율주행 시스템의 센서 구성은 보통 다음과 같은 계층으로 나뉩니다.
| 역할 | 주요 센서 | 설명 |
|---|---|---|
| 인식 (Perception) | 카메라, LiDAR, 레이더 | 주변 객체 감지 및 거리 추정 |
| 위치 추정 (Localization) | LiDAR, GPS, IMU | 자기 위치 계산 |
| 제어/계획 (Control/Planning) | 모든 센서 종합 | 주행 경로 계산, 장애물 회피 |
즉, 한 가지 센서만으로는 완전한 인식이 불가능하고,
서로의 약점을 보완하는 구조로 설계됩니다.
3. 센서별 역할 및 특징
(1) 카메라 (Camera)
- 원리: 가시광선 이미지 촬영
- 출력: RGB 영상 (
sensor_msgs/Image) - 장점
- 높은 해상도 → 차선, 신호등, 표지판 인식 가능
- 객체 인식(딥러닝)과 궁합이 좋음 (YOLO, OpenCV, TensorRT 등)
- 가격이 저렴하고 설치 용이
- 단점
- 날씨/조명에 취약 (야간, 역광, 비, 눈 등)
- 깊이(거리) 정보 없음 → Stereo나 Depth Camera로 보완
- ROS 예시 노드
/camera/image_raw /camera_info - 대표 패키지
usb_cam,cv_camera,image_transport,camera_info_manager
💡 사용 포인트: 객체 인식, 차선 검출, 신호등 인식 등 “시각 정보” 중심의 인식에 사용
(2) LiDAR (Light Detection and Ranging)
- 원리: 레이저 펄스를 발사 후 반사 시간을 측정해 거리 계산
- 출력: 3D 점군 데이터 (
sensor_msgs/PointCloud2) - 장점
- 높은 거리 정밀도 (cm 단위)
- 360° 스캔 가능 → 주변 지도 생성 가능 (SLAM)
- 조명에 무관 (주간/야간 동일 성능)
- 단점
- 비/안개에 반사 손실 가능
- 장비 가격이 높고, 데이터량 많음
- ROS 예시 노드
/scan # 2D LiDAR /velodyne_points # 3D LiDAR - 대표 패키지
rplidar_ros,velodyne,ouster_ros,livox_ros_driver
💡 사용 포인트: 거리 기반 장애물 인식, 맵핑, SLAM, Localization
(3) 레이더 (Radar)
- 원리: 전자기파를 발사해 반사된 파동의 시간/주파수 변화를 측정
- 출력: 객체 거리 + 속도 정보
- 장점
- 비, 눈, 안개 등 악천후에도 안정적
- 속도 정보 직접 측정 가능 (도플러 효과 이용)
- 감지 거리 길다 (수십~수백 m)
- 단점
- 해상도 낮음 (물체 형태 파악 불가)
- 복잡한 환경에서는 반사파 혼선 가능
- ROS 예시 노드
/radar/points /radar/detections - 대표 패키지
continental_arxml,ainstein_radar,radar_msgs
💡 사용 포인트: 전방 충돌 감지, ACC(Adaptive Cruise Control), 속도 추정
(4) GPS + IMU (Localization 센서)
📍 GPS (Global Positioning System)
- 출력: 위도, 경도, 고도 (
sensor_msgs/NavSatFix) - 장점: 전 지구적 위치 정보 제공
- 단점: 실내/터널 등 위성 수신 불가 시 정확도 저하
⚙️ IMU (Inertial Measurement Unit)
- 출력: 가속도, 각속도, 자세 (
sensor_msgs/Imu) - 장점: 실시간 자세 변화 감지 가능
- 단점: 오차 누적 (드리프트 발생)
💡 GPS + IMU 융합(EKF)
→ GPS로 절대위치를 보정하고, IMU로 순간 움직임을 추적
→robot_localization패키지로 구현 가능
- ROS 예시 노드
/gps/fix /imu/data /odometry/filtered - 대표 패키지
nmea_navsat_driver,robot_localization,xsens_driver,microstrain_inertial_driver
4. 센서 융합 (Sensor Fusion)
(1) 목적
- 하나의 센서로는 신뢰도 확보 불가
- 센서 간 단점을 상호 보완
예:- 카메라가 신호등을 본다
- LiDAR가 거리 측정
- GPS/IMU가 차량 위치 추정
(2) ROS2에서의 융합 예시
- Perception layer
→vision_msgs,point_cloud_to_laserscan,lidar_camera_fusion - Localization layer
→robot_localization(ekf_localization_node,navsat_transform_node) - Planning/Control
→nav2,autoware.auto,lgsvl등에서 통합 처리
5. 비교 요약표
| 구분 | 카메라 | LiDAR | 레이더 | GPS/IMU |
|---|---|---|---|---|
| 데이터 형태 | 이미지 | 3D 점군 | 거리·속도 | 위치·자세 |
| 정밀도 | 중간 | 높음 | 낮음 | 위치 오차 있음 |
| 날씨 영향 | 큼 | 중간 | 작음 | GPS 의존 |
| 장점 | 시각 정보 | 거리 정확 | 악천후 강함 | 전역 위치 추정 |
| 단점 | 조명 의존 | 가격 비쌈 | 해상도 낮음 | 오차 누적 |
| 주요 용도 | 차선, 객체 | 맵핑, SLAM | ACC, 추돌 방지 | Localization |
| ROS 메시지 | Image | PointCloud2 | RadarDetection | NavSatFix, Imu |
6. 정리
- 자율주행 센서는 카메라·LiDAR·레이더·GPS/IMU로 구성되며,
각기 다른 특성을 가진 데이터를 융합해야 완전한 인식이 가능하다. - 카메라는 시각 인식, LiDAR는 정확한 거리, 레이더는 속도 추정,
GPS/IMU는 위치 추정 역할을 담당한다. - ROS에서는 각 센서의 데이터를 표준 메시지(
sensor_msgs)로 통합 처리할 수 있으며,robot_localization등으로 융합하여 자율주행의 핵심 기반을 구축한다.