← 프로젝트 목록으로

Puzzy AI in Unity

기본 정보

사용 언어
C#Unity
포지션
클라이언트
기간
2022.03 ~ 2022.06
팀 / 개인
팀
깃허브 링크
GitHub에서 보기 →

프로젝트 소개

Unity ML-Agents로 가상공간에서 학습시킨 자율주행 AI를 실제 RC카에 이식하는 팀 프로젝트입니다. 가상의 주행 학습 결과를 현실의 하드웨어로 옮기는 것을 목표로 했습니다.

프로젝트 구성

  • 가상 주행 환경

    • 클라이언트 개발 담당으로 현실공간과 유사한 가상 주행 환경 제작
  • 차량 오브젝트

    • 초기에는 Wheel Collider 4개에 모터 토크·조향각을 부여하는 물리 기반 차량으로 구현
    • 학습 안정성과 제어 단순화를 위해 최종적으로는 Transform 기반 직진·회전 이동으로 단순화
  • AI 학습

    • ML-Agents로 타겟·자기 위치와 속도를 관측해, 타겟에 도달하면 보상을 받고 에피소드가 종료되도록 학습
    • 벽에 충돌하면 에피소드를 종료해 처음부터 재시도하도록 구성
  • 하드웨어 제작

    • 아두이노 키트로 RC카를 직접 제작하고 회로 구성
  • Unity-아두이노 연동

    • System.IO.Ports를 이용한 C# 시리얼 통신으로 아두이노와 Unity를 직접 연결해, 구버전 전용 연동 모듈(Ardunity)의 버전 호환 문제를 해결

세부 설계

  • 차량 제어 방식 변경

    • 초기 버전은 WheelCollider 4개에 모터 토크와 조향각을 부여하는 실제 자동차 물리로 구현
    • 학습 중 물리 거동이 불안정해, 최종 버전은 Transform을 직접 이동·회전시키는 단순한 제어 방식으로 교체
  • ML-Agents 학습 구성

    • 관측값으로 타겟 좌표, 에이전트 좌표, 속도(x, z)를 사용
    • 이산 행동(전진/후진/좌회전/우회전)을 받을 때마다 대응하는 문자를 시리얼로 함께 전송해, 학습 중에도 실차가 같은 동작을 따라가도록 구성
    • 타겟과의 거리가 임계값 이내면 보상을 주고 에피소드를 종료, 벽 충돌 시에도 에피소드를 종료해 다음 시도로 넘어가도록 처리