Unity 검색

Made with Unity: ML-Agents를 활용한 축구 로봇

2021년 8월 6일 게임 | 8 분 소요
Picture of lego ML/AI agents
Picture of lego ML/AI agents
공유

Is this article helpful for you?

Thank you for your feedback!

Made with Unity: AI 시리즈에서는 크리에이터들이 유니티의 인공지능 제품으로 제작한 다양한 용도의 Unity 프로젝트를 소개합니다. 이번 사례에서 소개되는 AI 개발자들은 ML-Agents를 이용해 쉽고 빠르게 머신러닝 환경을 구축하여 에이전트에게 축구를 가르쳤으며, 해당 에이전트를 실제 로봇에 전달해 최종 모델을 구현했습니다. 

Unity ML-Agents(Machine Learning Agents Toolkit)는 사용자가 Unity를 이용해 쉽게 RL(강화 학습)을 시작할 수 있도록 지원합니다. ML-Agents는 사용자가 RL을 시작하는 데 이용할 수 있는 다양한 샘플 환경과 모델 아키텍처를 제공합니다. 사용자는 하이퍼 파라미터를 조정하여 최종 모델을 실험하고 개선할 수 있습니다. 이 모든 작업을 수행하는 동안 Unity 환경을 생성하거나 에셋을 임포트하지 않아도 되며, 당장 코딩할 필요도 없습니다. 일본 Ghelia Inc.에서 진행된 이번 프로젝트에서는 ML-Agents 축구 환경을 이용하여 에이전트에게 축구를 훈련시켰습니다. 훈련을 통해 확보한 RL 모델을 실제 소니 toio 로봇에 배포하여 축구를 시켰습니다. 이는 ML-Agents를 이용하여 훈련시킨 로보틱스를 사용해 시뮬레이션을 현실 세계에 구현한 흥미로운 사례입니다.

유니티는 Ghelia의 CEO 겸 회장인 시미즈 료, 혁신 및 브랜드 전략 부서의 리드 프로그래머인 후루카와 히데카즈, 혁신 및 브랜드 전략 부서의 혁신 부문 매니저인 우치다 마사토시와 인터뷰하여 이번 프로젝트를 제작하게 된 계기를 알아보았습니다. 개발자들이 어떻게 ML-Agents 툴킷을 사용하여 실제 로봇에게 축구를 가르쳤는지, 골프공이 이번 시나리오에 적합했던 이유는 무엇인지 살펴보세요.

ML-Agents와 소니 toio를 이용한 로봇 축구

Made with unity logo

프로젝트를 제작하게 된 계기가 무엇인가요?

Ghelia는 강화 학습 애플리케이션이 주력인 회사입니다. Ghelia의 설립자인 기타노 히로아키는 RobocupSoccer를 시작했으며 소니에서 AIBO를 개발했습니다. 저희 팀은 앞서 에어 하키 데모를 제작한 적이 있었지만, 여러 다양한 컴포넌트로 구성되어 휴대성이 다소 떨어졌습니다. 고객에게 강화 학습에 대해 설명할 수 있는 다른 데모를 만들자는 논의를 했고, 휴대하기 간편한 데모를 만들기로 의견이 일치하게 되었습니다. ML-Agents에 이미 축구 환경이 있었기 때문에, 작고 휴대가 간편한 소니 toio 로봇을 이용해 축구 경기를 제작하는 것이 가장 합리적이었고, 바이럴 콘텐츠로 이어질 수도 있는 방안이었습니다.

Picture of square MLA soccer demonstration with a 3d rendering of a soccer arena

ML-Agent 모델을 어떻게 실제 로봇에 전달했나요?

실제 로봇에 강화 학습을 적용하려면 해당 로봇이 시뮬레이션 환경에 존재해야 합니다. 다행히 toio에는 Unity용 toio SDK라는 시뮬레이터가 이미 마련되어 있었습니다. 시뮬레이터에 ML-Agents 패키지를 추가하여 바로 훈련에 이용할 수 있었습니다. toio SDK가 Unity용 로봇 모델을 제공해 주었지만 공 모델은 직접 만들어야 했습니다. 그래서 Unity의 물리 엔진을 사용하여 시뮬레이터에서 공을 다시 제작했으며, 시뮬레이션 결과와 일치하는 실제 공을 찾아야 했습니다. 이 과정에서 골프공을 사용했을 때 훈련 결과를 반영하는 실제 결과를 얻을 수 있다는 것을 알게 되었습니다. 공의 위치는, 시뮬레이션에서는 Unity 트랜스폼 값으로, 실제 환경에서는 OpenCV와 카메라를 이용한 이미지 인식으로 탐지했습니다.

MLA soccer demonstration with lego piece robots

