Re: [SeattleRobotics] Re: Robotic control algorithms
- On Fri, 2008-05-02 at 23:24 +0100, Peter Balch wrote:
> From: "Kevin Ross" <kevinro@...>If you are trying to achieve the desired speed in the minimum time you
> You seem to be referring to any mismatch between desired and actual speed as
> "overshoot". I'm simply referring to what is called "overshoot" in
> discussions of controllers. For instance, the first graph in
> shows overshoot. The word "overshoot" is used in that technical sense
> throughout the article and throughout any discussion of PIDs.
> > your simulation must be
> > broken. Simple laws of physics will ALWAYs apply. There is a reason that
> > PID
> > exists, not just P.
> The laws of physics predict that there will be overshoot using a P
> controller that controls the position of a motor. The laws of physics
> predict that there will NOT be overshoot using a P controller that controls
> the speed of a motor.
> There are many PID controllers on the web. Can you find one that
> demonstrates overshoot in a speed controller. (Remember, most of the demos
> are of position controllers.)
will have overshoot. It is a critically damped system.
If you have a system that is over damped you can achieve the desired
speed without overshoot, but it will take longer to get to the desired
speed. (Just turn down the gain of the P term.)
PID works on the difference between desired and actual. It does not
matter if the error term is position, speed, rotation, or anything else
you are controlling. So it works the same no matter what the system is.
If it overshoots for position, then it will overshoot for speed. If it
does not overshoot for speed then it will not overshoot for position.
But believe me, for a critically damped controller it will overshoot.
Just like the Wikipedia graphs.
>Momentum is mass * velocity
> > Sorry, momentum is a force.
> Momentum is not a force in any physics textbook I've ever read.
Force is mass * acceleration
> The laws of our universe make it so that a mass tends to resist a change inYou are referring to the physics law:
> velocity. That's momentum. A mass does not resist a change in acceleration.
"A body moving on a level surface will continue in the same direction at
a constant speed unless disturbed."
But it the real world it IS disturbed, by wind resistance, and friction.
There is a lot of friction in a motor control system.
>A PID controller changes the voltage (or current) to a motor (in this
> That's why momentum causes overshoot in a position controller. And why
> momentum cannot cause overshoot in a speed controller. There's a fundamental
> difference between a position controller and a speed controller.
> >>> 6) Changes in the mass of your robot
> >> That has no effect on overshoot. It only affects the rate of response.
> > If your controller is outputting a force to keep a robot at a speed, and
> > the
> > mass of the robot changes, the robot is going to accelerate.
> There will be a mismitch in speed which will be corrected by the controller.
> There will be no overshoot.
> If there is no sensor and power-control lag then a P controller will not
> cause overshoot. Other "real-world" factors may cause a speed mismatch but
> the controller itself will not cause overshoot.
case) the motor does not instantaneously change the speed. So there is
lag in the system. The lag is what causes overshoot in a critically
damped system. If there was no lag, you would not need PID.
Kipton Moravec KE5NGX
"Always do right; this will gratify some people and astonish the rest."
> In the real world, the D term is low pass filtered for frequenciesI hadn't realised that. I guess it's obvious when someone points it out.
> above the loop response. The effect is to cap the D term gain for
> frequencies above the loop response.
I knew that D was sensitive to noise but I'd always been wary of filtering
it because filters introduce delay and delay causes oscillation.
> > To start with, there is a delay in the system of 1/20 sec at 20 Hz.(That was dpa's statement. And graphs and robot.)
> I took a guess from your statement: "Here is a plot of a PD velocity
> controller, showing the controller variables and output for
> 6 seconds at 20 Hz, 120 samples, for my SR04 robot."
> I jumped to the conclusion that the 20 Hz was the servo pulse updateAh. I was searching for something subtle in the graphs.
> rate. I hope my parachute opened.
> > If you remove the D term, check the overshoot and ringing.I just realised something. You were suggesting in your previous post that "a
> > I bet it will go up.
conventional D term cannot compensate for this [20mS] delay". Therefore the
D term isn't there for that purpose. It's a velocity controller so D is not
there because of momentum. It must be there simply for "balancing the I and
D terms". So if you remove both I and D then you wouldn't expect extra
overshoot and ringing.
And why can't D compensate for a fixed delay?