Skip to content

KSEB-4th-Project-3rd-Team/Unity_Web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AMR Warehouse RL — Unity ML‑Agents

실시간 물류창고 시뮬레이션에서 AMR(Autonomous Mobile Robot)의 경로 최적화·충돌 회피를 학습/운영하는 유니티 프로젝트입니다.
Unity + ML‑Agents(PPO) 기반의 강화학습 모드와, WMS 연동을 위한 시뮬레이션 모드(작업 큐·대기 위치 복귀·상태 머신)를 제공합니다.

주요 스크립트: AMR_Agent.cs, WarehouseEnvironment.cs, TaskManager.cs, TaskBridge.cs, AMRMonitorUI.cs
맵 구성: 텍스트 맵 → MapReader.cs/MapGenerator.cs로 레이아웃 생성


데모(개요)

  • 학습 모드: PPO로 단일→다중 AMR 커리큘럼 학습 (Easy→Medium→Hard, 임시 장애물/다중 AMR 점증).
  • 시뮬레이션 모드: WMS 지시(입·출고)를 받아 픽업→적재→드롭→하역→대기 위치 복귀까지 상태 기계로 수행.
image

기술 스택

  • Engine: Unity (URP 권장), C#
  • RL: Unity ML‑Agents (PPO)
  • Frontend 연동: WebGL 빌드 시 JS ↔ Unity 메시지 브리지(JavaScript interop, 문자열 JSON 교환) — WebSocket/HTTP 미사용
  • 데이터/맵: 텍스트 맵 파일(occupancy grid) → MapReader/MapGenerator로 동적 레이아웃 생성

폴더 구조

/Assets
  /ML-Agents            # 학습 설정 YAML (예: RemodelingAMR.yaml, GoodAMR.yaml)
  /Scenes               # 유니티 씬 (예: AMRScene)
  /Scripts
    MapReader.cs
    MapGenerator.cs
    /ML-Agents
      AMR_Agent.cs
      WarehouseEnvironment.cs
      TaskManager.cs
      TaskBridge.cs
      AMRMonitorUI.cs
  /StreamingAssets
    assign_task.csv     # 시뮬레이션 입력(입/출고 작업 큐)          

핵심 컴포넌트

1) WarehouseEnvironment

  • 난이도 파라미터(0~1) 로 활성 AMR 수, 임시 장애물, 스폰 지점 등을 제어
  • 랙 통로 좌표계(라인/폭), 입·출고 Transform, 통로 오프셋 정의
  • 유틸: 랜덤/최근접 랙 타깃 계산, 안전 스폰, 주변 AMR 탐색

2) AMR_Agent

  • 이산 행동 5종(정지/좌회전/직진/우회전/후진) + Heuristic
  • 관측: 자기 상태, 활성 목표(중간/최종), 통로 인덱스/일치 여부, 레이캐스트, 주변 AMR 정보(슬롯 고정)
  • 보상(개선형): 시간 패널티, 진행 보상(LoS 고려), 지터/왕복 억제, 목표 근접 회전 억제, 차선 활용/전환, 교착 처리, 효율 보너스
  • 시뮬레이션 모드 상태기계: Idle→Pickup→Loading→Dropoff→Unloading→Completed→Wait

3) TaskManager

  • CSV 또는 웹 입력 작업을 AMR별 큐로 분배(작업량/최근 타입 고려)
  • 중간→최종 목표 좌표 계산(랙 전면 오프셋), 완료 통계(평균/최대/최소 처리시간)
  • 상태: pending / queued / assigned / in_progress / completed

4) TaskBridge (WebGL)

  • 프런트엔드 ↔ 유니티 양방향 브리지
    • 수신: AssignTaskFromJson(string) (type: INBOUND/OUTBOUND, rackId)
    • 발신: TaskRegistered / TaskStarted / TaskCompleted / TaskError / SystemStatus 이벤트(JSON 문자열)
  • 구현은 JavaScript interop 기반(HTTP/WebSocket 사용 안 함)

