예제 #1
0
    public override void InitializeAgent()
    {
        walker       = GetComponent <WalkerAgent>();
        this.enabled = walker.EnableSearcher;

        if (enabled)
        {
            decisionInterval = agentParameters.numberOfActionsBetweenDecisions;
            walker.SetCallback(Done);
            nWaypoints = numWaypoints / decisionInterval;
            waypoints  = new Queue <Vector3>();
            ant        = GetComponent <Ant>();
        }
    }
예제 #2
0
    /// <summary>
    /// Add relevant information on each body part to observations.
    /// </summary>
    public void CollectObservationBodyPart(BodyPart bp, WalkerAgent a)
    {
        var rb = bp.rb;

        AddVectorObs(bp.groundContact.touchingGround ? 1 : 0); // Is this bp touching the ground
        AddVectorObs(rb.velocity);
        AddVectorObs(rb.angularVelocity);
        Vector3 localPosRelToHips = a.hips.InverseTransformPoint(rb.position);

        AddVectorObs(localPosRelToHips);

        if (bp.rb.transform != a.hips && bp.rb.transform != a.handL && bp.rb.transform != a.handR &&
            bp.rb.transform != a.footL && bp.rb.transform != a.footR && bp.rb.transform != a.head)
        {
            AddVectorObs(bp.currentXNormalizedRot);
            AddVectorObs(bp.currentYNormalizedRot);
            AddVectorObs(bp.currentZNormalizedRot);
            AddVectorObs(bp.currentStrength / jdController.maxJointForceLimit);
        }
    }