Tuning PID Parameters

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.

Easiest way: do both and find which works the best. I mean, it won’t take more than 30 minutes…

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.

It’s thus a little difficult to test both xD.

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.

Nah, we’ll be at NYC first, and then SVR

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.

Probably time, any way you do it, you will get the same constants ± a tiny fraction

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.

Have you used this method successfully with the built-in PID in the Jaguars for speed control?
*
*

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.

Thanks for the responses–I’ll bring them up in the next discussion we have. It’s nice to know I’m not the only person using Z-N for tuning =)