Quote:
|
Originally Posted by Joel J.
Yea, I agree. PD is pretty much the most common way to go about velocity control.
|
Ok. Good to know. (TODO: Comment out inetegral-handling code.)
Quote:
|
Originally Posted by Joel J.
- Set Kd to 0.
- Increase Kp slowly until the robot starts to oscillate around its setpoint. Watch the oscillations, are they dying down, or staying consistent?
- - + If yes, then set Kp to about 30% of its current value.
- - + If no, then Kp is set way too high, for some reason. Reduce it by 60%, and watch for the oscillations again. When the oscillations are reasonable (staying about constant, or dying away, and aren't too violent), then move to the next step.
- Increase Kd slowly until the robot "snaps" to its setpoint.
- If the robot "snaps" eventually, but there is some error between where it snaps, and the desired setpoint (and you can't live with this error), then you have to add in a bit of Ki.
- Ki is usally ends up being 1/Kd. I don't like Ki for velocity control purposes, but you can fiddle with it if you want.
|
After reading through the ambiguity in #2 there, I found that changing my constants from Kp = 1, Ki = Kd = 0, divisor =1 to divisor = 3 cleared the problem right up, and (under no load), it now works great!