inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

드론이 움직이지 않아요

302

김정윤

작성한 질문수 1

1

드론에 관한 스크립트를 짰는데 Heuristic 모드로 해도 움직이지 않고, 기본값으로해도 움직이지 않아요.

 

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Sensors;
using Unity.MLAgents.Actuators;
using PA_DronePack;

public class DroneAgent : Agent
{
    private PA_DroneController dcoScript;

    public DroneSetting area;
    public GameObject goal;

    float preDist;

    private Transform agentTrans;
    private Transform goalTrans;

    private Rigidbody agent_Rigidbody;

    public override void Initialize()
    {
        base.Initialize();

        dcoScript = gameObject.GetComponent<PA_DroneController>();

        agentTrans = gameObject.transform;
        goalTrans = goal.transform;

        agent_Rigidbody = gameObject.GetComponent<Rigidbody>();

        Academy.Instance.AgentPreStep += WaitTimeInference;
    }


    public override void CollectObservations(VectorSensor sensor)
    {
        sensor.AddObservation(agentTrans.position - goalTrans.position);

        sensor.AddObservation(agent_Rigidbody.velocity);

        sensor.AddObservation(agent_Rigidbody.angularVelocity);

    }

    public override void OnActionReceived(ActionBuffers actionBuffers)
    {
        AddReward(-0.01f);

        var actions = actionBuffers.ContinuousActions;

        float moveX = Mathf.Clamp(actions[0], -1, 1f);
        float moveY = Mathf.Clamp(actions[1], -1, 1f);
        float moveZ = Mathf.Clamp(actions[2], -1, 1f);

        dcoScript.DriveInput(moveX);
        dcoScript.StrafeInput(moveY);
        dcoScript.LiftInput(moveZ);

        float distance = Vector3.Magnitude(goalTrans.position - agentTrans.position);

        if (distance <= 0.5f)
        {
            SetReward(1f);
            EndEpisode();
        }

        else if(distance > 10f)
        {
            SetReward(-1f);
            EndEpisode();
        }
        else
        {
            float reward = preDist - distance;
            AddReward(reward);
            preDist = distance;
        }
    }

    public override void OnEpisodeBegin()
    {
        area.AreaSetting();
        preDist = Vector3.Magnitude(goalTrans.position - agentTrans.position);
    }

    public override void Heuristic(in ActionBuffers actionsOut)
    {
        var continuousActionsOut = actionsOut.ContinuousActions;

        continuousActionsOut[0] = Input.GetAxis("Vertical");
        continuousActionsOut[1] = Input.GetAxis("Horizontal");
        continuousActionsOut[2] = Input.GetAxis("Mouse ScrollWheel");
    }

    public float DecisionWaitingTime = 5f;
    float m_currentTime = 0f;

    public void WaitTimeInference(int action)
    {
        if(Academy.Instance.IsCommunicatorOn)
        {
            RequestDecision();
        }
        else
        {
            if(m_currentTime >= DecisionWaitingTime)
            {
                m_currentTime = 0f;
                RequestDecision();
            }
            else
            {
                m_currentTime += Time.fixedDeltaTime;

            }

        }

    }

}

unity 강화학습 머신러닝 배워볼래요? unity-ml-agents

답변 1

1

정규열

안녕하세요.

혹시 인스펙터뷰 설정한 내용 볼 수 있을까요?

0

김정윤

 

0

정규열

DecisionRequester 컴포넌트를 추가해 보세요

설치 프로그램 버전 질문있습니다.

0

96

2

env 환경경로 입력방법

0

94

2

onnx에 대해서

0

133

1

텐서플로우가 안열립니다

0

118

2

DQN을 위한 파라메터값 세팅에서 goal-plus, goal-ex

0

95

1

dqn 인덱스 에러

0

121

3

2025년 pip ml agents 설치 에러

0

235

1

DQN 실행 오류

0

316

2

ML-Agents 살펴보기 11페이지 질문입니다.

0

225

1

배웠던 내용을 기반으로 match3 인공지능으로 플레이 하는 걸 만들고 있는데.. 질문이 있습니다.

0

395

2

3DBall 학습 중 문제

0

224

1

mlagents-learn --hlep

0

242

1

DQN 환경 학습

0

381

3

DQN 함수를 어디에다 만들고 실행하나요??>?>

0

351

1

갑자기 Template>Scripts 폴더는 어디에서 만들어졌는지...

0

285

2

mlagents-learn 에러 수정 방법을 문의드립니다.

0

660

3

Pyuthon API 적용

0

728

7

GridWorld, CollectObservations에서 에러 질문입니다.

0

660

1

yaml을 이용한 GAIL 및 BC를 mlagents-learn으로 실행 시 에러

0

468

1

GridWorld, 유니티에서 실행하면 observation 관련 에러가 뜹니다.

0

504

2

PPO Parameters에서 normalize 관련 질문입니다.

0

359

1

GridWorld 가 작동은 잘 되는데, score가 너무 낮게 나와요.

0

578

3

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

0

501

2

싱글에이전트 코드를 멀티에이전트 코드로 수정 관련

0

419

2