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