public void testWalkingBackwardsSlow()
      throws SimulationExceededMaximumTimeException, ControllerFailureException, IOException {
    QuadrupedTestBehaviors.standUp(conductor, variables);

    variables.getYoPlanarVelocityInputX().set(-0.06);
    conductor.addSustainGoal(QuadrupedTestGoals.notFallen(variables));
    conductor.addSustainGoal(
        YoVariableTestGoal.doubleLessThan(
            variables.getYoTime(), variables.getYoTime().getDoubleValue() + 25.0));
    conductor.addTerminalGoal(YoVariableTestGoal.doubleLessThan(variables.getRobotBodyX(), -0.48));
    conductor.simulate();

    conductor.concludeTesting();
  }
  public void testWalkingInABackwardRightCircle()
      throws SimulationExceededMaximumTimeException, ControllerFailureException, IOException {
    QuadrupedTestBehaviors.standUp(conductor, variables);

    variables.getYoPlanarVelocityInputX().set(-0.1);
    variables.getYoPlanarVelocityInputZ().set(-0.06);
    conductor.addSustainGoal(QuadrupedTestGoals.notFallen(variables));
    conductor.addTerminalGoal(
        YoVariableTestGoal.doubleGreaterThan(
            variables.getYoTime(), variables.getYoTime().getDoubleValue() + 30.0));
    conductor.simulate();

    conductor.concludeTesting();
  }
  @Before
  public void setup() {
    try {
      MemoryTools.printCurrentMemoryUsageAndReturnUsedMemoryInMB(
          getClass().getSimpleName() + " before test.");
      ParameterRegistry.destroyAndRecreateInstance();

      QuadrupedTestFactory quadrupedTestFactory = createQuadrupedTestFactory();
      quadrupedTestFactory.setControlMode(QuadrupedControlMode.POSITION);
      quadrupedTestFactory.setGroundContactModelType(QuadrupedGroundContactModelType.FLAT);
      conductor = quadrupedTestFactory.createTestConductor();
      variables = new QuadrupedPositionTestYoVariables(conductor.getScs());
    } catch (IOException e) {
      throw new RuntimeException("Error loading simulation: " + e.getMessage());
    }
  }