# Zero Moment Point (ZMP)

The ZMP(Zero Moment Point) is something you will hear often in robotics but just what exactly is it ? and why is useful ?

The old school definition is that its a point on the ground where the inertial and gravity moments cancel out resulting in a net zero moment. This definition is not very helpful and mostly used to confuse non roboticists, however the simpler definition is that its simply the center of pressure (as can be deduced from the figure on the right). The claim that the ZMP is equivalent to the COP was backed up in [1] and [2] it led to much controversy at the time but eventually the (conceptually) much more useful COP came out on top.

Since the center of pressure (COP) is simply the average of the pressure distribution it can be defined mathematically as follows

and it can be easily calculated from a force torque sensor by comparing the total downwards force vs the transverse torque. So for the x direction for example as follows

Now the reason why COP/ZMP is important is that it lets us gage the stability of the foot. For example, if the ZMP moves towards the edge of the foot, then the foot starts tipping over. Uncontrolled tipping is not good and often times leads the robot to fall over.

Another reason why the ZMP concept is important was highlighted by [3] where it shown that the relationship between the ZMP, COM and force at the COM can be explained analogously to a inverted pendulum cart as shown on the left. So as you might imagine, in order to move the COM(or reject a disturbance force at the COM) we have to move the ZMP point. However we have to make sure that the ZMP point is moved such that it only moves inside the support area(otherwise the foot will tip), this constraint is represented by the walls in the figure. Achieving position control while making sure that the ZMP is inside the foot area is a whole area of research on its own so we will use the ZMP concept extensively from now on.

Now for some practical tips about using the ZMP, its not necessary to know this stuff the first time round so if you want then feel free to skip to the next section.

Some things that weren’t mentioned so far was the effects of having the Force/Torque sensor mounted above the foot. Previously we assumed that the sensor was right at the foot-floor contact however in a practical application this is impossible.

Now what about the two legged scenario, how would you calculate the ZMP based on the data from two Force/Torque sensors ? A position weighted average of the two ZMP’s can be used as shown below

Another issue is with how to calculate the ZMP of a multi-body based not on sensor but on model data. In other words, based on knowledge of the joint trajectories or the center of mass trajectory we would like to calculate the ZMP position. This is useful because if we could solve this problem then we could start thinking about solving the inverse problem. That is for a desired ZMP position we could find the necessary joint trajectories or the required center of mass trajectory. The center of mass – ZMP relationship is shown below and the joint acceleration – ZMP relationship will be skipped for now.

` `

Next: Center Of Mass

**References**

[1] “Postural stability of biped robots and the foot rotation indicator point”, Ambarish Goswami, International Journal of Robotics Res., vol. 18, no. 6, pp. 523-533, 1999

[2] “Forces Acting on a Biped Robot. Center of Pressure – Zero Moment Point”, Philippe Sardain and Guy Bessonnet, IEEE Transactions on Systems, Man, and Cybernetics – Part A: Systems and Humans, Vol. 34, No. 5, September 2004

[3] “High Mobility Control of Humanoid Robots Based on an Analogy of ZMP-COG Model and Carted Inverted Pendulum Model”, Tomomichi Sugihara and Yoshihiko Nakamura, Robotics Socitey of Japan anual conference, Vol. 24, No.1, pp. 74-83, 2006

Your CoP équation (first equation) is false, you can see that it’s equal 1. I think you should remove x from the denominator.

Thank you! I corrected it.

ok, but i was searching for the method where the robot don’t exactly knows the CM of its body, cas in real life situation our robot has to use so many tools which mass can be determined by our robot but the CM of that external body cant be exactly calculated if that body is not uniform. So in this case how can the robot be balanced properly. if their is solution for this problem please send me email.