Skip to main content

Controllers

The controllers that we mainly use are PS4 controllers and Thrustmasters.

Modifying input values​

When making your driving commands extra fancy, you might want something other than the -1 to 1 value from your joysticks.

Direction/Angle​

You can combine the two axis' of a thrustmaster or thumbstick to find what angle the stick is pointing in!

/** Returns a value of -180 to 180 degrees, forward is zero, left is positive, right is negative, >>not touching the joystick is also measured as zero<<*/
private double getJoystickDegrees(int horizontalAxis, int verticalAxis) {
double xAxis = -controller.getRawAxis(horizontalAxis);
double yAxis = -controller.getRawAxis(verticalAxis);
return Math.toDegrees(Math.atan2(xAxis, yAxis));
}

Magnitude​

The magnitude is the distance a joystick is from the center.

private double getJoystickMagnitude(int horizontalAxis, int verticalAxis) {
double xAxis = -controller.getRawAxis(horizontalAxis);
double yAxis = -controller.getRawAxis(verticalAxis);
double value = Math.sqrt(Math.pow(xAxis, 2) + Math.pow(yAxis, 2));

double value = Math.min(1.0, Math.max(0.0, value);//clamp the value between 0 and 1
return value;
}

Squared inputs and Deadbanding​