상세 컨텐츠

본문 제목

Unity ML-Agents 설치 (release 18) 및 에러 대응 (input system, CS0234, active input handling)

Developer

by South Korea life 2021. 11. 24. 21:56

본문

728x90
반응형

올 해, 메타버스에 대해서 공부하고 난 이후로, Unity와 unreal engine에 대해서 많이 알아보게 되었습니다. 게임 그래픽 엔진으로만 생각했던 Unity와 unreal engine이 생각보다 사용성이 많았습니다. 그 이유는 아무래도, 게임 그래픽 엔진 그 자체도 점차 현실과의 괴리감을 줄이기위해서, 실제와 유사한 수준으로 엔진을 지속적으로 개발하기 때문이 아닌가 싶습니다. 또한, Unity에서 2017년 9월에 소개한 machine learning agents toolkit(ML-agents)machine learning을 연구/개발하는 사람들에게 좋은 시뮬레이션 도구로써 활용되어 왔습니다. 최근에, 저 역시도 Unity의 ML-agents toolkit을 활용하기 위해, 관련 환경을 구성 중입니다. 이번 글에서는 Unity ML-agents release 18 버전을 윈도우10 환경에서 설정하는 것에 대해서 알아보겠습니다. 

 

1. Unity 설치 (2019.4 이후 버전 설치)

Unity사이트에 접속해서, 자신에게 적합한 유형으로 다운을 받습니다. 각 유형에 대하여 이용요건이 명시되어 있으며, 이 이용요건을 확인하고 다운을 받으면 되겠습니다. 저의 경우, [개인-personal] 유형으로 다운받았습니다.
자신에게 해당하는 유형의 버튼을 클릭하면, 다운로드 창으로 넘어갑니다. 현재 쓰고 있는 컴퓨터의 운영체제에 맞는 Unity hub를 다운로드합니다. 만약, 특정 버전의 unity를 사용하고 싶다면, ‘다운로드 아카이브 방문’을 클릭하여 이동해서 원하는 버전을 다운받습니다. 다운로드 후, unity hub를 설치합니다. 
Unity ML-agents를 사용하기 위해서는 2019.4 버전 이후 버전만 사용가능하니 참고하시기 바랍니다.

Unity 설치 종류
Unity 2020.3.23f1 설치 화면

 

2. Python 설치 (3.6.1 버전 이상 설치)

2021년 11월 기준, 공식홈페이지를 참고해보면 python 3.6또는 3.7버전 설치를 권장하고 있습니다. 또한, 윈도우 사용자의 경우, x86버전이 아닌 x86-64 버전 설치를 권장하고 있습니다. 저의 경우, python 3.7.4 버전을 이전에 설치해놓아서, 이 부분은 skip했습니다. python 설치를 원하시는 분들은 아래 python 홈페이지에서 python을 다운받아 설치하시기 바랍니다.
https://www.python.org/downloads/

3. ML-Agents toolkit repository 복사하기

이 부분은 option이라고 공식 github페이지에 나와 있기는 하지만, 저는 개인적으로 ML-agents를 제대로 사용하실거라면 ML-agents github페이지에서 자신이 원하는 버전을 clone하기를 추천드립니다. 그 이유는, ML-agents toolkit의 repository에 참고할만한 code와 예제 환경들 및 training 구성들이 들어있기 때문입니다. ML-agents release18 버전을 clone하려면 아래와 같이 command창에 입력하면 됩니다.

git clone --branch release_18 https://github.com/Unity-Technologies/ml-agents.git​

 

4. ML-Agents 패키지 설치

1) Unity를 실행한 후, window 메뉴를 클릭하고 package manager를 클릭합니다. 
2) 잠시 후, package manager창이 뜨면, ‘+’ 버튼을 클릭하고 ‘Add package from disk’를 클릭합니다. 
3) Clone한 ML-agents release18폴더 내, com.unity.ml-agents 폴더로 들어갑니다.
4) package.json 파일을 선택하면, ML-agents release18이 설치됩니다.

Package Manager 선택 화면
Package Manager - Add package from disk
com.unity.ml-agents 폴더 내, package.json 파일 선택
ML Agents 설치 중 화면

 

5. ml-agents extentions 패키지 설치

com.unity.ml-agents 패키지 설치와 동일하며, json 파일 위치만 다릅니다. com.unity.ml-agents.extensions 폴더 내에 json파일을 선택하여, 설치해줍니다.

