/// <inheritdoc/> public override int[] GetObservationShape() { if (RootBody == null) { return(new[] { 0 }); } // TODO static method in PhysicsBodySensor? // TODO only update PoseExtractor when body changes? var poseExtractor = new ArticulationBodyPoseExtractor(RootBody); var numPoseObservations = poseExtractor.GetNumPoseObservations(Settings); var numJointObservations = 0; foreach (var articBody in poseExtractor.GetEnabledArticulationBodies()) { numJointObservations += ArticulationBodyJointExtractor.NumObservations(articBody, Settings); } return(new[] { numPoseObservations + numJointObservations }); }
/// <inheritdoc/> public override int[] GetObservationShape() { if (RootBody == null) { return(new[] { 0 }); } // TODO static method in PhysicsBodySensor? // TODO only update PoseExtractor when body changes? var poseExtractor = new ArticulationBodyPoseExtractor(RootBody); var numPoseObservations = poseExtractor.GetNumPoseObservations(Settings); var numJointObservations = 0; // Start from i=1 to ignore the root for (var i = 1; i < poseExtractor.Bodies.Length; i++) { numJointObservations += ArticulationBodyJointExtractor.NumObservations( poseExtractor.Bodies[i], Settings ); } return(new[] { numPoseObservations + numJointObservations }); }