I've been thinking about this over night. We are having issues with massive overshoot, leading to oscillation. So we want to drive it hard when we are a long way from the setpoint, but start ramping the inputs down much earlier so we have a chance to stop. Thus, I think we want high maximum outputs (but maybe not +/-1) and much lower Kp. This will mean that we still saturate the controller if we are a long way from the setpoint (eg doing a 180) but the saturation will stop further from the setpoint.
Perhaps we could test by disabling the PID then spinning at full speed. When we stop, we see how much further it goes under inertia. We need the saturation point to be higher than this (ie tune our Kp to saturate at an angular error higher than that).
I've been thinking about this over night. We are having issues with massive overshoot, leading to oscillation. So we want to drive it hard when we are a long way from the setpoint, but start ramping the inputs down much earlier so we have a chance to stop. Thus, I think we want high maximum outputs (but maybe not +/-1) and much lower Kp. This will mean that we still saturate the controller if we are a long way from the setpoint (eg doing a 180) but the saturation will stop further from the setpoint. Perhaps we could test by disabling the PID then spinning at full speed. When we stop, we see how much further it goes under inertia. We need the saturation point to be higher than this (ie tune our Kp to saturate at an angular error higher than that).