前往
大廳
主題

狼 受身 V3

夏洛爾 | 2022-11-30 23:09:33 | 巴幣 0 | 人氣 136


Wolf GetUp v3

實驗目標:
1.扣分制
2.快速進入站立瞬間
3.站立瞬間不限制視線方向 (視線瞄準將由站立處理)
4.Size 在 1-5之前隨機,Size會影響mass和JointDrive

實驗設計:
0.將前後腿關節側翼展開範圍縮小,將後腳掌角度修正(原先後腳掌和其脛骨有45度的角度差),將前後大腿小腿的角度引導角度縮小

1.弱點觸地
AddReward(-0.0001f * wolfBodies[i].damageCoef);life -= 0.005f * wolfBodies[i].damageCoef;

2.
//Set: judge.endEpisode = true//Set: judge.episodeLength = 10fif(life <= 0f){if(inferenceMode){}else{// ===Train GetUp===float survivedTime = Time.fixedTime - arrivedMoment;if(survivedTime < judge.episodeLength ){AddReward( (survivedTime - judge.episodeLength) * 0.1f );}judge.outLife++;judge.Reset();return;}}else if(wolfRoot.localPosition.y < -10f){if(inferenceMode){}else{//===Train GetUp===float survivedTime = Time.fixedTime - arrivedMoment;if(survivedTime < judge.episodeLength ){AddReward( (survivedTime - judge.episodeLength) * 0.1f );}judge.outY++;//===All Required===judge.Reset();return;}}else if(targetDistance > 500f){judge.Reset();}targetSmoothPosition = targetPositionBuffer.GetSmoothVal();headDir = targetSmoothPosition - stageBase.InverseTransformPoint(wolfHeadRb.position);spineDir = targetSmoothPosition - stageBase.InverseTransformPoint(wolfSpine.position);rootDir = targetSmoothPosition - stageBase.InverseTransformPoint(wolfRootRb.position);lookAngle = Mathf.InverseLerp(180f, 0f, Vector3.Angle(wolfHead.right * -1f, headDir));upAngle = Mathf.InverseLerp(180f, 0f, Vector3.Angle(wolfHead.up * -1f, Vector3.up));spineLookAngle = Mathf.InverseLerp(180f, 0f, Vector3.Angle(wolfSpine.right * -1f, spineDir));spineUpAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfSpine.up * -1f, Vector3.up));rootLookAngle = Mathf.InverseLerp(180f, 0f, Vector3.Angle(wolfRoot.forward, rootDir));rootUpAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfRoot.up, Vector3.up));leftThighAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfLeftThigh.right, Vector3.up));leftCalfAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfLeftCalf.right, Vector3.up));rightThighAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfRightThigh.right, Vector3.up));rightCalfAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfRightCalf.right, Vector3.up));leftUpperArmAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfLeftUpperArm.right, Vector3.up));leftForeArmAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfLeftForeArm.right, Vector3.up));rightUpperArmAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfRightUpperArm.right, Vector3.up));rightForeArmAngle = Mathf.InverseLerp(180f, 15f, Vector3.Angle(wolfRightForeArm.right, Vector3.up));avgVelocity = velocityBuffer.GetSmoothVal();flatVelocity = avgVelocity;flatVelocity.y = 0f;velocityCoef = Mathf.InverseLerp(0f, 10f, flatVelocity.magnitude );// Reward -1 + angleslastReward = (upAngle + spineUpAngle + rootUpAngle) * 0.00033f+ (lookAngle + spineLookAngle + rootLookAngle) * 0.000133f+ (leftThighAngle + leftCalfAngle + rightThighAngle + rightCalfAngle + leftUpperArmAngle + leftForeArmAngle + rightUpperArmAngle + rightForeArmAngle) * 0.00005f+ (1f - velocityCoef) * 0.00018f+ (1f - exertionRatio) * 0.00002f - 0.002f;totalReward += lastReward;AddReward( lastReward );if(hasLanding && !weaknessOnGround && velocityCoef < 0.2f && upAngle > 0.9f && spineUpAngle > 0.9f && rootUpAngle > 0.9f&& leftThighAngle > 0.9f && leftCalfAngle > 0.9f && rightThighAngle > 0.9f && rightCalfAngle > 0.9f && leftUpperArmAngle > 0.9f && leftForeArmAngle > 0.9f && rightUpperArmAngle > 0.9f && rightForeArmAngle > 0.9f){//===Train GetUp===AddReward(1f);judge.survived++;judge.Reset();return;//===Train Stand===// ConfirmArrived();// brainMode = BrainMode.Stand;// SetModel("WolfTrain", standBrain);// behaviorParameters.BehaviorType = BehaviorType.Default;// landingMoment = Time.fixedTime;//===Enter Stand===// brainMode = BrainMode.Stand;// SetModel("WolfStand", standBrain);// behaviorParameters.BehaviorType = BehaviorType.InferenceOnly;}

大致來說
0.扣分制
1.鼓勵頭胸腹朝上向量
2.鼓勵頭胸腹視線向量
3.鼓勵四肢大腿和小腿朝上向量
4.鼓勵抑制速度
5.鼓勵抑制exertion
6.在抑制速度、頭胸腹朝上,四肢朝上滿足條件時達成

實驗時間:
Step: 5e7
Time Elapsed: 58107s (16.14hr)

實驗結果:
實驗結果為成功,狼可以效率受身,而且動作有變得帥氣,不會再一直腳開開,也不會一直用後腳跟觸地

因此下個實驗將進行狼靜立

創作回應

更多創作