摘要
在人形机器人研究中,零力矩点(Zero-Moment Point, ZMP) 是一种极为重要的物理概念。它提供了一种不同于传统方式的平衡判断方法—不是直接观察机器人是否“站稳”,而是通过接触力(Contact Force)的分布来判断是否稳定。更具体地说,ZMP 是地面反作用力(Ground Reaction Force, GRF)的合力作用点,也就是地面对机器人脚底施加的所有支撑力的“合力位置”。如果机器人身体产生的惯性力和重力导致的合力矩在这个点上恰好为零,那么该点就是零力矩点。

从静态的角度来看,判断一个物体是否平衡,我们只需检查其重心投影(Projection of Center of Mass, CoM)是否落在支撑多边形(Support Polygon)内部—就像人类站立时,身体的重心必须在双脚之间,才能不倒。而在动态情况下(例如机器人行走、奔跑、甚至跳舞时),重心在不断移动,这时仅靠重心投影就无法准确判断稳定性。于是用 ZMP 来取代重心投影,成为动态平衡的核心指标:

这看似简单,却是实现“类人运动”的关键。ZMP 不仅代表了平衡状态的“物理映射”,还隐含了机器人身体与地面之间复杂的动力学关系:重力、惯性力、接触力矩在一个点上被协调地抵消。它相当于让机器人学会了“如何用力站稳”,而不仅仅是“站着不动”。
零力矩点(ZMP)的数学定义
要理解人形机器人如何在复杂舞蹈动作中保持平衡,就必须深入到一个核心方程—零力矩点(Zero-Moment Point, ZMP)的数学定义。ZMP 被定义为一个点 ,它满足以下条件:

以该点 p_z为参考,所有来自地面的接触力(contact forces) 所产生的合力矩(total moment) 在水平方向上为零。换句话说,ZMP 是这样一个特殊的位置—如果你把它当作力矩的参考点,机器人脚底所有力的“旋转效应”刚好完全抵消。
想象一个机器人脚掌上有多个受力点 p_i,每个点受到地面反作用力 f_i。这些力会对机器人身体产生一系列的转动力矩。如果我们能找到一个点 p_z,使得所有这些力矩在该点处相互抵消、合为零,那么这个点就是 ZMP。
从控制角度看,这个定义非常强大:

骨盆在动作(如跳跃落地)中相对于某个参考点的前向落地位置比例
这一定义让我们能够将“保持平衡”这一抽象的概念,转化为一个可计算的几何问题:给定若干个力的大小、方向和作用点,我们可以通过该方程精确计算出 ZMP 的位置。因此在人形机器人的控制系统中,实时求解 ZMP 就像在追踪一个“虚拟平衡点”。控制算法不断地通过关节力矩、重心移动和地面反力来调整身体姿态,确保这个 ZMP 始终“走在安全的范围内”。在舞蹈场景中,这个过程尤为复杂。因为机器人身体每个动作—无论是抬臂、旋转还是跳跃,都会改变惯性分布和接触力矩。ZMP 方程提供了一种通用的动力学框架,使控制器能够在动态中实时重新计算新的平衡点,从而实现流畅、稳定、甚至富有节奏感的动作。

双足机器人行走阶段示意图
要从数学上确定零力矩点(ZMP),我们把 ZMP 定义为使所有接触力矩总和为零的点 p_z,对每个项展开叉乘并写成矩阵形式,可以得到

假设该人形机器人在平坦地面上行走,因此所有接触点及零力矩点(ZMP)在 z 轴方向的分量均为零:

前两个等式为

可以将这前两个方程简洁地写为:

也就是说,平坦地面上的零力矩点(ZMP)位置是所有接触点位置 pi的加权平均值(weighted sum),加权系数是各接触点的竖直支撑力。由于地面对脚底的支持力始终向上(fzi≥0)有:

因此,ZMP实际上是接触点的一个凸组合(convex combination)。这意味着——当所有接触力都是单向(只向上)时,ZMP必定位于接触面的凸包内。而这个凸包的二维投影区域,被称为 支撑多边形(Support Polygon)。只要ZMP保持在支撑多边形内部,机器人就能保持稳定;一旦ZMP越界,机器人便会倾倒。

