人走路时,每当抬起一只脚向前迈出,都会有极短的一瞬间单脚站立。我们做起来毫不费力,但对双足机器人来说,走路意味着每时每刻都要把不断想要摔倒的身体重新稳住。长期以来,用来判断这类机器人是否会摔倒的概念,正是零力矩点(Zero Moment Point)。
简单来说,零力矩点指的是:“脚底压向地面的力与地面回推的力,不会产生让身体向前后或左右倾倒的转动力的那一个点。”它常被简称为ZMP,由塞尔维亚贝尔格莱德米哈伊洛·普平研究所的米奥米尔·武科布拉托维奇(Miomir Vukobratović)在1968年的双足步行研究中首次提出,并于1970年代初为其定名。
本文将依次介绍零力矩点的含义及其配套概念支撑多边形、静态步行与动态步行的区别、日常与真实机器人中的例子,以及这一判据的局限与新的发展方向。
双足机器人保持平衡的原理
什么是零力矩点?

机器人站立时,地面会从脚底各处向上推。把这些力合成为一个力来看,地面反力绕两个水平轴的力矩均为零的位置,就是零力矩点。绕竖直轴的力矩不一定为零。当脚底平贴地面时,它被视为与压力中心(压力的中心点)位于同一位置。
- 支撑多边形(Support Polygon):包围着与地面接触的脚底的区域。单脚站立时就是那只脚的脚底,双脚站立时则包括两只脚及其之间的空间。
- 质心(Center of Mass):可以视为全身重量集中于一处的点,每走一步位置都会改变。
核心规则很简单。零力矩点只要留在支撑多边形内,脚底就能贴住地面撑住。如果这个点到达脚尖或脚跟边缘后仍有未平衡的倾覆力矩,脚可能绕该边缘转动,机器人也可能随之倾斜。
静态步行与动态步行的区别

与此前的行走方式相比,零力矩点为何重要就一目了然。双足机器人的步态大致可分为两种。
(1)静态步行(Static Walking)
让质心垂直投影到地面的点始终位于支撑多边形内的行走方式。无论在哪一刻停下都不会摔倒,但每一步都要缓慢移动身体,因此非常慢。1973年日本早稻田大学加藤一郎(Ichiro Kato)研究室的WABOT-1就是这样行走的。
(2)动态步行(Dynamic Walking)
基于ZMP的动态步行将运动惯性纳入计算,即使质心的竖直投影暂时离开支撑区域,也使零力矩点留在区域内。它像人一样利用向前倾的力,因此能走得快得多、自然得多。1984年,同一研究室的WL-10RD依据这一原理以动态平衡行走,首次在实践中展示了零力矩点。
通过简单例子理解零力矩点

【案例1】在起步的公交车里站稳
没抓扶手站着时,公交车突然起步,身体会向后倾,体重集中到脚跟一侧。压力中心到达脚跟边缘后,若仍有未平衡的倾覆力矩,脚就会绕该边缘转动,身体可能向后倾倒。我们下意识地屈膝、上身前倾,其实就是把被推出去的零力矩点重新拉回脚底以内的动作。
【案例2】人形机器人的脚踝传感器
2000年本田公开的ASIMO,以及2004年韩国KAIST吴俊镐(Jun-Ho Oh)教授团队公开的HUBO,都以零力矩点为基础行走。HUBO将脚踝的力/力矩传感器和脚底的加速度传感器的反馈用于ZMP控制等实时控制,以减小着地冲击与振动。这些机器人微微屈膝行走的样子,也是精细调节平衡的方法之一。
零力矩点的局限与新的发展方向

零力矩点是第一个让双足机器人稳定行走的判据,但它并不能解决所有情况。
(1)以平坦坚硬的地面为前提
这一判据假定脚底不打滑并均匀着地。在碎石地、冰面或坑洼山路这类脚会打滑或只有一侧着地的地方,仅凭这个点难以保证安全。
(2)停留在谨慎的步伐
它着眼于让脚底贴地保持平衡,步态偏保守,在双脚同时离地的奔跑或跳跃瞬间无法使用。关节电机要不停纠正姿态,也会消耗大量能量。
为突破这些局限,研究者们也探索了其他道路。
- 被动动力学步行(Passive Dynamic Walking):1990年由塔德·麦吉尔(Tad McGeer)展示的方式,不用电机,仅靠腿的摆动和重力走下平缓斜坡。
- 捕获点(Capture Point):2006年杰里·普拉特(Jerry Pratt)研究团队提出的概念,告诉机器人被推之后该把脚落在哪里才能停住。
- 强化学习(Reinforcement Learning):让机器人在虚拟空间中无数次摔倒并学习走路,从而找到在崎岖地面上也能保持平衡的步态。
零力矩点让我们把行走看作与摔倒之间永不停歇的拔河。今天的机器人能以更多样的方式行走和奔跑,但追问平衡在脚底下汇聚于何处的这一思路,仍是双足步行研究的出发点。
准确知道想要摔倒的力朝向哪里,并把这股力稳稳留在脚底之内,这就是双足机器人的第一步。