CS0246 DroneSetting 오류
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;
}
}
}
}
답변 2
1
앗..! 해결하셨군요...! ㅜㅜㅜ 답변이 늦어서 죄송합니다 ㅜㅜ 혹시 어떻게 해결하셨는지 공유해주실 수 있으실까요??
설치 프로그램 버전 질문있습니다.
0
74
2
env 환경경로 입력방법
0
78
2
onnx에 대해서
0
110
1
텐서플로우가 안열립니다
0
101
2
DQN을 위한 파라메터값 세팅에서 goal-plus, goal-ex
0
79
1
dqn 인덱스 에러
0
92
3
2025년 pip ml agents 설치 에러
0
215
1
DQN 실행 오류
0
307
2
ML-Agents 살펴보기 11페이지 질문입니다.
0
210
1
배웠던 내용을 기반으로 match3 인공지능으로 플레이 하는 걸 만들고 있는데.. 질문이 있습니다.
0
378
2
3DBall 학습 중 문제
0
218
1
mlagents-learn --hlep
0
236
1
DQN 환경 학습
0
366
3
DQN 함수를 어디에다 만들고 실행하나요??>?>
0
335
1
갑자기 Template>Scripts 폴더는 어디에서 만들어졌는지...
0
279
2
mlagents-learn 에러 수정 방법을 문의드립니다.
0
643
3
Pyuthon API 적용
0
701
7
GridWorld, CollectObservations에서 에러 질문입니다.
0
641
1
yaml을 이용한 GAIL 및 BC를 mlagents-learn으로 실행 시 에러
0
456
1
GridWorld, 유니티에서 실행하면 observation 관련 에러가 뜹니다.
0
489
2
PPO Parameters에서 normalize 관련 질문입니다.
0
356
1
GridWorld 가 작동은 잘 되는데, score가 너무 낮게 나와요.
0
568
3
GridWorld가 움직이지 않고, time out 으로 중지됩니다.
0
483
2
싱글에이전트 코드를 멀티에이전트 코드로 수정 관련
0
408
2





