Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

waypoint 문제 #65

Open
Accountance opened this issue Oct 5, 2023 · 4 comments
Open

waypoint 문제 #65

Accountance opened this issue Oct 5, 2023 · 4 comments

Comments

@Accountance
Copy link

waypoint를 28개로 늘리고 KartAgent 오브젝트의 collider에도 waypoint 1~28 까지 다 집어넣었고

KartAgent.cs 코드도

if (way_point_passing_count >= 28) // 웨이포인트가 28이 되면
{
way_point_passing_count = 0;
m_EndEpisode = true; // 에피소드 초기화
}

로 수정 했는데 웨이포인트를 16개 정도 지날무렵 자꾸 에피소드가 초기화 되더라구요.
그래서 max step을 늘려놨는데도 똑같아서 어떻게 해결해야할지 모르겠습니다.

@Accountance
Copy link
Author

또 웨이포인트가 많을수록 훈련이 잘 되나요?

@Accountance
Copy link
Author

Accountance commented Oct 5, 2023

waypoint를 28개로 늘리고 KartAgent 오브젝트의 collider에도 waypoint 1~28 까지 다 집어넣었고

KartAgent.cs 코드도

if (way_point_passing_count >= 28) // 웨이포인트가 28이 되면 { way_point_passing_count = 0; m_EndEpisode = true; // 에피소드 초기화 }

로 수정 했는데 웨이포인트를 16개 정도 지날무렵 자꾸 에피소드가 초기화 되더라구요. 그래서 max step을 늘려놨는데도 똑같아서 어떻게 해결해야할지 모르겠습니다.

UnityEngine.Debug.Log(way_point_passing_count);

명령어를 써서 봐보니

Waypoint_1은 통과해도 0이고
Waypoint_2~4는 통과하면 1씩 오르고
Waypoint_5는 갑자기 한 번에 5가 오르고
어떤건 3이 오르고... 이런식으로 서로 다르게 오르더라구요.

제 생각에는 지나갈 때 충돌 판정이 1번이 아니고 5번 나는 것 같은데요.

void FindCheckpointIndex(GameObject obj, out int index)
{
for (int i = 0; i < Colliders.Length; i++)
{
if (Colliders[i].gameObject == obj)
{
index = i;
UnityEngine.Debug.Log("웨이포인트 : " + way_point_passing_count);
way_point_passing_count++; // 웨이포인트 카운팅

                if (way_point_passing_count >= 100) // 웨이포인트가 13이 되면 
                {
                    way_point_passing_count = 0;
                    m_EndEpisode = true; // 에피소드 초기화
                }

                return;
            }
        }
        index = -1;
    }

그런데 분명 way_point_passing_count 값이 ++이라 지나가는 순간 충돌 판정이 5번 난게 아니면
설명이 안 되더라구요. 그런데 더 황당한건 5번 오르는 waypoint 오브젝트는 충돌 시 1만 오르는
waypoint 오브젝트를 복사 붙여넣기 해서 그대로 가져다 놓은거 라는겁니다.

왜 이럴까요?

@Kyushik
Copy link
Contributor

Kyushik commented Oct 6, 2023

또 웨이포인트가 많을수록 훈련이 잘 되나요?

웨이 포인트가 많은 경우 아무래도 중간 목표 지점이 많아지는거니까 학습에 대한 난이도는 낮아질 것으로 생각됩니다!

@Kyushik
Copy link
Contributor

Kyushik commented Oct 6, 2023

waypoint를 28개로 늘리고 KartAgent 오브젝트의 collider에도 waypoint 1~28 까지 다 집어넣었고
KartAgent.cs 코드도
if (way_point_passing_count >= 28) // 웨이포인트가 28이 되면 { way_point_passing_count = 0; m_EndEpisode = true; // 에피소드 초기화 }
로 수정 했는데 웨이포인트를 16개 정도 지날무렵 자꾸 에피소드가 초기화 되더라구요. 그래서 max step을 늘려놨는데도 똑같아서 어떻게 해결해야할지 모르겠습니다.

UnityEngine.Debug.Log(way_point_passing_count);

명령어를 써서 봐보니

Waypoint_1은 통과해도 0이고 Waypoint_2~4는 통과하면 1씩 오르고 Waypoint_5는 갑자기 한 번에 5가 오르고 어떤건 3이 오르고... 이런식으로 서로 다르게 오르더라구요.

제 생각에는 지나갈 때 충돌 판정이 1번이 아니고 5번 나는 것 같은데요.

void FindCheckpointIndex(GameObject obj, out int index) { for (int i = 0; i < Colliders.Length; i++) { if (Colliders[i].gameObject == obj) { index = i; UnityEngine.Debug.Log("웨이포인트 : " + way_point_passing_count); way_point_passing_count++; // 웨이포인트 카운팅

                if (way_point_passing_count >= 100) // 웨이포인트가 13이 되면 
                {
                    way_point_passing_count = 0;
                    m_EndEpisode = true; // 에피소드 초기화
                }

                return;
            }
        }
        index = -1;
    }

그런데 분명 way_point_passing_count 값이 ++이라 지나가는 순간 충돌 판정이 5번 난게 아니면 설명이 안 되더라구요. 그런데 더 황당한건 5번 오르는 waypoint 오브젝트는 충돌 시 1만 오르는 waypoint 오브젝트를 복사 붙여넣기 해서 그대로 가져다 놓은거 라는겁니다.

왜 이럴까요?

요건.. 좀 신기하네요.. 제가 알기로는 충돌하는 경우 set active를 False로 해서 해당 waypoint 객체를 없애는걸로 알고있는데요. 이상하네요.. 이에 대한 해결 방법은 연속적으로 여러 충돌 신호가 잡히는 경우 한번만 카운트를 올려주는 방식으로 좀 억지로 해결할수는 있을 것 같습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants