Thanks thats a great document!
Of course I've played with the P integral to optimise the overshoot, and this works fine in 'Normal' operation.
My issue is for example if the unit is switched off and lying on the ground. When it's activated it jumps into life and over shoots initally until it finds the center point. From then on it's ok. One of the things I had to do was add the gyro output to the angle reading which made it much more stable.
I've atatched the FlowStone project (cool PC graphical DSP software) so you can see where i'm at.
This is my kit list:
RD02 Robot Drive Sytem from Robot Electronics (COM port controlled)
Phidgets Spatial 3/3/3 Gyro acelerometer board
FlowStone FREE PC DSP Graphical Prgramming language from DSPRobotics
Thanks again for your help!