강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của 1f
1f

câu hỏi đã được viết

Cuộc chinh phục hoàn chỉnh của Unity Machine Learning Agent (Cơ bản)

CS0246 DroneSetting 오류

Đã giải quyết

Viết

·

389

0

안녕하세요, 강의 잘 수강하고 있습니다.
 
드론 에셋을 가져와서 스크립트를 작성하는 과정에 있는데, 아래와 같은 오류가 발생하여 질문드립니다.
 
CS0246: The type or namespace name 'DroneSetting' could not be found 에러가 발생했는데, 어떻게 해결할 수 있을까요?
Unity 버전은 2021.2.16f1 을 사용하고 있으며, ML Agents는 2.0.0-exp.1, ML Agents Extensions는 0.4.0-preview 버전입니다.
 
코드는 아래와 같습니다.
 
using UnityEngine;
using Unity.MLAgents;
using Unity.MLAgents.Actuators;
using Unity.MLAgents.Sensors;
using PA_DronePack;

public class DroneAgent : Agent
{
    public 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<agent_Rigidbody>();

        Academy.Instance.AgentPreStep += WaitTimeInterference;

    }

    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
        {
            floar 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 WaitTimeInterference(int action)
    {
        if(Academy.Instance.IsCommunicatorOn)
        {
            RequestDecision();
        }
        else
        {
            if(m_currentTime >=DecisionWaitingTime)
            {
                m_currentTime = 0f;
                RequestDecision();
            }
            else
            {
                m_currentTime += m_currentTime.fixedDeltaTime;
            }
        }
    }

}

 

 
아울러, 드론 에셋 가져오기 & 오브젝트 추가 강의에서, PA_Drone Axis Input과 PA_Drone Controller도 체크를 할 수 없게 되면서, "The associated script can not be loaded. Please fix any compile erroes and open Prefab Mode and assign a valid script to the Prefab Asset" 이라는 문구가 나오는데, 이 문제는 어떻게 해결할 수 있을지 질문드립니다.
 
두 오류가 연관이 있을 수도 있겠습니다.
 
확인해 주시면 감사하겠습니다
머신러닝 배워볼래요? unity강화학습unity-ml-agents

Câu trả lời 2

1

kyushik님의 프로필 이미지
kyushik
Người chia sẻ kiến thức

앗..! 해결하셨군요...! ㅜㅜㅜ 답변이 늦어서 죄송합니다 ㅜㅜ 혹시 어떻게 해결하셨는지 공유해주실 수 있으실까요?? 

1f님의 프로필 이미지
1f
Người đặt câu hỏi

아 제가 코드를 작성하던 부분에서 실수가 있었던 것 같습니다. 깃헙에 있는 코드를 그대로 복붙하니 오류가 해결되었습니다..!

kyushik님의 프로필 이미지
kyushik
Người chia sẻ kiến thức

다행이네요! :) 

1

1f님의 프로필 이미지
1f
Người đặt câu hỏi

아 해결했습니다!! 감사합니다

Hình ảnh hồ sơ của 1f
1f

câu hỏi đã được viết

Đặt câu hỏi