Sensitive Control, Full Range

These methods were developed by Robert Chin and Patrick Neal for the 2000 FIRST competition

Polynomial Functions

One of the things that our team has done in order to make sure that we have sensitive control (vital for place balls anywhere), but still maintain the full range of speeds (0-255) without using a "turbo" button," is to map the analog joystick values to a polynomial function, such as the following:
p1_y = 127 + ((p1_y * p1_y)/149) + (p1_y/4) max 254
Note that you can also do higher degree polynomials depending on what you want the power ramp to be. The best way to actually go about figuring out what you want your polynomial to be is to use a graphing calculator and experiment, setting your window appropriately. You'll want to make sure that your polynomial exits at the proper maximum so that none of your joystick range is wasted. Generally it's a good idea to figure out the minimum value that your robot starts moving at (the value p1_y must be in order to start your robot moving forwards) and integrate that into your formula as so:
p1_y = 141 + ((p1_y * p1_y)/149) + (p1_y/4) max 254
Of course remember, that these formulas only deal with moving in the forward direction, you must have a corresponding subroutine to deal with reverse motion:
p1_y = 110 - ((p1_y * p1_y)/149) + (p1_y/5) max 110
Of course, if you're using a single joystick to control your drive using the algorithm suggested by Innovation First, you can simply apply that code after these statements:
PWM1 = (((2000 + p1_y - p1_x + 127) Min 2000 Max 2254) - 2000)
PWM2 = (((2000 + p1_y + p1_x - 127) Min 2000 Max 2254) - 2000)

"Turbo" Method

The turbo method involves using a button the joystick to switch between the the full range (either a polynomial function or linear control) and a subset of the full range. This allows precision handling of the robot. However, in most cases it's better just to map the control to a polynomial function as this encompasses the best of both worlds -- slow start and fast speed. The best use of the turbo method is to switch between a polynomial curve and linear control. Note that linear control does put a lot of stress on things, since it fails to have a "slow start."