这说明在平面接触假设下,ZMP 等价于“受力点的位置关于垂直地面反力的加权中心”——即常说的压力中心(Center of Pressure, CoP):用每个接触点的位置按其垂直接触力加权平均得到的点。物理上这意味着只要我们知道各接触点的垂直反力 fzi和它们在平面上的位置,就能直接求出 ZMP;在工程实现中,常用踝下或脚底的力/压分布传感器或力台(force plate)来实时测量这些垂直力并计算 ZMP。需要注意的是,这一简化依赖于“平地且以垂直力为主”的假设:当存在显著的剪切力、分布式力矩或脚底发生翻转(non-planar contact、大倾角接触)时,ZMP 的计算和物理意义会更复杂,必须回到更一般的三维矩方程来处理。总体而言,这组推导既给出了 ZMP 的精确计算公式,也清晰地揭示了为何在动态平衡控制中我们只需关注垂直地面反力来定位那个决定稳定性的“虚拟支点”。根据计算得到的ZMP可以帮助控制器判断当前步态是否稳定:

从力矩平衡到ZMP-CoM关系
在理解ZMP(Zero Moment Point, 零力矩点)与机器人重心(Center of Mass, CoM)之间的关系之前,我们先从最基本的力矩平衡方程出发。
一个机器人在地面上站立时,地面对它的接触力可以表示为多个点力的合力:

其中 p_c是重心位置,L_c是绕重心的角动量。通过加减ZMP位置 p_z使其显式出现:

根据ZMP的定义,第一项为零,因此只剩下:

这一步推导的物理意义非常深刻:
再与牛顿方程:

结合可得:

这个式子建立了力学平衡(moment balance)与运动学响应(CoM加速度)之间的直接联系。揭示了一个重要的控制原理:
物理直觉与工程意义:如果将ZMP看作机器人“脚下的支点”,那么这个方程描述的就是:

线性倒立摆模型(Linear Inverted Pendulum Model, LIPM)
ZMP(Zero Moment Point) 提供了判断稳定性的物理依据,而线性倒立摆模型(LIPM) 则是将这一物理概念转化为可计算、可控制的数学模型。它是目前几乎所有动态平衡算法(如ZMP控制、步态生成、踝关节补偿)的基础。
机器人行走时,身体的垂直高度几乎不变,通常只关心水平(x、y)方向的平衡,因此只需关注 L_x、L_y 分量,即为了让模型在实时控制中更易计算,引入两个常见假设:
在这两个假设下,ZMP–CoM关系式可大幅简化为:

这就是著名的线性倒立摆模型(LIPM)。它的物理意义非常直观:
更形象地说:ZMP 在“推”重心(CoM)——让它向稳定方向或失衡方向移动。这也是为什么LIP模型虽然简单,却是几乎所有人形机器人步态控制(如ASIMO、Atlas)的核心基础。
线性倒立摆系统是一个不稳定系统(unstable system),因为其加速度与位移方向相同(正反馈):

这意味着重心一旦偏离ZMP,偏差会随时间指数增长。但正因为这种不稳定性,才赋予了机器人“需要主动控制”的特性。控制器(例如ZMP控制器或模型预测控制 MPC)会不断调节ZMP的位置,使其“推”回重心,从而维持平衡。这就像人类行走时通过脚踝微调支撑点位置来稳定身体一样—机器人同样需要“学会”让自己的ZMP始终位于支撑多边形内部。
总结
当机器人进行复杂舞蹈动作时,比如单脚旋转或抬腿挥臂,身体产生的惯性矩会让平衡变得非常脆弱。控制系统通过预测并调整 ZMP 轨迹,让脚底的地面反作用力始终“托住”它的身体,从而在动态中保持稳定。这种控制方法,使得机器人不仅能走,更能优雅地跳舞。
因此ZMP不仅仅是一个理论上的定义点,它是连接“动力学平衡分析”和“控制系统稳定性”的关键桥梁。ZMP的实时计算与控制,是让人形机器人能够“像人一样走路”的数学基础。