Ejemplo n.º 1
0
    public override void CollectObservations()
    {
        obs.Clear();
        obs.Add(normalize(Cart.transform.localPosition.z, travelLimit, -travelLimit));
        obs.Add(normalize(rbCart.velocity.z, maxSpeed, -maxSpeed));
        obs.Add(normalize(Ray.DegreeToRadian(poleAngle), Ray.DegreeToRadian(angleLimit), Ray.DegreeToRadian(-angleLimit)));
        obs.Add(normalize(rbPole.angularVelocity.x, maxAngularSpeed, -maxAngularSpeed));

        AddVectorObs(obs);
    }
    public override void CollectObservations()
    {
        if (!this.useVisual)                            // No Vector Obs if use Visual checked
        {
            foreach (int co in System.Enum.GetValues(typeof(BallColor.EnumColors)))
            {
                AddVectorObs((int)Ball.GetColorEnum() == co ? 1.0f : 0.0f);
            }

            AddVectorObs(normalize(Ray.DegreeToRadian(Sorter.transform.rotation.eulerAngles.y), 2 * Mathf.PI, 0));
            AddVectorObs(normalize(Lifter.transform.localPosition.y, Lifter.upperLimit, Lifter.lowerLimit));
        }
    }
Ejemplo n.º 3
0
    public override void CollectObservations()
    {
        var res = rayPer.Perceive(rayDistance, rayAngles, detectableObjects, 0.4f, 0f);

        hitOneHot = string.Join(", ", res[0].onehot) + " | " + res[0].tag;

        obs.Clear();
        obs.Add(normalize(Palette.transform.position.x, maxPositionValue, minPositionValue));
        obs.Add(normalize(Palette.transform.position.z, maxPositionValue, minPositionValue));
        obs.Add(normalize(MainBody.transform.position.x, maxPositionValue, minPositionValue));
        obs.Add(normalize(MainBody.transform.position.z, maxPositionValue, minPositionValue));
        obs.Add(normalize(Ray.DegreeToRadian(MainBody.transform.rotation.eulerAngles.y), 2 * Mathf.PI, 0));
        obs.Add(normalize(rbMainBody.velocity.x, maxSpeed, -maxSpeed));
        obs.Add(normalize(rbMainBody.velocity.z, maxSpeed, -maxSpeed));
        obs.Add(normalize(rbMainBody.angularVelocity.y, maxAngularVelocity, -maxAngularVelocity));

        AddVectorObs(obs);
    }
Ejemplo n.º 4
0
    public override void InitializeAgent()
    {
        if (usePlayerBrain)
        {
            MLAgents.PlayerBrain playerBrain = (MLAgents.PlayerBrain)Resources.Load("_RobotPlayerBrain");
            this.brain = playerBrain;
            print("Brain loaded");
        }

        rbMainBody = MainBody.GetComponent <Rigidbody>();
        rbPalette  = Palette.GetComponent <Rigidbody>();
        rayPer     = MainBody.GetComponent <Ray3D>();

        forkPosition                  = forkMin;
        maxAngularVelocity            = Ray.DegreeToRadian(360) * rpm / 60;
        rbMainBody.maxAngularVelocity = maxAngularVelocity;

        GameObject ground    = GameObject.Find("Ground");
        var        transform = ground.GetComponent <Transform>();

        maxPositionValue = transform.lossyScale.x * 10 / 2;
        minPositionValue = -maxPositionValue;
    }