com.unity.ml-agents.extentions 폴더 내, package.json 파일 선택
ML Agents Extensions 설치 중 화면

 

6. python mlagents 패키지 설치

이제 python 가상 환경을 활용하여, mlagents 패키지를 설치해주어야합니다. 저는 Anaconda를 설치해놓아서, Anaconda prompt를 활용하여 python 가상 환경을 하나 선언하였습니다. python 3.7버전을 사용할 것이라서, option으로 python=3.7도 주었습니다.

conda create -n unity_ml20 python=3.7​

윈도우 환경의 사용자들은 파이썬 mlagents 패키지 설치 이전에, 먼저 PyTorch 설치를 권장하고 있습니다. 그래서 Pytorch를 먼저 설치하겠습니다. 

pip3 install torch~=1.7.1 -f https://download.pytorch.org/whl/torch_stable.html​


PyTorch 설치 후, mlagents 패키지를 설치합니다.

python -m pip install mlagents==0.27.0​

 

7. ML-agents 유니티 패키지 asset 복사

현재 프로젝트에서 ML-agents의 기본 tutorial들을 사용해보기위해, 다운받은 ml-agent release18버전 폴더에서 asset부분을 복사해옵니다. 
- Source 폴더:  \\ml-agents-release_18\\Project\\Assets 폴더 내, ML-Agents 폴더
- Destination 폴더: 현재 유니티 프로젝트 폴더의 Assets 폴더

ML-Agents release18버전의 assets 폴더 선택
유니티 프로젝트 내 assets 폴더로 복사

해당 부분을 수행 후, 유니티 프로젝트의 assets에 ML-Agents가 생긴것을 확인할 수 있습니다. 

ML-Agents assets 확인

 

8. 에러 대응

위의 내용을 모두 수행후에, console창을 보면 여러 에러가 발생한 것을 볼 수 있습니다. 이제 이 에러들을 하나하나 대응해 나가겠습니다. (32개의 error 발생)

ML-Agents 설정 후, 발생한 에러들

일단 몇개의 에러를 확인해보니 input관련 내용을 찾지못한다고 나왔습니다.

error CS0234: The type or namespace name 'Input' does not exist in the namespace 'Unity.MLAgents.Extensions' (are you missing an assembly reference?), unity​



관련 내용을 google에서 찾아보니, input system 패키지를 설치하라고 나옵니다. 그래서 package manager에서 설치하니까, 에러가 3개로 줄었습니다.

Input System 패키지 설치
남은 에러들

남은 error들을 확인해보니까, Assets\\ML-Agents\\Examples\\PushBlockWithInput 폴더의 code들이 namespace 문제가 있었습니다. 1시간정도 googling을 해서, error를 해결해보려고 노력했지만… error를 해결하지 못했습니다. 그래서, 최후의 방법으로 에러가 발생한 파일들만 삭제를 하니, 마침내 error가 없어진 것을 확인할 수 있었습니다.

No error  :)

unity ml-agents example scene을 실행해보니, 에러없이 실행은 되었지만 이전 release10버전으로 구동한 것과는 달리 agent들이 움직이지 않았습니다. 이 때 새로운 error가 발생했는데, 이 에러는 ‘InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.’란 에러 였습니다.

정상 실행은 되었지만, InvalidOperationException 발생


googling을 해서, 다행히도 해결법을 찾았습니다. edit의 project setting 메뉴에서 player 메뉴를 클릭하면, configuration 내에 Active input Handling이란 것이 있습니다. 저는 이 부분이 ‘input system package’로 되어있었는데, 해당 부분을 ‘Both’로 바꾸어주니까 정상 작동하는 것을 확인할 수 있었습니다.

Active input handling부분은 'Both'로 수정

아래는 정상작동 화면입니다.

Unity ML-Agents 작동 화면
728x90
반응형

'Developer' 카테고리의 다른 글

[ROS2 foxy] turtlesim과 rqt  (0) 2022.02.23
ROS2 foxy 환경 설정 (configuration)  (0) 2022.02.23
(원격 연결) Chrome remote desktop  (0) 2021.08.17
(파이썬 패키지) xlrd  (0) 2021.08.16
(윈도우스토어) 우분투 설치  (0) 2021.08.12

관련글 더보기

댓글 영역