# Zero Moment Point

En robotique, le zero-tilting moment point (ZMP) est un point dynamique caractéristique utilisé en locomotion, et plus particulièrement pour la locomotion des robots humanoïdes. Il représente les points dans l'espace où le moment des forces de contact a deux de ses trois coordonnées nulles, ce qui correspond à une condition de non-basculement par rapport à un plan (par exemple le plan du sol).

## Histoire du concept

La notion de ZMP a été présentée pour la première fois par Miomir Vukobratović au Troisième Congrès de l'Union pour la Mécanique Théorique et Appliquée qui se tenait à Moscou en janvier 1968. Le terme « zero moment point » fit son apparition dans des travaux publiés pendant les années qui suivirent.
L'intérêt pour le ZMP prit son essor dans les années 1990, alors que les roboticiens l'appliquaient avec succès aux lois de contrôle pour la marche bipède. Le modèle fondamental qui permit ces développements est celui du pendule inversé : le haut du corps ayant une masse plus importante que les jambes, la marche consiste en première approximation au mouvement d'un pendule inversé, c'est-à-dire une masse reliée à une base mobile par une tige de masse nulle (le modèle "CART"). La masse en question représente le centre de gravité du robot, la tige sa jambe d'appui, et le point de base mobile n'est autre que le ZMP. Ce modèle fut appliqué avec succès aux robots HRP-2 et HRP-4C. Il se reconnaît par leur démarche particulière où le centre de gravité reste à hauteur constante.

## Définition et calcul

Le ZMP est issu des équations de Newton-Euler (en) qui s'appliquent à tout système en mouvement dans l'espace. Celles-ci s'écrivent :
    $ma_{G}\ =\ mg+F^{c}$
    ${\dot {L}}_{O}\ =\ {\overrightarrow {OG}}\times mg+M_{G}^{c}$
où $m$ est la masse totale du robot, $g$ le vecteur gravité, $G$ le centre de gravité du système, $a_{G}$ l'accélération du centre de gravité et ${L}_{O}$ le moment angulaire du système pris en un point $O$ arbitraire, tandis que $F^{c}$ et $M^{c}$ désignent respectivement la résultante et le moment du torseur des forces de contact appliquées au système. Le torseur gravito-inertiel, qui ne dépend que des accélérations du système, est défini quant à lui par :
    $F^{gi}\ =\ m(g-a_{G})$
    $M_{O}^{gi}\ =\ {\overrightarrow {OG}}\times mg-{\dot {L}}_{O}$
Les équations de Newton-Euler s'écrivent alors de façon torsorielle : ${\cal {T}}^{gi}+{\cal {T}}^{c}={\boldsymbol {0}}$.
Le ZMP est un point $Z$ de l'axe inertiel défini par
    $M_{Z}^{gi}\times n={\boldsymbol {0}}$
où $n$ désigne un vecteur normal (typiquement la normale au sol). Par rapport au moment en un autre point de référence, la partie gauche de cette équation devient :
    $M_{Z}^{gi}\times n\ =\ (M_{O}^{gi}+{\overrightarrow {ZO}}\times F^{gi})\times n$
Soit en utilisant la formule de développement du double produit vectoriel :
    $M_{O}^{gi}\times n+({\overrightarrow {ZO}}\cdot n)F^{gi}-(F^{gi}\cdot n){\overrightarrow {ZO}}$
Supposons dans un premier temps que $O$ et $Z$ sont dans le même plan de normale $n$, de sorte que ${\overrightarrow {ZO}}\cdot n=0$. On obtient alors, en injectant l'expression ci-dessus dans la définition du ZMP:
    ${\overrightarrow {OZ}}\ =\ {\frac {n\times M_{O}^{gi}}{F^{gi}\cdot n}}$
On utilise cette formule en pratique pour calculer le ZMP à partir de mesures par un capteur de force ou une centrale inertielle.

## Lien avec le centre de pression

Le centre de pression est un point dynamique caractéristique d'un contact. Contrairement au ZMP, qui est défini en fonction de toutes les accélérations du robot, le centre de pression est une grandeur locale définie à partir des forces exercées à la surface d'un contact. Toutefois, lorsqu'il n'y a qu'un seul contact, ou que le robot marche sur un sol horizontal, le centre de pression et le ZMP coïncident.
La figure ci-contre représente le centre de gravité $G$, le centre de pression du contact pied-droit $C$ ainsi qu'un ZMP $Z$. Les points $Z$ et $C$ sont toujours alignés sur l'axe inertiel $\Delta ^{gi}$. Ce dernier ne passe pas nécessairement par le centre de gravité, à moins que le robot ne conserve son moment angulaire (${\dot {L}}_{G}=0$), ce qui est une hypothèse de travail courante en locomotion.

## Cas particulier du sol plat

Tant que le contact avec la surface ne rompt pas, le centre de pression réside nécessairement à l'intérieur de la surface de contact entre le robot et l'environnement. Lorsque les deux pieds du robot sont en contact avec la même surface (le sol), cette surface de sustentation ${\cal {S}}$ est l'enveloppe convexe de tous les points d'appui, c'est-à-dire l'ensemble des points situés « entre les deux pieds ». Cette surface permet de définir les pressions et frottements, et donc un centre de pression associé (voir Centre de pression pour plus de détails). Le centre de pression et le ZMP coïncidant, nous obtenons le critère :
    Critère de non-basculement : pendant la marche sans basculement, le ZMP est situé à l'intérieur de la surface de sustentation, définie comme enveloppe convexe des points d'appui.
Ce critère est le plus fréquemment utilisé pour la marche des robots humanoïdes sur sol plat$^,$.

## Cas général des contacts non-coplanaires

Le ZMP est toujours défini lorsque les contacts du système ne sont pas coplanaires, par exemple pour un bipède montant un escalier ou un quadrupède se déplaçant en terrain accidenté. Dans ce cadre plus général, la surface de sustentation ${\cal {S}}$ se calcule par projection polyédrique des contraintes de contact (loi de Coulomb, positivité des forces normales de contact) rapportées au torseur dynamique.