人形机器人出现在运动会上,这件事本身就很值得技术人停下来想一想。因为在竞技场上,所有包装都会被撕掉:跑得快,说明运动控制和执行器确实有突破;摔倒起火,说明系统在极限工况下还扛不住。同一个赛场把这两件事同时摆出来,恰好是行业最真实的状态——运动能力正在快速爬坡,但工程可靠性还没有跟上。
这篇文章会从这场运动会切入,把人形机器人跑步背后的控制原理、摔倒起火反映的安全问题、以及芯片算力底座这三件事讲清楚。最后给出一套可以动手跑的代码实验,帮助你理解 ZMP(零力矩点)、动态平衡和步态控制的基本逻辑。
1. 这场运动会为什么值得技术人关注
1.1 竞技场是最诚实的压力测试
人形机器人过去更多出现在发布会舞台上:走两步,转个身,挥挥手,现场掌声雷动。但舞台演示有一个天然问题:环境是可控的,地面是平的,速度是保守的,出错了可以重录。运动会则完全不同,它把机器人放进一个需要连续完成动作、追求速度和耐力的场景里,这本质上是把实验室里最极端的测试条件搬到了公众面前。
这里引用一个关键技术判断:运动会上的“破纪录”和“摔倒”是同一套系统的两种结果,它们共同暴露了人形机器人目前的能力边界。能跑出破纪录的速度,说明步态规划、轨迹优化、力矩控制这条技术链路已经打通了一个阶段;会摔倒起火,说明在高速运动之下,热管理、结构强度、故障保护这些工程环节还存在明显短板。
对开发者来说,这种压力测试的价值不在于“谁赢了”,而在于它把问题量化了:速度是多少、稳定时间多长、摔倒发生在哪个动作、起火点在哪个部件。这些信息比任何发布会参数都更有工程参考意义。
1.2 破纪录和起火摔倒是一体两面
很多人会下意识把“破纪录”和“起火摔倒”当成两个独立的新闻点:前者证明进步,后者说明风险。但从系统工程的角度看,它们是同一个问题的两个侧面。
跑步速度的提升,意味着关节电机要在更短时间内输出更大扭矩,意味着电池要提供更高的放电功率,意味着结构件要承受更大的冲击载荷。这一切都会转化成热:电机铜损发热、驱动器功率器件发热、电池内阻发热。当性能压到极限,散热和防护一旦跟不上,摔倒后短路起火就是完全可预期的结果。
所以,这篇博文真正想表达的核心观点是:人形机器人正在从“能稳定行走”进入到“能高速运动”的新阶段,但高速运动带来的不只是控制算法的挑战,更是整个机电系统在各种极限工况下的可靠性挑战。
2. 人形机器人跑步到底难在哪里
2.1 动态平衡的本质:质心、支撑多边形与ZMP
看到机器人快跑,外行的第一反应是“这电机真猛”。内行会先看一个几何指标:质心投影是否始终落在支撑脚构成的凸包内。
这里需要解释一个核心概念——ZMP,全称 Zero Moment Point,零力矩点。它描述的是地面对脚掌反作用力的等效作用点。只要 ZMP 落在支撑脚底面的范围内,脚掌就不会像跷跷板一样翻起来,机器人就能保持稳定。反过来,一旦 ZMP 越出脚掌边界,机器人就会绕脚踝翻转,紧接着就是摔倒。
可以用一个简单的类比来理解:人单脚站立时,身体重心投影必须落在这只脚的脚掌面积内。如果重心明显偏移到脚掌外侧,身体就会倾倒。ZMP 就是这套逻辑在机器人动力学中的严格数学表达。
跑步时,机器人大部分时间处于单脚支撑甚至腾空状态,支撑多边形从双脚矩形变成单脚的小范围,ZMP 的允许边界被急剧压缩。这就是为什么跑步比走路难得多——它要求控制器在每个瞬间都把 ZMP 精确约束在一个很小的区域内。
2.2 步态规划:不是迈腿那么简单
很多人以为步态规划就是“让左腿和右腿交替迈开”,实际上这是一个包含多层级决策的问题。
首先是落脚点选择:下一步应该落在哪里?这取决于当前速度、目标方向、地面情况,甚至机器人身体的旋转角速度。其次是质心轨迹规划:在每次迈步过程中,身体质心应该沿什么路径移动?最后才是关节轨迹生成:把质心和脚踝的期望轨迹转换成髋、膝、踝三个关节的角度变化。
这三个层级之间是强耦合的。落脚点选错了,质心轨迹必然受影响;质心轨迹偏了,关节力矩就会失配。传统方法用离线规划的 ZMP 轨迹来实现稳定行走,但对跑步这种高速、短周期、强冲击的运动,离线方案已经不够用了。
2.3 跑步为什么比走路更困难
跑步和走路有一个物理上的本质区别:走路时至少有一只脚在地面,支撑约束始终存在;跑步时存在双脚离地的腾空阶段。
腾空阶段意味着机器人失去了地面反作用力提供的支撑和纠正能力。此时系统的状态不再受脚部接触约束,而是一个自由飞行的多刚体系统。控制器必须在腾空阶段就为落地的冲击做好准备,在落地瞬间用身体姿态和关节柔顺性吸收巨大的冲击动量。
另外,跑步的步频远高于走路。假设一个步频为每秒 2.5 步的跑步动作,每个步态周期只有 0.4 秒。控制器的计算延迟、关节执行器的带宽响应都会成为瓶颈。如果控制周期是 1 kHz,每一个控制周期只有 1 毫秒,而在这 1 毫秒内,系统要完成状态估计、动力学计算、力矩分配并下发到几十个关节。这种实时性要求对算法和芯片都是极大的考验。
3. 从破纪录看运动控制算法的真实进步
3.1 MPC 与 WBC:当前主流的技术路线
传统 ZMP 方法的思路是“事先把每一步算好”:规划一整段质心轨迹和落脚点序列,然后让机器人严格跟踪。这种方法在慢速行走中表现稳定,但对跑步这类强扰动、快变化的场景不够灵活。
目前主流的人形机器人运动控制方案,通常是把 MPC(模型预测控制)和 WBC(全身动力学控制)组合起来使用。
MPC 解决的是“下一步怎么做”:在每个控制周期,基于当前状态,用简化动力学模型,滚动优化未来几秒内的落脚点和质心轨迹。它不需要把完美方案一次性算完,而是边做边调,所以能应对模型误差和外部扰动。
WBC 解决的是“具体怎么发力”:在 MPC 给出期望运动轨迹后,WBC 把任务分解到机器人的所有关节,考虑摩擦力、接触约束、关节力矩限制,计算出每个电机需要的最终目标力矩。
这套组合的核心优势是鲁棒性。即使机器人被推了一把,MPC 也会在下一个周期重新计算轨迹,而不是死板地执行原来的计划。破纪录的跑步表现,背后往往就是这类算法在支撑。
3.2 Sim2Real:从仿真到真机的迁移
跑步算法能够快速迭代,还离不开仿真环境的助力。在 MuJoCo、Gazebo、Isaac Lab 这类物理仿真器中,开发者可以先让虚拟机器人在各种地形上跑几百万步,等到算法足够稳定,再迁移到真机验证。
但仿真和现实之间存在“现实差距”:摩擦系数、结构柔性、电机延迟、传感器噪声,这些在仿真里很难完全一致。Sim2Real 的核心工作就是缩小这个差距。
常见的做法包括:领域随机化,在仿真中随机改变质量、摩擦、负载等参数,让算法学会应对各种变化;系统辨识,用真机采集数据来校准仿真模型;以及训练时引入更保守的安全约束,给真机留出更多裕量。
从破纪录这类表现来看,Sim2Real 已经跑通了一个正向循环:仿真中验证稳定,真机上测试性能,再把真机数据反馈回仿真模型。这也是现在不少团队能快速推进步态优化的原因。
3.3 为什么传统方法可能跑不快
传统 ZMP 离线规划之所以难支撑跑步,有两个原因。
第一,跑步时的动力学非线性更强。腾空、落地冲击、脚踝触地瞬间的摩擦切换,这些事件让线性化的简化模型误差变大。第二,离线规划无法处理扰动。跑步过程中一个小小的地面突起,就可能让实际状态偏离规划轨迹,而离线方案很难在毫秒级重新规划整条路径。
所以可以这样理解:破纪录的不是某一个“大力电机”,而是一整套由预测控制、全身动力学分配、仿真迁移组成的算法体系。电机只是执行终端,真正的决策发生在毫秒级的计算循环里。
4. 从起火摔倒看工程安全的短板
4.1 高动态运动带来的热失控风险
机器人摔倒起火,往往是多个因素叠加的结果。这里必须强调,并不是机器人本身被设计成了“危险品”,而是高动态运动大大提高了系统对热和电的冗余要求。
高速奔跑时,关节电机长时间处于接近峰值的输出状态。电机铜损与电流的平方成正比,驱动器功率器件在大电流下也会产生可观的热量。如果电池同时以大电流持续放电,内部温升会非常明显。正常情况下,这些热量由散热结构和热管理策略带走;但在摔倒场景中,散热风道可能被堵住,冲击可能破坏线束绝缘,局部短路就会制造高温点,最终触发起火风险。
从公开报道来看,这类起火事件放在整个行业里并不算普遍,但它足以提醒所有开发者:当机器人开始追求速度时,热设计就不再是可选优化项,而是和算法同等重要的系统组件。
4.2 关节电机过载与电池热管理
具体到工程实现,有两个地方最需要提前做安全设计。
第一个是关节电机和驱动器。电机保护不能只依赖温度阈值,还要监测电流曲线和转矩指令的偏差。如果控制器指令转矩 50 N·m,但实际反馈电流长期异常偏高,说明可能存在机械卡死或传动效率下降。此时需要降级策略:降低运动速度、逐步恢复或直接急停。
第二个是电池。电池管理系统的职责不只是算电量,更要监控每节电芯的温度和电压。当机器人摔倒、碰撞、或长时间堵转导致电流过大时,BMS 应能迅速切断动力回路,避免热失控。对竞赛或极限运动场景,还应该额外关注电池仓的结构防护,确保碰撞不会挤压电池。
4.3 急停机制和安全边界
在动态机器人领域,安全设计的一个关键原则是:永远假设会自动摔倒,并提前设计好摔倒后的保护动作。
理想的机器人摔倒不应该是硬砸地面,而是通过膝关节缓冲、躯干扭转把冲击分散;摔倒后应自动切断强电,停止关节输出,避免砸地后电机还在继续推挤。急停机制也不能只有一个按钮,需要包含物理急停、远程急停、软件看门狗三级冗余。
从这场运动会同时出现破纪录和起火摔倒的画面来看,竞赛类机器人为了追求性能,有时会在安全冗余上做取舍。但真实产品必须意识到,性能和安全不是二选一,而是需要在设计阶段就把散热、结构、电池防护、急停逻辑作为一个整体来考虑。
5. 人形机器人芯片与算力底座
5.1 运动控制链路上的实时算力需求
跑步的过程看起来是机械运动,背后其实是一条完整的计算链路:首先是传感器输入,包括 IMU、关节编码器、足底力传感器;接着是状态估计,融合这些数据得到机器人当前的位置、速度、姿态角;然后是 MPC 滚动优化,求解未来一小段时间的最优落脚点和质心轨迹;最后是 WBC 力矩分配,把高层轨迹转换成每个关节的期望力矩。
这条链路要求控制频率通常要达到 500 Hz 到 1 kHz 以上。也就是说,每 1 到 2 毫秒,所有环节都要算完一轮。如果某个环节延迟超时,整个控制循环就会产生抖动,反映到机器人的行动上就是“腿软”或“僵硬”。
对于跑步这类高动态运动,算力需求的峰值往往出现在落地冲击时刻:状态估计需要快速收敛,MPC 需要重新求解,WBC 需要立刻调整力矩。此时的算力峰值比匀速行走时高出数倍。
5.2 从工控机到专用芯片
早期人形机器人大多依赖工控机加高性能 GPU 来承担计算任务。这种方案开发方便,但功耗高、体积大、成本高,很难走向量产。当行业开始思考“怎么样让机器人更轻、更省电、更适合移动场景”时,专用芯片的机会就出现了。
人形机器人芯片的核心挑战不是在跑分榜上拿高分,而是满足严格的实时性要求。具体来说,它需要在确定的时间内完成状态估计和控制计算,不能因为中断或资源竞争导致延迟抖动。同时,计算功耗必须控制在一个较小的散热预算内,否则芯片自身又成了新的热源。
运动控制这类任务,大部分是矩阵运算和优化求解,非常适合以 SoC 形式集成专用加速单元,再搭配通用 CPU 核运行实时操作系统和上层逻辑。
5.3 国内芯片厂商释放的信号
搜索材料里提到一个值得关注的热词:全志科技人形机器人芯片。虽然这里不做具体产品参数的分析,但这说明国内芯片厂商开始把目光投向人形机器人赛道了。
从行业逻辑看,这是一个相当明确的信号:人形机器人正在从实验室原型走向小批量验证阶段。当整机厂商开始评估“用哪颗低成本、低功耗芯片做量产控制板”时,专用 SoC 的需求才会真实爆发。芯片厂商提前布局,往往意味着他们判断这个市场即将进入规模化的前夜。
对技术人来说,这意味着以后做人形机器人底层开发,可能会越来越多地接触到嵌入式实时系统和专用 SoC,而不是像过去那样“跑一个 Ubuntu 工控机就够了”。理解运动控制算法,同时理解芯片提供的实时计算能力,会成为这个领域的复合型竞争力。
6. 最小实验:用代码理解 ZMP 与动态平衡
6.1 用线性倒立摆模型描述行走
要理解人形机器人为什么难控制,完全可以从一个最简单的模型开始:线性倒立摆模型。在这个模型里,机器人被简化为一个位于质心处、高度固定的质点,支撑点即 ZMP。
当质心位置与 ZMP 不一致时,系统会产生一个水平加速度,方向取决于相对位置。数学形式如下:
a = omega^2 * (x - zmp)其中omega = sqrt(g / h),g 是重力加速度,h 是质心高度。这个公式说明:ZMP 就是那个决定“车身往哪边倒”的支点。只要 ZMP 落在支撑脚有效范围内,系统还能纠正;一旦超出范围,机器人就开始倾倒。
下面的代码用 Python 复现这个最小动力系统,你可以直观看到“初始状态不同,稳定结果完全不同”。
6.2 Python 仿真代码
文件路径:lipm_demo.py。
import numpy as np def lipm_acc(x, zmp, height=0.8): """ 线性倒立摆模型加速度。 x: 质心水平位置 zmp: 零力矩点位置 height: 质心高度 """ omega = np.sqrt(9.8 / height) return omega * omega * (x - zmp) def simulate_single_step(x0, v0, zmp, support_boundary=0.15, dt=0.01, total_time=0.8): """ 模拟一步的质心运动。 如果 |x - zmp| 超过支撑边界,判定为失稳。 """ x, v = x0, v0 steps = int(total_time / dt) for i in range(steps): a = lipm_acc(x, zmp) v += a * dt x += v * dt if abs(x - zmp) > support_boundary: return x, v, False, i * dt return x, v, True, total_time if __name__ == "__main__": # 场景1:质心与ZMP重合且速度为0,理论上可以站稳 x_end, v_end, ok, t_fall = simulate_single_step(0.0, 0.0, 0.0) print(f"场景1: x_end={x_end:.3f}, v_end={v_end:.3f}, stable={ok}") # 场景2:质心偏前且带有前向速度,ZMP没有跟上,很快失稳 x_end, v_end, ok, t_fall = simulate_single_step(0.1, 0.8, 0.0) print(f"场景2: x_end={x_end:.3f}, v_end={v_end:.3f}, stable={ok}, fall_time={t_fall:.3f}s")这段代码的核心逻辑很简单:每一步先根据当前质心位置与 ZMP 的相对关系计算加速度,然后用欧拉积分更新速度和位置。如果质心偏移超过了支撑边界,就判定失稳。
场景1中,质心、ZMP、速度全部为 0,系统不产生加速度,理论上可以一直站稳。场景2模拟的是“身体已经往前偏、速度还很快”的情况,此时 ZMP 停留在原地,质心会加速偏离,很快超过支撑边界,对应实际场景中的摔倒。
6.3 运行结果与验证
在终端运行:
python lipm_demo.py预期输出会包含两个场景的信息,例如:
场景1: x_end=0.000, v_end=0.000, stable=True 场景2: x_end=0.xxx, v_end=1.xxx, stable=False, fall_time=0.0xxs场景1 的稳定结果验证了 LIPM 的基本性质:当 ZMP 与质心重合并且没有速度时,系统可以保持静止稳定。
场景2 的失稳结果说明了跑步控制的本质矛盾:质心速度越快,ZMP 就越需要“主动前移”来接管质心,否则就会失去平衡。实际机器人跑步时,控制器正是通过不断计算下一个落脚点,把 ZMP 不断向前移,始终让质心保持在可纠正的范围内。
如果你把support_boundary调大,或者把zmp改成随步态周期变化,就能进一步观察支撑范围和控制动作对稳定性的影响。这个最小实验虽然简单,但它指向了所有步态控制器的共同问题:每一个瞬间,ZMP 都必须被约束在可支撑区域内。
7. 常见误区与排查思路
7.1 三个常见误区
误区一:跑得快说明稳定控制已经成熟。
速度来自更强的电机和激进的步态参数,但稳定性是另一套评价维度。一台机器人可以在平整场地跑出漂亮成绩,却在遇到小台阶、轻微推力、地面湿滑时立刻摔倒。速度和鲁棒性需要分别测试。
误区二:摔倒起火说明这家公司的技术路线失败了。
从工程角度看,动态机器人出现摔倒并不罕见,起火是更严重但同样可定位的系统性问题。更值得关注的是,故障保护有没有按预期动作,起火点是不是在可替换的模块上,事后有没有形成整改闭环。把这些流程做好,一次摔倒反而能推动产品成熟。
误区三:只要把算法调好,硬件弱一点也没关系。
跑步性能是软硬件协同的结果。算法可以优化轨迹和力矩分配,但电机峰值扭矩、散热能力、结构刚度这些物理上限是算法无法突破的。开发初期就应当把热设计、电池放电倍率纳入整机指标,而不是等算法完成后才发现硬件撑不住。
7.2 排查清单
| 问题现象 | 可能原因 | 排查方式 | 解决建议 |
|---|---|---|---|
| 跑步时频繁向外摔倒 | ZMP 计算误差或落脚点规划滞后 | 查看状态估计输出的质心位置是否跳变 | 校准 IMU 与关节编码器,检查 MPC 求解是否超时 |
| 关节电机温度快速升高 | 电机持续过载或散热不足 | 检查关节电流曲线和电机温度曲线 | 降低峰值扭矩限制,增加散热设计,优化轨迹减少冲击 |
| 电池电压跌落严重 | 放电倍率超过电池能力 | 检查 BMS 记录的放电电流 | 更换高倍率电芯,或设计更平滑的功率输出策略 |
| 落地瞬间产生强烈震动 | 落地速度过大或没有柔顺控制 | 查看足底力传感器冲击波形 | 增加落地缓冲阶段,调整膝关节阻尼参数 |
| 仿真里稳定但真机摔倒 | Sim2Real 差距 | 对比真机与仿真的关节角度与力矩曲线 | 引入领域随机化,用真机数据校准仿真模型 |
7.3 控制参数调整的基本原则
调整步态参数时,最好遵循“一次只改一个变量”的原则。比如先调整步频,观察质心轨迹和 ZMP 裕量;再调整步长,观察落地冲击电流。所有改动都要配合日志记录,方便回滚和对比。
此外,尽量不要直接用极值参数跑真机。先把参数在仿真中跑过足够多的周期,再用绑绳防护和低速度验证,逐步逼近目标性能。这一步看起来保守,实际上能节省大量调试时间。
8. 工程最佳实践与安全建议
8.1 测试分级:从仿真到真机的四层防线
第一层,仿真验证。在 MuJoCo 或 Gazebo 中用随机化参数跑大量步态周期,观察是否有发散趋势。这一步可以过滤掉大部分明显不合理的参数组合。
第二层,半物理验证。把控制算法部署到真实控制板,但输出端接仿真模型,检验实时性和接口逻辑是否正常。这一步可以提前发现芯片算力不足、通信延迟、控制周期抖动等问题。
第三层,绑绳测试。真机在保护绳和缓冲装置的约束下运行,控制程序保持不变,重点验证真实电机的响应和传感器数据是否与仿真一致。
第四层,逐步开放。从低速小步幅开始,逐步提高速度和复杂度,每次都配备紧急停机人员和灭火设备。这个过程没有捷径,越接近量产,越要谨慎。
8.2 安全设计清单
人形机器人不是普通家电,本身具备一定的运动能量,运行时必须建立完整的安全边界。以下是建议的设计清单:
- 物理急停按钮:至少两个独立位置,能够直接切断动力回路。
- 远程急停通道:无线急停和控制看门狗联动,通信中断时自动停机。
- 电流与温度保护:每个关节驱动器和电池包都要有独立的保护阈值,触发后分级降级而不是瞬间断电。
- 碰撞检测:通过力矩反馈或加速度判断碰撞,触发后立即进入安全姿态。
- 摔倒保护:检测到跌倒后主动缓冲落地,避免硬砸和电池挤压。
- 日志记录:关节电流、电机温度、电池电压、IMU 数据必须持续记录,用于事后分析。
8.3 数据日志比参数更重要
很多开发者在调参时只关心“参数是多少”,却忽略了“上一次摔倒时发生了什么”。实际上,一套完整的数据记录系统,价值远高于任何一个调参技巧。
建议至少记录这些维度:关节编码器位置和速度、关节电流和温度、IMU 三轴加速度和角速度、足底力传感器数据、MPC 求解时间、WBC 下发力矩指令。当摔倒发生时,这些数据能帮助你快速定位是状态估计问题、控制求解问题还是硬件执行问题。
同时,日志要带统一时间戳,保证不同传感器数据可以对齐。如果时间戳不同步,事后分析会变得非常困难。
9. 总结
这场世界人形机器人运动会给行业带来的最大价值,不是某个速度纪录本身,而是把真实的工程问题摆到了所有人面前:高动态运动已经把控制算法推到了一个新的高度,但同时,热管理、电池安全、故障保护这些基础工程能力也必须跟上来。
对开发者来说,如果只从这场比赛带走一个判断,那就是:人形机器人已经进入了“运动性能突破”和“工程可靠性补课”并行的阶段。速度纪录早晚会被刷新,真正决定谁能走得更远的,是长期运行中能不能不摔倒、不起火、不出安全事故。
如果这篇文章恰好对你有用,建议先收藏备用。你可以从文中的 LIPM 最小仿真开始跑一遍,把 ZMP 和动态平衡的直觉建立起来,再去接触 MPC、WBC 和 Sim2Real 这些更复杂的工具链。会跑代码之后再上真机,每一步都记得留日志、留回滚点,这才是人形机器人技术最稳妥的成长路径。