|
Re: PID control loops - closed loop feedback
If you start dropping values off of your integral, you are going to have a hard time keeping a steady state (ie velocity = 0) for any amount of time. You won't have a speed error, and so your integral won't change, but you still want it to hold still.
Rick is probably right in that you can increase your performance by dropping values off during times of high theta change (high omega), but the complexity of performing that may become difficult in C--I would think an object oriented language would assist much more in this (dynamically sized queues are also really difficult to program on our tiny little memory block on the robot...). Conceivably you could make another PID loop feed into your main one to change the constant's values, but just the straight loop works quite well with a little driver knowledge. I think that inputting another loop or trying to dynamically drop values will either make it far too jumpy or unstable.
One last (though possibly minor) problem is drawing too hard on the battery and overheating the motors. We considered zeroing the integral if the direction of the motion was opposite the target direction but concluded it would draw too hard and be harder to control in the long run.
__________________
~Alex Baxter
Programming, Arms operation, Team 254
|