자율주행

🚗 Day 4: LiDAR로 장애물 거리 측정 Python 실습

Tech Knowledge Note 2025. 8. 31. 21:00
반응형

안녕하세요! ✨
앞서 Day 3에서는 RViz를 통해 LiDAR 데이터를 시각화했었죠.
오늘은 한 단계 더 나아가 Python을 활용해 LiDAR 데이터를 이용한 장애물 거리 측정을 직접 실습해보겠습니다.

LiDAR로 장애물 거리 측정 Python 실습


🔍 장애물 거리 측정의 개념

LiDAR는 주변 환경을 수많은 점군(Point Cloud)으로 표현합니다.
이 점들 중 특정 방향(예: 전방 0~10도)에 존재하는 점까지의 최소 거리를 계산하면, 장애물과의 실제 거리를 구할 수 있습니다.

👉 이 개념은 충돌 방지, 경로 계획, 주차 보조 등 자율주행의 핵심 기능과 직결됩니다.


⚙️ Python으로 간단한 실습하기

여기서는 numpy 와 matplotlib 를 사용해 LiDAR 데이터를 처리하는 예제를 소개합니다.

python
 
import numpy as np
import matplotlib.pyplot as plt

# 예시: LiDAR에서 수집한 360도 거리 데이터 (단위: m)
lidar_data = np.random.uniform(1, 20, 360)  # 1~20m 사이 임의 데이터

# 전방 10도 범위(355도~5도)에 해당하는 거리값만 추출
front_angles = np.concatenate((lidar_data[355:], lidar_data[:6]))
min_distance = np.min(front_angles)

print(f"전방 장애물까지의 최소 거리: {min_distance:.2f} m")

# 시각화
angles = np.arange(0, 360)
plt.polar(np.deg2rad(angles), lidar_data, color='b', label='LiDAR Scan')
plt.polar(np.deg2rad([0]), [min_distance], 'ro', label='최소 거리')
plt.legend()
plt.show()

📌 코드 설명

  • 360도 LiDAR 데이터를 배열로 가정
  • 전방 10도 구간을 추출하여 최소 거리(min distance) 계산
  • Polar Plot(극좌표 그래프)으로 시각화

실제 환경에서는 ROS2 토픽(/scan 또는 /velodyne_points)에서 데이터를 받아와 동일한 방식으로 처리할 수 있습니다.


🛠 응용 아이디어

  1. 안전 거리 경고 시스템: 일정 거리 이내로 물체가 감지되면 경고 메시지 출력
  2. 자율주행 시뮬레이션 연동: CARLA, Autoware와 연동해 실시간 장애물 회피 구현
  3. 주차 보조 기능: 초음파 센서 대신 LiDAR로 근거리 주차 거리 계산

📌 정리

  • LiDAR 데이터는 Python으로 간단히 처리 가능
  • 전방 영역의 최소 거리를 계산하면 장애물 탐지 가능
  • 시각화를 통해 결과를 직관적으로 확인
반응형

🚀 다음 글 예고

다음 글에서는 [Day 5: LiDAR 데이터 전처리 (노이즈 제거, 다운샘플링)] 을 다룹니다.
실제 LiDAR 데이터에는 잡음이 많기 때문에, 데이터를 깨끗하게 정제하는 과정이 꼭 필요합니다.


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

반응형