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>(); } }
/// <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); } }