-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
해결됨
GridWorld가 움직이지 않고, time out 으로 중지됩니다.
23.08.31 22:52 작성 조회수 240
0
책을 먼저 사서 책 보고 따라하던 중 막혀서, 급하게 강의 등록하고 질문 드립니다.
이렇게 좋은 책과 강의에 우선 감사드립니다.
오류 문구는 다음과 같습니다.
사용 패키지들의 버전을 다음과 같습니다.
책 보고 따라 작성한 코드로 이런 현상이 있어서, github에서 다운 받은 파일로 해도 동일 증상입니다.
저의 유니티 상의 설정은 다음과 같습니다.
해결에 도움 주시면 감사하겠습니다.
답변을 작성해보세요.
0
block63
질문자2023.09.14
해결글 링크: GridWorld, CollectObservations에서 에러 질문입니다. - 인프런 | 질문 & 답변 (inflearn.com)
다른 분이 같은 문제로 검색하실 때 도움되시라고 링크 남깁니다.
0
민규식
지식공유자2023.08.31
안녕하세요!
mlagents_envs.exception.UnityTimeOutException: The Unity environment took too long to respond.
위 에러의 경우 발생 원인이 다양합니다. 지금까지 조사한바로는 아래의 내용을 참고해주시면 좋을 것 같습니다.
에이전트의 behavior parameters의 Behavior type이 Default로 설정되어있는가
유니티의 mlagents 버전과 파이썬의 mlagents 버전이 호환되는 버전인가 (요건 맞게 된 것 같습니다)
경로에 한글이 포함되어 있는가
유니티에서 환경을 실행했을 때 유니티 자체적으로 오류가 발생하지는 않는가
Agent 컴포넌트를 가지는 gameObject내에 'Decision Requester' 스크립트를 컴포넌트로 추가했는가
위 내용대로 진행하셨는데도 문제가 있으시면 추가 답변 남겨주시면 좋을 것 같습니다!
block63
질문자2023.09.01
조치한 내용과 결과를 알려드립니다. 계속 도움 요청드립니다.
"Decision Requester" 스크립트를 컴포넌트로 추가시킴.
(에러 해결책으로 인터넷 검색에서 보이기도 했던 내용인데요,
책에서는 3DBall에서만 언급이 있고, GridWorld에서는 언급이 없었습니다. -.-;)
RenderTextureAgent 오브젝트에 추가했습니다.
추가 후 AreaRenderTexture 개체(프리팹)에서 프리팹 override 메뉴에서 apply all 실행.
다시 빌드 후, 그래도 time out 이 발생
알려주신 내용 중 유니티에서 실행했을 때 오류 없는지 체크 시작
책의 '번외: 코드 최적화 하기'에서 알려주신 transform 최적화 하기 관련하여, reference를 찾을 수 없다는 뜻의 에러 발생. → "private Transform agentTrans = null;"구문은 주석처리하고 원상복구 시킴.(해당 에러는 캡쳐 하지 못했습니다.)
유니티에서 실행했을 때 현재의 에러 상태
vs에서 해당 구문 캡쳐:
별도 요청사항: 혹시 책의 벡터 관측 추가하는 코드를 제가 잘못 쳐넣나 싶어서,
완성된 코드를 찾아보려고 책에 안내된 https://github.com/reinforcement-learning-kr/Unity_ML_Agents_2.0/tree/main/unity_project/GridWorld 에는 가봤으나, 원하던 GridArea.cs, GridAgents.cs 스크립트를 찾을 수 없었습니다. 백터 관측 코드가 추가된 해당 스크립트를 구할 수 있는 방법을 좀 알려주시면 감사하겠습니다.
※ 여기서 책이라 함은 '파이토치와 유니티 ML-Agents로 배우는 강화학습'을 말합니다.
※ 다른 컴퓨터에서 동일하게 작업한 결과, 아까 캡쳐 못 했던 4번 오류 화면을 캡쳐했습니다. 아래 와 같습니다.
vs 코드에서 해당 부분입니다.
block63
질문자2023.09.01
해결하였습니다. ^^/
4번 에러: NullReferenceException: Object reference not set to an instance of an object.
[해결책] Initialize 함수에서 agentTrans = transform; 을 써줘야함.
private Transform agentTrans = null; 이라고 초기화만 하고 지정을 안 한 것임.
책에는 이 내용이 없고요, 강의에는 나옵니다. -.-;
ArgumentOutOfRangeException: Index was out of range.
[해결책] 기존 코드를 주석처리하고 다음과 같이 수정해야함.
이 또한 책에는 안 나오고 강의 내용에서도 강좌마다 다른 화면인데요,
vector 관찰을 추가하는 강의에서는 위 캡쳐의 주석처리한 화면으로 강의가 진행되고요,
transform 캐쉬 처리하는 강의에서는 위의 추석처리 안 한 화면으로 강의가 진행됩니다.
민규식
지식공유자2023.09.02
강의내용마다 약간씩 차이가 있는 부분이 있었군요 ㅜㅜ 혼란을 드려서 죄송합니다.
자세히 정리해주셔서 감사합니다!
혹시 진행하시다가 추가적으로 문의 사항 있으시면 말씀해주시면 감사드리겠습니다!
답변 2