So I just got back from a fairly long conversation about tuning PID parameters and other closed-loop control systems, and am wondering how most of you guys do it.
The key item of debate was whether or not it would be better to tune the P gain first (that is, start with I and D gains set to zero, as per the Ziegler-Nichols method), or to algorithmically relate P and I to D and a damping factor.
Sadly, as a tradition, our team usually doesn’t finish / assemble the robot 'till well after ship date, so our tuning tends to occur during 15-minute practice field runs.
LA Regional? I’ll be there, I probably can help. Thursday does not count for anything and you pretty much have all day between inspection and all that.
And the question isn’t so much whether or not we can do the tuning (we have in the past), but more whether or not there’s a tangible benefit in the more complex derivative-based method.
We always start with P, because frankly, a well tuned “P” term can almost completely negate the need for I and D. In fact, we’ve never had to use an I or D term on any of our robots.
In the past two years, we never used an I or D term (except for a controller that was I only…)
For VRC this fall, on the Cortex controller, we worked with the Zeigler-Nichols method to get good PID gains for our arms. It worked really really well, as we calibrated with one game piece in, so the mass changes with none or two game pieces (most use cases in that game) wasn’t very bad. After writing all of the spreadsheets to calculate the gains (and figuring out that the equations give you integral and derivative time instead of gain), I just did a data capture on the serial port, found some data in Excel (space delimited text FTW!), punched the gains back in, and it ran beautifully.
I’ve always manually found a good P-only gain anyway, so increasing kP until the system oscillates isn’t very hard and doesn’t take much time.
Same here, I can’t remember a final application we had that used either an I or D term. We’ve played with all three terms in testing, but always found that a finely tuned P controller worked much better for our needs.
And when we tune our constants, we do use the Ziegler–Nichols method.