자율주행

📡 Day 29: Radar + LiDAR 융합 실습

Tech Knowledge Note 2025. 9. 25. 21:00
반응형

안녕하세요! ✨
앞서 Day 28에서는 LiDAR + Camera 융합 (Feature Matching) 을 다뤘습니다.
오늘은 또 다른 조합인 Radar + LiDAR 융합을 실습해보겠습니다.

Radar + LiDAR 융합 실습


🔍 Radar + LiDAR 융합의 필요성

  • Radar
    • 장점: 속도 추정(Doppler 효과), 악천후(비, 안개)에도 안정적
    • 단점: 해상도가 낮아 물체의 모양·위치 정밀도가 부족
  • LiDAR
    • 장점: 고해상도 3D 점군 데이터, 정밀한 거리·위치 정보 제공
    • 단점: 악천후 환경에 약함, 속도 측정 기능 부족

👉 따라서 두 센서를 융합하면:

  • Radar → 속도 및 강인성 제공
  • LiDAR → 위치 및 형상 정확도 보완

⚙️ ROS2 기반 융합 흐름

  1. Radar 노드 → /radar_points 퍼블리시
  2. LiDAR 노드 → /lidar_points 퍼블리시
  3. Fusion 노드 → 두 데이터를 결합하여 /fused_objects 퍼블리시

🧑‍💻 Python Fusion 노드 예제

python
 
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import PointCloud2
from custom_msgs.msg import RadarObject, FusedObjectArray

class RadarLidarFusion(Node):
    def __init__(self):
        super().__init__('radar_lidar_fusion')
        self.sub_radar = self.create_subscription(RadarObject, '/radar_points', self.radar_callback, 10)
        self.sub_lidar = self.create_subscription(PointCloud2, '/lidar_points', self.lidar_callback, 10)
        self.pub_fused = self.create_publisher(FusedObjectArray, '/fused_objects', 10)

        self.radar_data = None
        self.lidar_data = None

    def radar_callback(self, msg):
        self.radar_data = msg
        self.fuse_data()

    def lidar_callback(self, msg):
        self.lidar_data = msg
        self.fuse_data()

    def fuse_data(self):
        if self.radar_data and self.lidar_data:
            fused_msg = FusedObjectArray()
            fused_msg.header.stamp = self.get_clock().now().to_msg()
            # 단순화된 예제: 실제는 최근접 매칭 + EKF 추정 필요
            self.pub_fused.publish(fused_msg)
            self.get_logger().info("Radar + LiDAR Fused Objects published!")

def main(args=None):
    rclpy.init(args=args)
    node = RadarLidarFusion()
    rclpy.spin(node)
    node.destroy_node()
    rclpy.shutdown()

if __name__ == '__main__':
    main()

👉 실제 구현에서는 최근접 탐색(Nearest Neighbor) 또는 칼만필터(EKF) 기반 추정을 통해 Radar 속도 + LiDAR 위치를 결합해야 합니다.


📊 RViz2에서 확인

  • /radar_points : Radar 검출 물체 (속도 포함)
  • /lidar_points : LiDAR 점군 데이터
  • /fused_objects : 융합된 물체 추정 (위치 + 속도 포함)

🚘 자율주행 활용

  • 차량 및 보행자 추적: 속도 + 위치 동시 추정
  • 악천후 환경 대응: Radar의 강인성과 LiDAR의 정밀도를 동시에 활용
  • ADAS 시스템: 긴급 제동, 차간 거리 유지, 추돌 방지 기능 개선

📌 정리

  • Radar와 LiDAR는 서로 보완적인 센서
  • ROS2 기반으로 데이터 융합 시 더욱 정확하고 안정적인 인식 가능
  • 실제 구현에서는 센서 캘리브레이션 + 추정 알고리즘이 핵심
반응형

🚀 다음 글 예고

다음 글에서는 [Day 30: 센서 융합 종합 프로젝트 (ROS2 기반)] 을 다룹니다.
앞서 학습한 LiDAR, Camera, Radar, IMU 센서를 종합적으로 융합해 하나의 프로젝트로 구현해보겠습니다.


✅ 오늘 글이 도움이 되셨다면 좋아요와 공유 부탁드립니다.

반응형