public static void startController(WandererController wandererController) {
    AcsellSetup.startStreamingData();

    YoVariableRegistry registry = new YoVariableRegistry("wanderer");
    WandererRobotModel robotModel = new WandererRobotModel(true, true);
    PeriodicThreadScheduler scheduler = new PeriodicRealtimeThreadScheduler(45);
    YoVariableServer variableServer =
        new YoVariableServer(
            WandererSingleThreadedController.class,
            scheduler,
            robotModel.getLogModelProvider(),
            robotModel.getLogSettings(),
            0.01);

    AcsellSetup wandererSetup = new AcsellSetup(variableServer);
    PriorityParameters priority = new PriorityParameters(PriorityParameters.getMaximumPriority());
    WandererSingleThreadedController communicator =
        new WandererSingleThreadedController(
            robotModel, priority, variableServer, wandererController, registry);

    variableServer.start();

    wandererSetup.start();
    communicator.start();

    ThreadTools.sleepForever();
  }
  @After
  public void destroySimulationAndRecycleMemory() {
    if (simulationTestingParameters.getKeepSCSUp()) {
      ThreadTools.sleepForever();
    }

    // Do this here in case a test fails. That way the memory will be recycled.
    if (drcFlatGroundWalkingTrack != null) {
      drcFlatGroundWalkingTrack.destroySimulation();
      drcFlatGroundWalkingTrack = null;
    }

    if (blockingSimulationRunner != null) {
      blockingSimulationRunner.destroySimulation();
      blockingSimulationRunner = null;
    }

    pushRobotController = null;
    doubleSupportStartConditions = null;
    pushCondition = null;
    MemoryTools.printCurrentMemoryUsageAndReturnUsedMemoryInMB(
        getClass().getSimpleName() + " after test.");
  }
  @After
  public void destroySimulationAndRecycleMemory() {
    if (simulationTestingParameters.getKeepSCSUp()) {
      ThreadTools.sleepForever();
    }

    // Do this here in case a test fails. That way the memory will be recycled.
    if (drcSimulationTestHelper != null) {
      drcSimulationTestHelper.destroySimulation();
      drcSimulationTestHelper = null;
    }

    if (behaviorCommunicatorClient != null) {
      behaviorCommunicatorClient.close();
    }

    if (behaviorCommunicatorServer != null) {
      behaviorCommunicatorServer.close();
    }

    MemoryTools.printCurrentMemoryUsageAndReturnUsedMemoryInMB(
        getClass().getSimpleName() + " after test.");
  }