Merge remote-tracking branch 'bp/master'
This commit is contained in:
@@ -122,7 +122,7 @@ class MinitaurExtendedEnv(MinitaurReactiveEnv):
|
|||||||
leg_model = []
|
leg_model = []
|
||||||
if self._include_leg_model:
|
if self._include_leg_model:
|
||||||
raw_motor_angles = self.minitaur.GetMotorAngles()
|
raw_motor_angles = self.minitaur.GetMotorAngles()
|
||||||
leg_model = self._convert_to_leg_model(raw_motor_angles)
|
leg_model = self.convert_to_leg_model(raw_motor_angles)
|
||||||
|
|
||||||
observation_list = (
|
observation_list = (
|
||||||
[parent_observation] + history_states + history_actions +
|
[parent_observation] + history_states + history_actions +
|
||||||
@@ -185,7 +185,7 @@ class MinitaurExtendedEnv(MinitaurReactiveEnv):
|
|||||||
if self._never_terminate:
|
if self._never_terminate:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
leg_model = self._convert_to_leg_model(self.minitaur.GetMotorAngles())
|
leg_model = self.convert_to_leg_model(self.minitaur.GetMotorAngles())
|
||||||
swing0 = leg_model[0]
|
swing0 = leg_model[0]
|
||||||
swing1 = leg_model[2]
|
swing1 = leg_model[2]
|
||||||
maximum_swing_angle = 0.8
|
maximum_swing_angle = 0.8
|
||||||
|
|||||||
@@ -176,24 +176,30 @@ public:
|
|||||||
btMatrix3x3 P;
|
btMatrix3x3 P;
|
||||||
firstPiola(psb->m_tetraScratches[j],P);
|
firstPiola(psb->m_tetraScratches[j],P);
|
||||||
#if USE_SVD
|
#if USE_SVD
|
||||||
|
if (max_p > 0)
|
||||||
|
{
|
||||||
|
// since we want to clamp the principal stress to max_p, we only need to
|
||||||
|
// calculate SVD when sigma_0^2 + sigma_1^2 + sigma_2^2 > max_p * max_p
|
||||||
|
btScalar trPTP = (P[0].length2() + P[1].length2() + P[2].length2());
|
||||||
|
if (trPTP > max_p * max_p)
|
||||||
|
{
|
||||||
btMatrix3x3 U, V;
|
btMatrix3x3 U, V;
|
||||||
btVector3 sigma;
|
btVector3 sigma;
|
||||||
singularValueDecomposition(P, U, sigma, V);
|
singularValueDecomposition(P, U, sigma, V);
|
||||||
if (max_p > 0)
|
|
||||||
{
|
|
||||||
sigma[0] = btMin(sigma[0], max_p);
|
sigma[0] = btMin(sigma[0], max_p);
|
||||||
sigma[1] = btMin(sigma[1], max_p);
|
sigma[1] = btMin(sigma[1], max_p);
|
||||||
sigma[2] = btMin(sigma[2], max_p);
|
sigma[2] = btMin(sigma[2], max_p);
|
||||||
sigma[0] = btMax(sigma[0], -max_p);
|
sigma[0] = btMax(sigma[0], -max_p);
|
||||||
sigma[1] = btMax(sigma[1], -max_p);
|
sigma[1] = btMax(sigma[1], -max_p);
|
||||||
sigma[2] = btMax(sigma[2], -max_p);
|
sigma[2] = btMax(sigma[2], -max_p);
|
||||||
}
|
|
||||||
btMatrix3x3 Sigma;
|
btMatrix3x3 Sigma;
|
||||||
Sigma.setIdentity();
|
Sigma.setIdentity();
|
||||||
Sigma[0][0] = sigma[0];
|
Sigma[0][0] = sigma[0];
|
||||||
Sigma[1][1] = sigma[1];
|
Sigma[1][1] = sigma[1];
|
||||||
Sigma[2][2] = sigma[2];
|
Sigma[2][2] = sigma[2];
|
||||||
P = U * Sigma * V.transpose();
|
P = U * Sigma * V.transpose();
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
// btVector3 force_on_node0 = P * (tetra.m_Dm_inverse.transpose()*grad_N_hat_1st_col);
|
// btVector3 force_on_node0 = P * (tetra.m_Dm_inverse.transpose()*grad_N_hat_1st_col);
|
||||||
btMatrix3x3 force_on_node123 = P * tetra.m_Dm_inverse.transpose();
|
btMatrix3x3 force_on_node123 = P * tetra.m_Dm_inverse.transpose();
|
||||||
|
|||||||
Reference in New Issue
Block a user