We did some rough testing on an Xbox 360 controller from FIRST Choice, and an Xbox One controller by getting each thumbstick to ‘stick’ to one side or the other, and write down the raw value being read by the computer (using the windows gamepad test utility). This range is more of less non-usable since we don’t want the robot moving when the particular axis is not being used.
This rough calculation showed that the Xbox One worst case was between 2.3% and 4% of the overall range, where the Xbox 360 was between 5% and 13% of the overall range. The motor output should be 0 in this range. Since there was fairly significant, we went with the Xbox One and this made a big difference.
Next we determined the range of joystick values which barely start to move the motors, and scale our outputs to be between that value and 1. See the ‘b’ parameter in Ether’s paper here (or the attached VI). Finally the actual sensitivity can be set with the ‘a’ parameter in the same paper. Remember that by default the LabVIEW VIs square your joystick input. So either disable it or account for it when you set the parameter.
One last thing our team did to help with the sensitivity was to add ‘kontrolfreek’ extenders to the Xbox One controller to make the physical stick higher. I’m not sure if this really helped or not, but it seemed to allow us to set the sensitivity higher.
Joystick_Sensitivity.vi (120 KB)
Joystick_Sensitivity.vi (120 KB)