시뮬레이션을 실제 세계에 구현하기 위해 어떤 하드웨어 세팅을 사용했나요?

골프공으로 축구공을 나타냈으며, 인식률을 높이기 위해 공을 빨간색으로 칠했습니다. 놀랍게도 iPhone 한 대와 내장된 카메라만으로 공을 탐지하고, 4대 4 축구 경기를 펼치는 로봇 8대를 모두 제어할 수 있었으며, ML-Agents 모델을 이용해 추론(inference)을 수행할 수 있었습니다.

Demonstration of ML-Agents soccer with a soccer layout and lego ML agents and a red golf ball as the soccer ball

보상 함수는 어떻게 설계했나요?

처음에는 자책골이 많았으므로 자책골에 대해 부정적인 보상을 제공하려 했습니다. 하지만 그렇게 하자 골키퍼가 공을 막으려고 하지 않았습니다. 공을 이동시키는 것에 대해 긍정적인 보상을 제공했더니, 두 팀 모두 단순히 전진과 후진을 반복하며 공을 골대에 넣지 않고 시간만 끌었습니다. 최종적으로는 상대편 골대에 공을 넣으면 1점을 보상하고, 상대편의 득점을 허용하면 1점을 차감하기로 했습니다.

이번 프로젝트에서 가장 어려운 점은 무엇이었나요?

실제 로봇이 시뮬레이션만큼 제대로 작동하지 않는 이유를 알아내기가 어려울 때가 있었습니다. 예를 들어, 약간 기울어진 바닥에서 로봇을 작동하는 바람에 추론이 실행되지 않는 경우도 있었습니다. 공이 시뮬레이션과 다르게 튀어 로봇들이 예상대로 반응하지 않기도 했습니다. 카메라의 위치 조정도 밀리미터 단위의 정밀도를 요구하는 상당히 민감한 작업이어서, 매일 행사 현장에서 이를 조정하기가 어려웠습니다. 모델에 주요한 개선사항을 적용할 때마다 약 3일 동안 훈련 세션을 가졌습니다. 결국 대략 여섯 번의 훈련 세션을 거쳐 최종 결과를 얻을 수 있었습니다.

가상 로봇은 서로 충돌해도 실제 타격을 입지 않지만, 실제 로봇은 서로 충돌할 경우 문제가 생길 수 있습니다. 이러한 문제는 어떻게 해결했나요?

ML-Agents 데모에서는 에이전트들이 골을 넣은 후 원래 위치에 자동 정렬되지만, 실제 로봇을 재배치하는 일은 간단하지 않았습니다. toio 간의 충돌을 방지하는 것 등 몇 가지 문제는 강화 학습만으로 해결하기 어려웠습니다. 초기에는 해당 시나리오에 대한 보상 함수를 설계하려고 했으나, 결국 휴리스틱 방식으로 해결했습니다.

Gif of MLA agent simulation of playing soccer

프로젝트의 소스 코드가 제공되나요? 또한 프로젝트에 대한 추가 정보를 얻을 수 있나요?

수요가 있다면 이번 프로젝트를 오픈 소스로 전환하는 방안을 기꺼이 고려할 것입니다. 프로젝트에 대한 자세한 정보는 Ghelia 블로그 포스팅(일본어)에서 확인할 수 있습니다.

프로젝트에 머신러닝을 사용하고자 하는 Unity 크리에이터에게 도움이 될 만한 조언을 해주실 수 있을까요?

AI, 특히 딥러닝은 매력적이지만 제대로 이해하기 어렵습니다. 안타깝지만 직접 활용해 보기 전에는 그 아름다움과 복잡성을 온전히 파악할 수 없으므로, 전 세계의 Unity 개발자들에게 머신러닝을 직접 활용해 보는 것을 권장합니다. 머신러닝 작업이 정말 재미있다는 사실을 강조하고 싶습니다. 게다가 Unity ML-Agents 시스템을 사용하면 머신러닝을 손쉽게 시작하고 프로젝트에 통합할 수 있습니다.

자세히 알아보기

지금 바로 Unity ML-Agents를 시작하거나 Unity Robotics 패키지에 대해 자세히 알아보세요. 여러 훈련 세션을 동시에 진행해야 하는 프로젝트인 경우, 유니티에 문의하여 ML-Agents Cloud에 대해 자세히 알아보세요.

후루카와 히데카즈가 집필한 Unity ML-Agents 실전 게임 프로그래밍(일본어)을 통해서도 ML-Agents를 이용한 강화 학습을 어떻게 시작하는지 자세히 알아볼 수 있습니다.

2021년 8월 6일 게임 | 8 분 소요

Is this article helpful for you?

Thank you for your feedback!