• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

카트레이싱 환경관련 문의

23.04.15 22:15 작성 조회수 651

0

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

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

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

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

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

 

답변 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에 체크를 해주셨을까요? 이걸 체크해주셔야 물리적 충돌은 발생하지 않으면서도 충돌 여부 자체를 판단할 수 있습니다!