66,000원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
스크립트 작성
이거 스크립트 다 따라서 작성해야 하나요 아니면 따로 다운받을 수 있는 곳이 있나요? 영상 보면서 다 따라서 작성해봤는데... 안될꺼라 생각했는데 역시 안되네요. 주피터에서 작성했고 코드를 몇번 더 컴토했는데 잘 안되네요.. 일단 경로 설정부터 이해가 잘 안가네요. 6분15초에 나오는 ckpt 파일이랑 events 파일은 어떻게해서 만들어진건가요? save_path 랑 load_path 를 지정해야하는데 어떤걸 입력해야 하는지 잘 모르겠습니다. 처음부터 끝까지 실행해서 트론시물레이션이 작동되는 영상은 혹시 없는가요?..
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
Inheritance 문제
이 강의들을 바탕으로 자체적으로 제가 환경을 만들어 보려고 하고 있는데요 질문이 하나 있습니다. 유니티 mlagent 안에 있는 Academy 라는 스크립트를 inherit 하고 싶은데 그게 안되네요. 처음에 usting Unity.Mlagents; 선언후에public class 파일이름 : Academy 라고 선언했더니파일이름 is inaccesible due to its protection level C# 이라고 경고메시지가 뜨면서 '파일이름' 밑에 빨간줄이 생깁니다. public 이라고 선언도 했고, 저장도 다 했는데도 왜 이런 문제가 생기는걸까요? 다른 해외 유투버들이 하는 튜토리얼 비디오에서는 잘 작동되던데요...(다만 모든 튜토리얼이 2017버전 혹은 2018을 쓰고 있더라구요. mlagent 가 업데이트 되면서 inheritance 되지 않도록 막은걸까요?)
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
ML Agent 에러
ML Agent 환경 설치에 관해서 질문이 있습니다. 드론예제와 카트 예제를 따라해 보는데 계속 오류가 납니다. 처음에 MLagent 환경 구성할때, 3가지 방법이 있었죠.1. Package Manager 에서 설치하는것. 이거는 1.0.8 밖에 안되는 단점. 2. package.json 을 통해서 설치한 후, 오류가 발생하는 pushblock 예제를 지우는 것. 3. project 폴더를 유니티허브에서 바로 여는 것. (recommended) 저는 이 3가지 방법중에서 3번을 통해서 계속 따라해 왔습니다. 유니티 버전은 2021.2.0a17 을 사용했구요. 첫 강의 소개영상에 나오는 것과 똑같은 버전입니다. 문제는 3번 방식으로 진행했을 시, 드론 예제에서 Free Drone Package 를 설치하면 5-6개정도의 에러가 발생한다는 점입니다. 그걸 해결하려고 파일을 지우거나 다른 package 를 설치하면, 또다른 에러가 발생하고... 또 생기고.. 안되더라구요. 그래서 제가 택했던 방법은 2번 방법이었습니다. 이렇게 하니까 드론 예제는 어찌어찌 되기는 하는데 마지막에 오류는 안생기는데 작동이 강의에서 보여지는 것처럼 되지가 않아요. 이 카트 예제도 마찬가지입니다. 카트 강의에서는 유니티 버전을 다른걸 쓰고 계시던데,,, 뭐 좋습니다. 문제는 오류가 생겨서 되질 않아요... 3번 방법으로 하면 드론 패키지를 다운 받는 순간 4-5개정도의 오류가 생깁니다. 2번 방법으로 하면 패키지를 받았을 때, 오류메시지가 셀수없이 많이 생깁니다. 아래 이미지 참조해주세요. 1번의 방식대로 했을 땐, using unity.mlagent Actuator; 했을때 Actuator 을 못찾는다고 합니다. 해결하는 방법좀 알려주세요... 예제마다 되는게 있고 안되는게 있고... 어떻게 해야하나요.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
Actuators
지금 따라해보고 있는데요 1:38초 부근에서 unity.mlagents.Actuators; 이걸 실행해야하는데 Actuators 에 자꾸 밑줄이 생기네요. 찾을수가 없다고 합니다. 지금 MLAgents 가 1.0.8이 설치되어 있어요. 그래서 제일 처음에 예제에서 했던 mlagent17 을 패키지 파일에 있는 json으로 설치했더니 오히려 더 많은 에러가 생겨서 진행이 안됩니다. 어떻게 해결해야 하나요. 그리고 플레이해보니 아래와 같은 에러도 자꾸 생깁니다... 이것때문에 아까 드론 예제도 문제가 있었던것 같은데요..
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
드론 예제 작동이 안되네요...
여기까지 다 따라와 봤는데요, 왜 제 드론은 움직이지 않고 가만히 있을까요? 일단 이런 메시지가 콘솔에서 출력됩니다. Couldn't connect to trainer on port 5004 using API version 1.5.0. Will perform inference instead. UnityEngine.Debug:Log (object) 그리고 비디오가 중간에 끊긴것 같네요. area 오브젝트안에 drone 이랑 goal 을 넣으셨더라구요. 그걸 만드는 내용이 강의에서는 소개되지 않고 있는것 같습니다. 아래에 제가 작성한 코드 링크도 있으니 확인 부탁드립니다.DroneAgent 와 DroneSettings 입니다. https://github.com/JaechangKo/Drone_ 특히 드론 setting스크립트에서 private으로 처음에 드론 에이전트와 골을 gameobject호출을 하셨는데, 그렇게 하니 inspector 창에 나오지가 않아서 SerializeField 적용했어요. 아니면 아예 그냥 public으로 선언해도 되나요?
- 해결됨유니티 머신러닝 에이전트 완전정복 (기초편)
CS0246 DroneSetting 오류
안녕하세요, 강의 잘 수강하고 있습니다. 드론 에셋을 가져와서 스크립트를 작성하는 과정에 있는데, 아래와 같은 오류가 발생하여 질문드립니다. 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" 이라는 문구가 나오는데, 이 문제는 어떻게 해결할 수 있을지 질문드립니다. 두 오류가 연관이 있을 수도 있겠습니다. 확인해 주시면 감사하겠습니다
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
드론 패키지 임포트시 에러 발생
유니티 버전은 뭘 써야하나요? 2021.2.0a17 로 작업하고 있는데 드론 팩을 다운 받았더니 particle system 과 XRnodeState, Audiosource 를 찾을 수 없다는 에러가 나옵니다. 혹시 버전의 문제인가요? Assets\ProfessionalAssets\DronePack\Scripts\CameraTeleportEffect.cs(9,21): error CS1069: The type name 'ParticleSystem' could not be found in the namespace 'UnityEngine'. This type has been forwarded to assembly 'UnityEngine.ParticleSystemModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'Particle System' in the Package Manager window to fix this error. Assets\ProfessionalAssets\DronePack\Scripts\Turbine.cs(14,17): error CS1069: The type name 'ParticleSystem' could not be found in the namespace 'UnityEngine'. This type has been forwarded to assembly 'UnityEngine.ParticleSystemModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'Particle System' in the Package Manager window to fix this error. Assets\ProfessionalAssets\DronePack\Scripts\PAVR_DroneRemote.cs(10,14): error CS1069: The type name 'XRNodeState' could not be found in the namespace 'UnityEngine.XR'. This type has been forwarded to assembly 'UnityEngine.XRModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'XR' in the Package Manager window to fix this error. Assets\ProfessionalAssets\DronePack\Scripts\ProximityCannon.cs(16,17): error CS1069: The type name 'AudioSource' could not be found in the namespace 'UnityEngine'. This type has been forwarded to assembly 'UnityEngine.AudioModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' Enable the built in package 'Audio' in the Package Manager window to fix this error.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
Drone Agent 에서 Decision Request 추가
강의시 추가해야 될 부분이 있는거 같아요. Drone Agent 의 Inspector 윈도우에서 Decision Request 컴포넌트가 추가되어야 정상 작동이 되네요.. 업데이트 해주시면 감사하겠습니다.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DroneSetting.cs 관련 질문
Drone 환경 만들때 DroneSetting.cs 스크립트 작성 후 Area 에서 Add Component 에서 Drone Setting 컴포넌트를 추가하니 다음 화면처럼 Drone agent 와 Goal 메뉴가 보이지 않습니다. 도와 주시면 감사 하겠습니다. 하기는 작성한 DroneSetting.cs 코드 입니다. using System.Collections; using System.Collections.Generic; using UnityEngine; public class DroneSetting : MonoBehaviour { private GameObject DroneAgent; private GameObject Goal; private Vector3 areaInitPos; private Vector3 droneInitPos; private Quaternion droneInitRot; private Transform AreaTrans; private Transform DroneTrans; private Transform GoalTrans; private Rigidbody DroneAgent_Rigidbody; void Start() { AreaTrans = gameObject.transform; DroneTrans = DroneAgent.transform; GoalTrans = Goal.transform; areaInitPos = AreaTrans.position; droneInitPos = DroneTrans.position; droneInitRot = DroneTrans.rotation; DroneAgent_Rigidbody = DroneAgent.GetComponent<Rigidbody>(); } public void AreaSetting() { DroneAgent_Rigidbody.velocity = Vector3.zero; DroneAgent_Rigidbody.angularVelocity = Vector3.zero; DroneTrans.position = droneInitPos; DroneTrans.rotation = droneInitRot; GoalTrans.position = areaInitPos + new Vector3(Random.Range(-5f, 5f), Random.Range(-5f, 5f), Random.Range(-5f, 5f)); } }
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
agent 스크립트의 on episode begin
Agent 스크립트의 onepisodebegin 환경 코드를 살펴보고 싶은데요... list(env.behavior_specs) 라고 입력하니 ['3DBall?team=0'] 이라는 정보를 주긴 하는데... 이 파일을 다운로드 받은 mlagent files 에서 어디서 찾을 수 있나요?? behavior_specs 에 관한 정보를 살펴보고 싶습니다.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
헷갈리는게 있어요...
안녕하세요 강의 복습하면서 갑자기 궁금한 점이 생겼습니다. 1. ppo folder 에 들어있는 3DBall.yaml 파일의 내용을 수정하면서 Learning 을 조정하는거라면 유니티 환경에서 굳이 파라메터를 설정할 필요가 있나요? ( ex: behavior parameters: vector observation, stacked vectors, continuous actions...etc) 2. 빌드파일 없이 유니티에서 바로 학습하는 경우 아나콘다 프롬프트로 작업하는 것과 비교했을 때 장단점이 무엇인가요? 3. 유니티에서 학습시켰을 경우 역시 텐서보드로 확인 가능한가요? 4. 다음 강의에서 나오는 python API로 학습시키는 영상이 나옵니다. 이걸 쓰는 이유는 무엇인가요? yaml 을 쓰는 것과 비교했을 때 무슨 장점이 있나요? 5. Python APi 다음 영상에서는 gridworld 예제가 나오는데요, 이 경우에는 유니티 스크립트를 하나하나씩 고치면서 학습을 시킵니다. 이런 경우는 왜 python api 를 안쓰나요? 제가 계속 진도를 따라가다 보니, 각각의 튜토리얼들의 구분이 어떻게 지어지는지 좀 헷갈리네요. 이런 경우에는 이렇게 해라~ 저럴땐 저렇게 한다... 이런게 따로 있는건가요? 개념을 잘 잡지 못한거 같아서요. 답변 주시면 감사드리겠습니다!
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
otherPos.Add(z); 에서 z를 찾을수 없다는데..
Assets\ML-Agents\Examples\GridWorld\Scripts\GridArea.cs(126,26): error CS0103: The name 'z' does not exist in the current context 이런 에러가 유니티에서 뜹니다... 왜 z를 찾을수 없다고 나오는거죠?
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
에러메시지가 뜹니다...
print(f'name of behavior:{behavior_name}') 이걸 하려고 하는데...UnityWorkerInUseException: Couldn't start socket communication because worker number 0 is still in use. You may need to manually close a previously opened environment or use a different worker number.UnityWorkerInUseException: Couldn't start socket communication because worker number 0 is still in use. You may need to manually close a previously opened environment or use a different worker number.라는 오류가 뜹니다... 어떻게 해결해야 하나요?
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
드론이 움직이지 않아요
드론에 관한 스크립트를 짰는데 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; } } } }
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
DroneAgent.cs 스크립트 질문
드론환경 실습에서 DroneAgent 스크립트에서 Initialize 함수 에서 다음과 같은 에러가 납니다. 도와주시면 감사하겠습니다.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
Decision Period 가 잘 이해가 안되요ㅜㅜ
정책 결정 시간이라는게 잘 이해가 안되요. action 결정 시간이면, 5 frame 당 1번 action하는 걸 의미한다고 이해할 수 있는데요 ㅜㅜ
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
6강 스크립트 MLAgent 에러
안녕하세요 6강에 나온대로 스크립트를 작성하고 있는 도중 질문드립니다. 아래와 같이 usign MLAgent를 하여도 관련된 함수가 불러와 지지가 않습니다. 아래와 같이 그저 하얀색으로 계속 표시되네요 어떤것이 문제인지 알고 싶습니다. 콘솔 창에서는 다음과 같은 에러가 발생하는 것도 확인했습니다.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
라이브러리 불러오기 등
안녕하세요! 강의 넘 잘 듣고 있습니다. 지금까지 잘 따라오다가 DQN 실습 1 강의에서 막혀서 질문드려요. 라이브러리 불러오기 설명하실 때(아래 이미지 첨부) 해당 파일을 어디에서 찾을 수 있을까요? 혹시 직접 작성해야하는 거라면 어떤 파일명과 형식으로 어느 폴더에 저장해야하는지... 잘 모르겠어요. 머신러닝은 완전 처음이라서요. ^^; 마찬가지로 파라미터 값 설정도 어떤 파일을 말씀하시는건지 모르겠습니다. ㅠ yaml 파일을 말씀하시는 건가요? 지금까지 쭉 따라오다가 파워포인트에 캡쳐한 것으로 설명해주시니 파일명, 파일 위치도 모르겠고 직접 작성하라는 뜻인지..사실 좀 헷갈립니다. 이 분야는 처음이라 더 이해하기 어려운 것 같습니다. 답 기다릴게요. 감사합니다!
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
OnActionReceived 함수 내용 관련 질문
GridAgent 스크립트 내 OnActionReceived 함수에서 처음에 무조건 AddReward(-0.01f); 해주는 정확한 이유를 알고 싶습니다.
- 미해결유니티 머신러닝 에이전트 완전정복 (기초편)
기초편 수강완료했습니다!! 다음 심화편은 언제 볼 수 있을까요??
to. 제작진분들 알찬 강의 정말 너무 잘 공부했습니다. 돈이 정말 1도 아깝지 않은 최고의 강의였습니다. 강의 서론에 말씀하신 심화편은 언제쯤 볼 수 있을까요? 또 교재로도 출판예정이라고 하셨는데 교재는 언제쯤일까요? 감사합니다.