93420


ML-Agentsのチュートリアルにて、ドキュメント通りにやっても解決できない問題がありましたので質問させて頂きます。  
他の質問サイトなども一通り目を通しましたが、どうにもいかず・・・皆様のお知恵をお借りしたい次第です。

こちらがコードとエラーになります

[code]

    using System.Collections.Generic;
    using UnityEngine;
    using Unity.MLAgents;
    using Unity.MLAgents.Sensors;
    using Unity.MLAgents.Actuators;
    
    public class RollerAgent : Agent
    {
        Rigidbody rBody;
        void Start () {
            rBody = GetComponent<Rigidbody>();
        }
    
        public Transform Target;
        public override void OnEpisodeBegin()
        {
           // If the Agent fell, zero its momentum
            if (this.transform.localPosition.y < 0)
            {
                this.rBody.angularVelocity = Vector3.zero;
                this.rBody.velocity = Vector3.zero;
                this.transform.localPosition = new Vector3( 0, 0.5f, 0);
            }
    
            // Move the target to a new spot
            Target.localPosition = new Vector3(Random.value * 8 - 4,
                                               0.5f,
                                               Random.value * 8 - 4);
        }
    
        public override void CollectObservations(VectorSensor sensor)
        {
        // Target and Agent positions
        sensor.AddObservation(Target.localPosition);
        sensor.AddObservation(this.transform.localPosition);
    
        // Agent velocity
        sensor.AddObservation(rBody.velocity.x);
        sensor.AddObservation(rBody.velocity.z);
        }
        
    
        public float forceMultiplier = 10;
        public override void OnActionReceived(ActionBuffers actionBuffers)
        {
            // Actions, size = 2
            Vector3 controlSignal = Vector3.zero;
            controlSignal.x = actionBuffers.ContinuousActions[0];
            controlSignal.z = actionBuffers.ContinuousActions[1];
            rBody.AddForce(controlSignal * forceMultiplier);
    
            // Rewards
            float distanceToTarget = Vector3.Distance(this.transform.localPosition, Target.localPosition);
    
            // Reached target
            if (distanceToTarget < 1.42f)
            {
                SetReward(1.0f);
                EndEpisode();
            }
    
            // Fell off platform
            else if (this.transform.localPosition.y < 0)
            {
                EndEpisode();
            }
        }
    
        public override void Heuristic(in ActionBuffers actionsOut)
        {
            var continuousActionsOut = actionsOut.ContinuousActions;
            continuousActionsOut[0] = Input.GetAxis("Horizontal");
            continuousActionsOut[1] = Input.GetAxis("Vertical");
        }
    
    }
    
[/code]

[![コンソールの画像](https://i.stack.imgur.com/9MOnc.png)](https://i.stack.imgur.com/9MOnc.png)

エラー(警告)の方は、Playボタンを押すと継続的に出てくるようになっており、ドキュメントでは「十字キーでAgent(ボール)を操作出来る」とあるものの、操作も効かない状態です。

OS：macOS Venture 13.1

ML-Agents:Release20

ドキュメント：  
<https://github.com/Unity-Technologies/ml-agents/blob/develop/docs/Learning-
Environment-Create-New.md>

どうぞよろしくお願い致します。


CC BY-SA 4.0
2023-01-17T06:16:35.807
93399
2023-01-18T02:13:09.193
2023-01-18T01:42:32.737
3060
52558
question
c# unity3d
ML-Agentsのチュートリアルで「Heuristic method called but not implemented. Returning placeholder actions.」 と出て先に進めない


自己解決致しました。

他のサイトにて「Agent(Script)をデタッチすると治る」とのことでしたので試してみたところ、

[code]

    InvalidOperationException: You are trying to read Input using the UnityEngine.Input class, but you have switched active Input handling to Input System package in Player Settings.
    
[/code]

というエラーが

しかしこれは設定を変えると治るとのことでしたので、

Edit->ProjectSettings->Player->Active Input Handling のチェックボックスを「both」に変更

するとエラーも無くなり、自分で操作できるように！

ちなみに`Fewer observations(0) made...`のエラーも同時に解決しました。

お騒がせいたしました。


CC BY-SA 4.0
2023-01-18T02:13:09.193
93420
2023-01-18T02:13:09.193
52558
93399
answer