public DRCSimulationTestHelper(SimulationTestingParameters simulationTestParameters, DRCRobotModel robotModel, CommonAvatarEnvironmentInterface testEnvironment) { this.robotModel = robotModel; this.walkingControlParameters = robotModel.getWalkingControllerParameters(); this.simulationTestingParameters = simulationTestParameters; robotName = robotModel.getSimpleRobotName(); if (testEnvironment != null) this.testEnvironment = testEnvironment; simulationStarter = new DRCSimulationStarter(robotModel, this.testEnvironment); fullRobotModel = robotModel.createFullRobotModel(); HumanoidReferenceFrames referenceFrames = new HumanoidReferenceFrames(fullRobotModel); scriptedFootstepGenerator = new ScriptedFootstepGenerator(referenceFrames, fullRobotModel, walkingControlParameters); guiInitialSetup = new DRCGuiInitialSetup(false, false, simulationTestingParameters); networkProcessorParameters.enableNetworkProcessor(false); networkProcessorParameters.enableLocalControllerCommunicator(true); List<Class<? extends Command<?, ?>>> controllerSupportedCommands = ControllerAPIDefinition.getControllerSupportedCommands(); for (Class<? extends Command<?, ?>> command : controllerSupportedCommands) { Class<?> messageClass = ROS2Tools.newMessageInstance(command).getMessageClass(); IHMCROS2Publisher<?> defaultPublisher = createPublisherForController(messageClass); defaultControllerPublishers.put(messageClass, defaultPublisher); } defaultControllerPublishers.put(WholeBodyTrajectoryMessage.class, createPublisherForController(WholeBodyTrajectoryMessage.class)); defaultControllerPublishers.put(MessageCollection.class, createPublisherForController(MessageCollection.class)); defaultControllerPublishers.put(ValkyrieHandFingerTrajectoryMessage.class, createPublisherForController(ValkyrieHandFingerTrajectoryMessage.class)); }