Disturbance Observer


The disturbance observer is a tool for compensating disturbances, it is very useful and widely utilized in robotics.

When applying a force to a object via a motor we would expect the object to accelerate according to Newtons second law  F=m\ddot{x} as show in the block diagram below.

However in practice we often find that some sort of unmodeled and undesired force is acting on our object and as a result the acceleration is different from what we would expect.

This is where the disturbance observer comes in. As the name suggests it observes the value of the disturbance. Once we know the value of the disturbance, then we can compensate it such that the system will behave as if there was no disturbance force acting on it. An example implementation of the disturbance observer is shown below

The low pass filters parameter ,g,  can be tuned to change the performance of the system. If its too high then the system will become unstable, if its too low then the system might not respond to high frequency disturbances fast enough. This type of disturbance observer is based on acceleration signals but in practice our sensors are usually encoders, which are essentially position sensors, so we would have to discretely differentiate the position data to get an acceleration curve. Unfortunately discrete differentiation can introduce noise and time delay into the acceleration data. Therefore some of the more practical implementations of the disturbance observer rely on position or velocity data. Actually in the literature disturbance observers which work on the Cartesian(a.k.a workspace) level are known as workspace observers or WOB for short, therefore the above block diagram is actually a WOB and DOB is shown below.

As can be seen the joint space implementation is not much different from the workspace implementation, the only real difference is that instead of  F=m\ddot{x} the rotational equivalent  \tau=J_n\ddot{\theta} is used. By the way  J_n is the nominal inertia of the plant while  J is the real. As you may have noticed, for this scheme to work we have to know the weight/inertia of the link to which the motor is attached. However the good news is that this scheme still works as long as the nominal mass/inertia is greater than the real mass inertia. So some trial and error checking is allowed although the closer we are to the real value the better.

Next: Position Control

Previous: Inverse Kinematics

 Posted by at 3:59 pm

  3 Responses to “Disturbance Observer”

  1. Hi there, just became aware of your blog through Google,
    and found that it’s really informative. I am gonna watch out
    for brussels. I will be grateful if you continue this in future.
    Lots of people will be benefited from your writing. Cheers!

  2. it’s helpful.thanks

  3. 1. Why the filter parameter, g is higher, the system tend to be unstable?
    2. Why the system will work properly as long as the nominal value Jn is greater than real J? Does this mean if the Jn is smaller than J the system is going to be unstable?
    3. In practice, what control method did people use to control robot arm? Error-driven based PID or the method you mentioned that combine position/force control with DOB?

    Your valuable comments will be greatly appreciated! Thanks.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">