인프런 커뮤니티 질문&답변

block63님의 프로필 이미지
block63

작성한 질문수

유니티 머신러닝 에이전트 완전정복 (기초편)

GridWorld가 움직이지 않고, time out 으로 중지됩니다.

해결된 질문

작성

·

337

0

책을 먼저 사서 책 보고 따라하던 중 막혀서, 급하게 강의 등록하고 질문 드립니다.

이렇게 좋은 책과 강의에 우선 감사드립니다.

  1. 오류 문구는 다음과 같습니다.

  1. 사용 패키지들의 버전을 다음과 같습니다.

  2. 책 보고 따라 작성한 코드로 이런 현상이 있어서, github에서 다운 받은 파일로 해도 동일 증상입니다.

  3. 저의 유니티 상의 설정은 다음과 같습니다.

     

  4. 해결에 도움 주시면 감사하겠습니다.

 

 

답변 2

0

block63님의 프로필 이미지
block63
질문자

해결글 링크: GridWorld, CollectObservations에서 에러 질문입니다. - 인프런 | 질문 & 답변 (inflearn.com)

다른 분이 같은 문제로 검색하실 때 도움되시라고 링크 남깁니다.

0

민규식님의 프로필 이미지
민규식
지식공유자

안녕하세요!

mlagents_envs.exception.UnityTimeOutException: The Unity environment took too long to respond.

위 에러의 경우 발생 원인이 다양합니다. 지금까지 조사한바로는 아래의 내용을 참고해주시면 좋을 것 같습니다.

  • 에이전트의 behavior parameters의 Behavior type이 Default로 설정되어있는가

  • 유니티의 mlagents 버전과 파이썬의 mlagents 버전이 호환되는 버전인가 (요건 맞게 된 것 같습니다)

  • 경로에 한글이 포함되어 있는가

  • 유니티에서 환경을 실행했을 때 유니티 자체적으로 오류가 발생하지는 않는가

  • Agent 컴포넌트를 가지는 gameObject내에 'Decision Requester' 스크립트를 컴포넌트로 추가했는가

 

위 내용대로 진행하셨는데도 문제가 있으시면 추가 답변 남겨주시면 좋을 것 같습니다!

block63님의 프로필 이미지
block63
질문자

조치한 내용과 결과를 알려드립니다. 계속 도움 요청드립니다.

  1. "Decision Requester" 스크립트를 컴포넌트로 추가시킴.

    (에러 해결책으로 인터넷 검색에서 보이기도 했던 내용인데요,

    책에서는 3DBall에서만 언급이 있고, GridWorld에서는 언급이 없었습니다. -.-;)

    RenderTextureAgent 오브젝트에 추가했습니다.

    추가 후 AreaRenderTexture 개체(프리팹)에서 프리팹 override 메뉴에서 apply all 실행.

  2. 다시 빌드 후, 그래도 time out 이 발생

  3. 알려주신 내용 중 유니티에서 실행했을 때 오류 없는지 체크 시작

  4. 책의 '번외: 코드 최적화 하기'에서 알려주신 transform 최적화 하기 관련하여, reference를 찾을 수 없다는 뜻의 에러 발생. → "private Transform agentTrans = null;"구문은 주석처리하고 원상복구 시킴.(해당 에러는 캡쳐 하지 못했습니다.)

  5. 유니티에서 실행했을 때 현재의 에러 상태

    image

    vs에서 해당 구문 캡쳐:

    image

  6. 별도 요청사항: 혹시 책의 벡터 관측 추가하는 코드를 제가 잘못 쳐넣나 싶어서,

    완성된 코드를 찾아보려고 책에 안내된 https://github.com/reinforcement-learning-kr/Unity_ML_Agents_2.0/tree/main/unity_project/GridWorld 에는 가봤으나, 원하던 GridArea.cs, GridAgents.cs 스크립트를 찾을 수 없었습니다. 백터 관측 코드가 추가된 해당 스크립트를 구할 수 있는 방법을 좀 알려주시면 감사하겠습니다.

     

    ※ 여기서 책이라 함은 '파이토치와 유니티 ML-Agents로 배우는 강화학습'을 말합니다.

     

    ※ 다른 컴퓨터에서 동일하게 작업한 결과, 아까 캡쳐 못 했던 4번 오류 화면을 캡쳐했습니다. 아래 와 같습니다.

    image

    vs 코드에서 해당 부분입니다.

    image

     

     

     

     

     

block63님의 프로필 이미지
block63
질문자

해결하였습니다. ^^/

  1. 4번 에러: NullReferenceException: Object reference not set to an instance of an object.

    [해결책] Initialize 함수에서 agentTrans = transform; 을 써줘야함.

    private Transform agentTrans = null; 이라고 초기화만 하고 지정을 안 한 것임.

    책에는 이 내용이 없고요, 강의에는 나옵니다. -.-;

  2. ArgumentOutOfRangeException: Index was out of range.

    [해결책] 기존 코드를 주석처리하고 다음과 같이 수정해야함.

    image

    이 또한 책에는 안 나오고 강의 내용에서도 강좌마다 다른 화면인데요,

    vector 관찰을 추가하는 강의에서는 위 캡쳐의 주석처리한 화면으로 강의가 진행되고요,

    transform 캐쉬 처리하는 강의에서는 위의 추석처리 안 한 화면으로 강의가 진행됩니다.

     

     

민규식님의 프로필 이미지
민규식
지식공유자

강의내용마다 약간씩 차이가 있는 부분이 있었군요 ㅜㅜ 혼란을 드려서 죄송합니다.

자세히 정리해주셔서 감사합니다!

혹시 진행하시다가 추가적으로 문의 사항 있으시면 말씀해주시면 감사드리겠습니다!

image93번째 줄을 보면 가운데 1 < otherPos.Count에서 1을 i로 바꾸면 5번 에러는 해결될 것 같습니다.

block63님의 프로필 이미지
block63

작성한 질문수

질문하기