자율주행

🤖 Day 20: ROS2에서 간단한 센서 데이터 융합 실습

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

안녕하세요! ✨
앞서 Day 19에서는 Kalman Filter를 활용한 센서 퓨전 개념을 소개했습니다.
오늘은 ROS2 환경에서 LiDAR와 Camera 센서를 융합하는 간단한 실습을 진행해보겠습니다.

ROS2에서 간단한 센서 데이터 융합 실습


🔍 센서 융합 실습 개요

자율주행차는 하나의 센서만 사용하지 않고, 여러 센서 데이터를 동시에 받아들여 융합합니다.
ROS2에서는 이 과정을 노드(Node)와 토픽(Topic)을 통해 구현할 수 있습니다.

  • LiDAR → 장애물의 3D 위치 정보
  • Camera → 시각적 객체 인식 정보
  • 융합 → Camera가 인식한 객체를 LiDAR의 거리 정보와 결합해 더 정확한 결과 생성

⚙️ ROS2 센서 융합 흐름도

  1. LiDAR 노드 → /lidar_points 토픽 퍼블리시
  2. Camera 노드 → /camera_detections 토픽 퍼블리시
  3. Fusion 노드 → 두 데이터를 구독(Subscribe) 후 융합 → /fusion_result 퍼블리시

🧑‍💻 ROS2 Fusion 노드 예제 (Python)

 
python
 
import rclpy
from rclpy.node import Node
from sensor_msgs.msg import PointCloud2, Image
from std_msgs.msg import String

class FusionNode(Node):
    def __init__(self):
        super().__init__('fusion_node')
        self.sub_lidar = self.create_subscription(PointCloud2, '/lidar_points', self.lidar_callback, 10)
        self.sub_camera = self.create_subscription(Image, '/camera_detections', self.camera_callback, 10)
        self.publisher_ = self.create_publisher(String, '/fusion_result', 10)

        self.lidar_data = None
        self.camera_data = None

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

    def camera_callback(self, msg):
        self.camera_data = msg
        self.fuse_data()

    def fuse_data(self):
        if self.lidar_data and self.camera_data:
            result = "Fusion: Camera + LiDAR data combined"
            self.publisher_.publish(String(data=result))
            self.get_logger().info(result)

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

if __name__ == '__main__':
    main()
 

👉 위 예시는 단순히 Camera와 LiDAR 데이터를 동시에 받으면 문자열로 “Fusion 완료” 를 퍼블리시하는 코드입니다.
실제 프로젝트에서는 객체 인식 좌표(Camera)와 거리 정보(LiDAR) 를 매칭하는 로직이 들어갑니다.


📊 RViz2에서 결과 확인

  • /lidar_points 와 /camera_detections 를 동시에 시각화
  • /fusion_result 토픽을 출력해 융합 상태 확인

🚘 응용 포인트

  • 보행자 인식 강화: Camera 객체 인식 + LiDAR 거리 정보
  • 차량 추적: Camera 차종 분류 + Radar 속도 정보
  • 주차 보조: 초음파 센서 + Camera 결합

👉 센서 융합은 자율주행의 정확성과 안전성을 높이는 핵심 기술입니다.


📌 정리

  • ROS2에서 여러 센서를 구독하고 하나의 노드에서 융합 가능
  • Python 코드로 Fusion 노드 구현 → /fusion_result 퍼블리시
  • 실제 응용에서는 Camera 좌표와 LiDAR 거리 정보를 매칭해 활용

🚀 다음 글 예고

다음 글에서는 [Day 21: 기본 칼만필터 (선형 KF 수학적 유도)] 를 다룹니다.
Kalman Filter의 수학적 원리를 단계별로 유도하면서, 센서 융합에 어떻게 적용되는지 정리해드리겠습니다.


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

반응형