private void updateXGaitSettings() { xGaitSettingsProvider.getSettings(xGaitSettings); // increase stance dimensions as a function of velocity to prevent self collisions double strideRotation = planarVelocityProvider.get().getZ() * xGaitSettings.getStepDuration(); double strideLength = Math.abs(2 * planarVelocityProvider.get().getX() * xGaitSettings.getStepDuration()); double strideWidth = Math.abs(2 * planarVelocityProvider.get().getY() * xGaitSettings.getStepDuration()); strideLength += Math.abs(xGaitSettings.getStanceWidth() / 2 * Math.sin(2 * strideRotation)); strideWidth += Math.abs(xGaitSettings.getStanceLength() / 2 * Math.sin(2 * strideRotation)); xGaitSettings.setStanceLength( Math.max( xGaitSettings.getStanceLength(), strideLength / 2 + minimumStepClearanceParameter.get())); xGaitSettings.setStanceWidth( Math.max( xGaitSettings.getStanceWidth(), strideWidth / 2 + minimumStepClearanceParameter.get())); }