@ContinuousIntegrationAnnotations.ContinuousIntegrationTest(estimatedDuration = 39.1)
@Test(timeout = 200000)
public void testRecoveryWhileInFlamingoStance() throws SimulationExceededMaximumTimeException
{
setupTest(null, false, false);
assertTrue(drcSimulationTestHelper.simulateAndBlockAndCatchExceptions(1.0));
RobotSide footSide = RobotSide.LEFT;
FramePose3D footPose = new FramePose3D(
drcSimulationTestHelper.getAvatarSimulation().getControllerFullRobotModel().getEndEffectorFrame(footSide, LimbName.LEG));
footPose.changeFrame(ReferenceFrame.getWorldFrame());
footPose.prependTranslation(0.0, 0.0, 0.2);
Point3D desiredFootPosition = new Point3D();
Quaternion desiredFootOrientation = new Quaternion();
footPose.get(desiredFootPosition, desiredFootOrientation);
FootTrajectoryMessage footPosePacket = HumanoidMessageTools.createFootTrajectoryMessage(footSide, 0.6, desiredFootPosition, desiredFootOrientation);
drcSimulationTestHelper.publishToController(footPosePacket);
assertTrue(drcSimulationTestHelper.simulateAndBlockAndCatchExceptions(2.0));
StateTransitionCondition pushCondition = null;
double delay = 0.0;
Vector3D forceDirection = new Vector3D(0.0, 1.0, 0.0);
double magnitude = 180.0 * getForceScale();
double duration = 0.2;
pushRobotController.applyForceDelayed(pushCondition, delay, forceDirection, magnitude, duration);
assertTrue(drcSimulationTestHelper.simulateAndBlockAndCatchExceptions(1.5));
}