- Unity ML-Agents로 미로·정적 장애물·실제 건물 복도 3종의 학습 환경을 구축하고, 실제 센서(VLP-16) 사양에 맞춘 LiDAR 시뮬레이션을 제작했습니다.
- 학습된 정책을 ONNX로 변환해 ROS 기반 실제 로봇에 전이하고, LiDAR 노이즈 주입과 Curriculum Learning으로 Sim-to-Real 간극을 줄였습니다.
- 최종적으로 약 50m 직선 복도 안정 주행에 성공 — 1차 실험 대비 주행 거리 약 6.7배.
STEP 1강화학습 환경 구축
실제 로봇에 사용할 Velodyne VLP-16 사양(채널 수, FOV, 거리 범위)에 맞춰 Unity에서 LiDAR를 직접 구현하고, 거리 값을 강화학습의 상태(state)로 사용했습니다. 학습 환경은 난이도 순서로 미로, 정적 장애물, 실제 연구실 건물 복도 세 가지를 제작했습니다.


STEP 2보상 설계와 학습 특성 분석
LiDAR 사용 여부, 주행 거리·시간, 충돌을 종합적으로 고려해 보상 함수와 종료 조건을 설계하고, 설계 변경이 학습에 미치는 영향을 보상 곡선으로 분석했습니다. 대표적으로, 매 스텝 음의 보상(-0.01)만 주면 에이전트가 에피소드를 빨리 끝내려고 고의로 충돌하는 문제를 발견했고, 에피소드 시간 제한(60초)으로 바꿔 학습 시간을 약 50% 단축하면서 수렴에 성공했습니다.
STEP 3Sim-to-Real 전이
학습된 정책을 ONNX 모델로 변환한 뒤 ROS(Ubuntu 18.04, Melodic) 노드로 감싸 실제 Husky A200을 제어했습니다. 초기에는 시뮬레이션과 실제 LiDAR의 차이로 주행이 금방 불안정해졌는데, 시뮬레이션 LiDAR에 Gaussian Noise를 주입하고 직선 → 교차로 → 실제 복도 순의 Curriculum Learning을 적용해 개선했습니다.


RESULT
- 약 50m 직선 복도 구간 안정 주행 성공 — 1차 실험 대비 주행 거리 약 6.7배
- 노이즈 주입 + Curriculum Learning으로 Sim-to-Real 전이 성능 개선을 정량 확인
DEMO시연 영상
실제 Husky A200 복도 자율주행 (1:30)
Unity 학습 과정 편집본 — 미로 · 장애물 · 복도 환경