반응형
안녕하세요! ✨
앞서 Day 3에서는 RViz를 통해 LiDAR 데이터를 시각화했었죠.
오늘은 한 단계 더 나아가 Python을 활용해 LiDAR 데이터를 이용한 장애물 거리 측정을 직접 실습해보겠습니다.
🔍 장애물 거리 측정의 개념
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()
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)에서 데이터를 받아와 동일한 방식으로 처리할 수 있습니다.
🛠 응용 아이디어
- 안전 거리 경고 시스템: 일정 거리 이내로 물체가 감지되면 경고 메시지 출력
- 자율주행 시뮬레이션 연동: CARLA, Autoware와 연동해 실시간 장애물 회피 구현
- 주차 보조 기능: 초음파 센서 대신 LiDAR로 근거리 주차 거리 계산
📌 정리
- LiDAR 데이터는 Python으로 간단히 처리 가능
- 전방 영역의 최소 거리를 계산하면 장애물 탐지 가능
- 시각화를 통해 결과를 직관적으로 확인
반응형
🚀 다음 글 예고
다음 글에서는 [Day 5: LiDAR 데이터 전처리 (노이즈 제거, 다운샘플링)] 을 다룹니다.
실제 LiDAR 데이터에는 잡음이 많기 때문에, 데이터를 깨끗하게 정제하는 과정이 꼭 필요합니다.
✅ 오늘 글이 도움이 되셨다면 좋아요와 공유 부탁드립니다.
반응형
'자율주행' 카테고리의 다른 글
🚗 Day 6: Radar 기본 원리 (FMCW, Doppler 효과) (0) | 2025.09.02 |
---|---|
🚗 Day 5: LiDAR 데이터 전처리 (노이즈 제거, 다운샘플링) (0) | 2025.09.01 |
🚗 Day 3: ROS2에서 LiDAR 데이터 시각화 (RViz 실습) (0) | 2025.08.30 |
🚗 Day 2: 점군(Point Cloud) 데이터 구조 학습 (0) | 2025.08.29 |
🚗 Day 1: LiDAR 기본 원리 (TOF, 스캐닝 방식) 이해 (0) | 2025.08.28 |