Ok, good to know there are any serious problems since we are using the built-in objects. And plopping them in and fiddling was still plenty of work for us to get it working nicely but I can respect rolling your own. I do have one possible issue with the WPILib implementation however. It does not take into account the dt (loop interval time) when calculating integral and deriviative errors. You can get around it by adjusting your calculated (if you calculated them) Ki and Kd values according to your loop rate but since the PIDController object already knows the dt you set I think it probably should take it into account. Below is some pseudocode from wikipedia
http://en.wikipedia.org/wiki/PID_controller that illustrates how the dt could be taken into account. I would be interested in the experts opinion on this and I've been thinking it might be worth submitting an issue on the FirstForge page.
Code:
previous_error = 0
integral = 0
start:
error = setpoint - actual_position
integral = integral + (error*dt)
derivative = (error - previous_error)/dt
output = (Kp*error) + (Ki*integral) + (Kd*derivative)
previous_error = error
wait(dt)
goto start