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

프리즈너님의 프로필 이미지
프리즈너

작성한 질문수

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

스크립트 작성 및 환경 빌드

카트레이싱 환경관련 문의

작성

·

828

0

안녕하세요, 수업은 다 듣고 실습부분만 조금씩 다시 따라가고 있는데요,

카트레이싱에서 환경 구축을 다 하고, KartAgent
코드도 깃허브에 있는거 그대로 C# 코드 옮기고,
AcadeKart 코드도 수정을 다 했는데,

이상하게 카트가 1번 웨이포인트 지나고 리셋이 됩니다.

파이토치와 유니티 책에는 OnEpisode 함수에 for문이 있는데, 넣고 빼고는 상관이 없더라구요,

웨이포인트를 이어가지 못하거나 중간에 충돌이라고
판단하거나 기타 리셋 조건이 문제인것 같은데, 어딜 봐야 할지 조언을 주실 수 있으신가요?

 

답변 3

1

안녕하세요! 너무 예전 내용이긴 하지만

저도 이거 관련해서 유사한 상황이 있었어서,

혹시나 보시는 분들 계실까 하여

 

저는 유사하게 웨이포인트로 큐브 생성 후

mesh renderer 해제, is Trigger 체크 후에 플레이시

세번째 웨이포인트에서 계속 리셋되었는데,

 

웨이포인트의 Y 좌표를 0에서 조정하지 않고

트랙에 박아놓은게 원인이 아니었나 싶습니다.

 

m_endEpisode 조건에서 Debug 로

way_point_passing_count를 찍어보면

세번째 웨이포인트 도달시 13이 찍혀서,

아무래도 웨이포인트와 트랙에서 Trigger가

계속 발생하는 것 같아

 

Y 좌표를 전부 2로, 위로 올리니 끝까지 진행되었습니다...

 

이게 동일한 오류일지, 맞는 해결책이 되실지 모르겠지만

참조해 보셔도 좋을 것 같습니다!

0

프리즈너님의 프로필 이미지
프리즈너
질문자

mesh renderer 체크해제, is trigger 체크 모든 way point 확인했습니다.

 

실행하는데 아래와 같이 나와서

Couldn't connect to trainer on port 5004 using API version 1.5.0. Will perform inference instead.

 

ml_agent를 업데이트했는데도 같은 에러가 발생합니다. 리셋 되는 위치가 x좌표가 0~1될때 리셋이 됩니다. 위 멘트를 누르면 아래와 같이 나옵니다.

 

UnityEngine.Debug:Log (object)

Unity.MLAgents.Academy:InitializeEnvironment () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Academy.cs:478)

Unity.MLAgents.Academy:LazyInitialize () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Academy.cs:292)

Unity.MLAgents.Academy:.ctor () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Academy.cs:261)

Unity.MLAgents.Academy/<>c:<.cctor>b__86_0 () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Academy.cs:117)

System.Lazy`1<Unity.MLAgents.Academy>:get_Value ()

Unity.MLAgents.Academy:get_Instance () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Academy.cs:132)

Unity.MLAgents.Agent:LazyInitialize () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Agent.cs:485)

Unity.MLAgents.Agent:OnEnable () (at Library/PackageCache/com.unity.ml-agents@2.3.0-exp.3/Runtime/Agent.cs:399)

 

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

Couldn't connect to trainer on port 5004 using API version 1.5.0. Will perform inference instead. 의 경우 메시지로 제가 알기로는 환경에 영향을 미치지 않는 것으로 알고 있습니다!

일단 이 문제는 아닐 것 같지만 유니티 Release 20을 사용하고 계시면 강의에서 사용하는 버전과는 차이가 있는 것 같습니다. 강의에서는 Release 17로 사용했습니다!

제 생각에는 유니티 설정이나 코드상의 문제일 듯 한데 mesh renderer 체크해제, is trigger 체크 모든 way point 확인하셨다고 하니 코드 문제가 아닐까 생각합니다.

일단 저희 깃허브 코드와 비교해보셔도 좋을 것 같습니다!
https://github.com/reinforcement-learning-kr/Unity_ML_Agents_2.0/tree/main/unity_project/Kart/Assets/Karting/Scripts/AI

그리고 "리셋 되는 위치가 x좌표가 0~1될때 리셋이 됩니다."라고 말씀해주셨는데요! 혹시 그럼 웨이포인트와 충돌하지 않더라도 해당 x좌표에서는 리셋이 되는걸까요?

0

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

안녕하세요!

말씀해주신대로 첫번째 웨이포인트에서 리셋이 된다면 웨이포인트와 실제 물리적 충돌이 발생하는거 아닐까 싶습니다! 혹시 웨이 포인트의 인스펙터 뷰의 박스 콜라이더에서 Is Trigger에 체크를 해주셨을까요? 이걸 체크해주셔야 물리적 충돌은 발생하지 않으면서도 충돌 여부 자체를 판단할 수 있습니다!

프리즈너님의 프로필 이미지
프리즈너

작성한 질문수

질문하기