Joystick

javadoc

This service allows input from usb joysticks or gamepads. You can attach to a joystick and examine axis or button data.  These button and joystick events can be sent to other services, such as servos or motor services.  It could be used for a "manual" override to take control of a robot.

Since Servos require a range of values from 0 to 180, and Joystick's raw data is between -1.0 and 1.0 a tranform is possible.   To transform -1.0 to 1.0 to 0 to 180 we need a multiplier and an offset.  In this case the multiplier is 90 and the offset is 90.

Arduino PWM values require a range between 0 and 255.  The multiplier would be 127 and the offset is 127 - this will allow the Joystick service to send correct values to an Arduino PWM.

Programmatic control can be done with Python through the Jython service.