ZMP 到底是什么?为什么 ASIMO 能稳稳地走起来?

📅 2026/8/25 22:48:26
ZMP 到底是什么?为什么 ASIMO 能稳稳地走起来?
上一篇我们聊到人形机器人的发展大致经历了这样一条路线ASIMO 的 ZMP → Boston Dynamics 的模型控制 → 宇树等机器人的强化学习。很多人看到这里可能会有一个问题ZMP 到底是什么为什么二十多年前的 ASIMO没有强化学习没有今天这么强的算力却已经可以非常稳定地走路、上下楼梯甚至小跑这篇我们就从 ZMP 开始。01机器人走路最重要的第一件事别倒先想一个最简单的问题。一个人站在地上什么时候会倒如果身体慢慢向前倾倾到一定程度之后即使脚还没有动人也会向前摔倒。最简单的理解就是身体产生的“翻倒趋势”已经超过脚底能够支撑的范围了。如果机器人完全静止我们经常会看一个东西重心投影。只要机器人的重心投影还在脚底支撑区域里面一般就不会倒。但问题来了。人走路的时候并不是静止的。身体会向前加速。会减速。腿会摆动。上半身也在运动。这时候除了重力还有大量的惯性力。所以只看重心已经不够了。这就引出了一个非常重要的概念ZMPZero Moment Point。中文一般叫零力矩点。02ZMP到底是什么先不看复杂公式。可以把 ZMP 理解成机器人脚底下所有重力和运动产生的惯性效应综合起来之后“不会让机器人继续翻倒”的那个点。更准确一点说是地面上的一个点在这个点处地面反作用力产生的水平翻转力矩为零。如果这个点还落在机器人能够支撑的区域里面那么在经典 ZMP 假设下机器人就还有能力通过脚底支撑住自己。单脚站立的时候支撑区域基本就是这一只脚的脚底。双脚站立的时候则是两只脚接触区域共同形成的支撑多边形 Support Polygon。所以早期双足机器人有一个非常经典的原则想办法让 ZMP 始终待在支撑多边形里面。这样机器人就不容易绕着脚底边缘翻过去。这也是为什么很多人会把 ZMP 简单理解成“让机器人走稳的方法。”严格来说ZMP 本身更像是一个动力学平衡指标和约束条件而不是完整的控制器。梶田秀司的《仿人机器人》里第 3 章基本就在系统讲这件事情ZMP、地面反作用力、机器人动量以及怎样根据机器人运动计算 ZMP紧接着第 4 章就是如何利用这些东西生成双足步态。添加图片注释不超过 140 字可选03为什么有了ZMP机器人就能“动态走路”了这里有一个特别容易混淆的地方。ZMP 不等于重心。机器人静静站着的时候两者看起来很像。但一旦机器人开始加速它们就不一样了。用最经典的线性倒立摆模型可以得到一个非常漂亮的关系这里是机器人的质心位置是 ZMP是质心高度是质心水平加速度。这个公式其实在告诉我们一件非常重要的事情机器人可以通过改变身体的加速度改变 ZMP 的位置。也就是说机器人不一定非得像老奶奶一样每一步都先把重心慢慢挪到脚底上方然后再抬另外一只脚。它可以利用自己的惯性。身体向前运动。腿继续迈出去。然后下一只脚接住身体。这就是动态步行。而不是早期那种非常缓慢的静态步行。Honda 最早的 E0 就属于非常典型的静态步行一步大约需要 5 秒之后 E2 才实现了约 1.2 km/h 的动态步行。04那怎么利用ZMP让机器人走路经典思路其实非常工整。假设我们已经知道机器人下一步准备踩在哪里。那么可以第一步规划脚的位置。机器人左脚踩这里。右脚下一步踩那里。第二步设计一条目标 ZMP 轨迹。让它在单脚支撑时落在支撑脚里面。双脚支撑的时候再从一只脚平滑转移到另外一只脚。第三步根据目标 ZMP反推出机器人的质心应该怎么运动。因为质心怎么加速会直接影响 ZMP。第四步再规划摆动腿轨迹。脚什么时候抬起来。抬多高。什么时候向前。在哪里落地。第五步通过逆运动学算出所有关节角度。最终得到的其实就是一整套随时间变化的机器人运动轨迹。然后机器人按照这套轨迹去执行。这就是早期很多人形机器人非常经典的Walking Pattern Generation也就是步态模式生成。添加图片注释不超过 140 字可选05ASIMO为什么看起来走得那么稳ASIMO 正是这套思想非常经典的代表。Honda 会先定义一个目标 ZMP。再根据目标 ZMP调整上半身运动、足部轨迹和整个机器人姿态生成一套目标 Walking Pattern。理论上如果机器人模型完全准确地面完全平整关节执行完全准确外界也没有干扰那么只需要不断播放这条轨迹机器人就可以一直走下去。Honda 自己在 ASIMO 的技术资料里其实就明确讲过这个逻辑。但现实世界显然不会这么完美。地面会有一点高低差。电机跟踪会有误差。机器人模型也不可能百分之百准确。甚至还可能有人突然推它一下。所以 ASIMO 并不是简单地“离线算好然后闭着眼睛播放”。它在目标步态外面还有一整套在线稳定化控制。Honda 当年公开的系统里就包括地面反力控制。目标 ZMP 控制。落脚位置控制。当实际机器人和理想步态出现偏差时这些控制器会对原来的步态进行修正。所以更准确地说ASIMO 的核心范式是“预先规划好的稳定步态 在线稳定化修正”。而不是今天机器人领域越来越常见的根据当前状态不断重新决定接下来应该怎么走。这两个思路非常不一样。06问题也正是从这里开始的ZMP 这套方法非常漂亮。而且非常重要。它第一次让工程师可以用一套清晰的动力学方法回答“怎样设计一条理论上不会倒的双足步态”这也是 ASIMO、HRP 等一代经典人形机器人能够稳定行走的重要基础。《仿人机器人》的前言中也明确提到书中的理论实际用于 HRP-2而类似技术也应用在 ASIMO 等机器人上。但它也暴露出了早期人形机器人一个非常典型的问题机器人很擅长执行“提前想好的动作”。比如向前走 2 米。左转。上楼梯。按照指定位置落脚。如果环境基本和设计时一样它可以走得非常漂亮。但是如果事情突然变了呢前面突然出现一个东西。脚踩的位置比预计高了 3 厘米。有人突然从侧面推了一下。机器人身体正在快速向前倒而原来规划的下一步已经不合适了。这时候仅仅问“我的 ZMP 还在不在支撑多边形里”已经不够了。机器人还需要回答另一个更加重要的问题“我现在已经要倒了下一只脚到底应该踩在哪里才能把自己救回来”这也是后来人形机器人控制开始继续向前发展的原因。从 ZMP到 Capture Point再到 MPC再到今天越来越多的 Whole-Body Control、强化学习和学习型控制。机器人研究的问题也慢慢从“怎样提前设计一条不会摔倒的轨迹”变成了“无论现在发生了什么我下一步应该怎么做”而这个变化可能才是理解过去二十多年人形机器人运动控制演进最重要的一条线。