5) AMRMonitorUI

  • AMR 버튼/정보 패널, 작업 큐 카운트, 진행중 작업 표시
  • 선택 AMR 화살표 및 목적지 마커 시각화

설치 & 실행

요구 사항

  • Unity 2022 LTS 이상 권장
  • Python 3.8+ (ML‑Agents 학습용)
  • mlagents, torch
# 가상환경 권장
pip install mlagents torch

프로젝트 열기

  1. Unity로 저장소 오픈 → Scenes/AMRScene 실행
  2. 하이어라키에서 환경 루트(WarehouseMap 등) 선택 → Difficulty(difficulty) 파라미터 확인

시뮬레이션 모드(운영 데모)

  • TaskManager 시뮬레이션 모드 활성 → StreamingAssets/assign_task.csv 로드
  • 재생(▶) → AMRMonitorUI에서 AMR 버튼 선택 후 상태/목적지 확인

학습 모드(ML‑Agents, PPO)

  1. TaskManager 시뮬레이션 모드 비활성(학습 간섭 방지)
  2. 학습 설정 YAML 선택(예: Settings/RemodelingAMR.yaml)
  3. 아래 명령으로 학습 시작:
mlagents-learn Settings/RemodelingAMR.yaml --run-id=RemodelingAMR_$(date +%Y%m%d_%H%M) --time-scale=20

커리큘럼은 환경 파라미터 difficulty 로 제어되며, 난이도 상승 시 AMR 수/임시 장애물이 점증합니다.


데이터 & 맵

  • map/의 텍스트 기반 레이아웃(occupancy grid)을 MapReader/MapGenerator가 파싱/생성하여 동일 규칙의 창고 배치를 재현합니다.
  • CBS(Conflict‑Based Search) 비교 실험과 동일 격자 환경을 유지하기 위한 용도입니다.

Web 커뮤니케이션(요약)

  • 브라우저(JS) → Unity: AssignTaskFromJson(json) 호출 (예: {"type":"INBOUND","rackId":"B03"})
  • Unity → 브라우저(JS): 이벤트(JSON 문자열) 전달 — TaskRegistered/Started/Completed/Error/SystemStatus
  • 네트워크 스택 없이 WebGL JS interop로만 동작합니다.

학습/평가 지표(권장)

  • 성공률, 충돌률, SPL, 평균 완료시간, 데드락률, Optimality Gap(CBS 최단경로 대비)
  • 고정 시드/스트레스/일반화 세트로 A/B(이전 GoodAMR vs 개선 RemodelingAMR) 비교 권장

씬/태그/레이어 팁

  • 주요 태그: Rack, Table, Wall, AMR, TempObstacle, Reprocessing
  • Physics Layer Collision Matrix를 이용해 AMR↔AMR 충돌을 단계적으로 허용/억제(커리큘럼 안정화)
  • RayPerceptionSensor3D를 사용할 경우 Detectable Tags/길이·각도를 장면 규모에 맞게 조정

로드맵

  • 8대 AMR 혼잡 구간 Deadlock 해소 정책 보강
  • 온·오프 정책 전환(학습/운영) 자동화
  • 성능 대시보드(프런트)와 TaskBridge 이벤트 시각화 확장

라이선스

본 프로젝트는 다음 오픈소스/패키지를 사용합니다.

  • Unity ML-Agents (com.unity.ml-agents) — Apache License 2.0
    ML-Agents C# 패키지 및 Python 툴킷(mlagents, mlagents-envs)을 포함

  • Unity Sentis (com.unity.sentis) — Unity Companion License (UCL)
    런타임 추론 백엔드

  • PyTorch — BSD 3-Clause License
    (학습 프레임워크)

  • TensorBoard — Apache License 2.0
    (로그 시각화)

  • (Python deps) numpy, protobuf, grpcio 등 — 각 라이선스는 아래 별도 파일 참조


문의

  • 시뮬레이션/작업 큐: TaskManager
  • Web 연동: TaskBridge
  • RL/에이전트: AMR_Agent, WarehouseEnvironment

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published