十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

人形机器人跑步技术解析:从ZMP到芯片算力底座

人形机器人跑步技术解析:从ZMP到芯片算力底座 人形机器人出现在运动会上这件事本身就很值得技术人停下来想一想。因为在竞技场上所有包装都会被撕掉跑得快说明运动控制和执行器确实有突破摔倒起火说明系统在极限工况下还扛不住。同一个赛场把这两件事同时摆出来恰好是行业最真实的状态——运动能力正在快速爬坡但工程可靠性还没有跟上。这篇文章会从这场运动会切入把人形机器人跑步背后的控制原理、摔倒起火反映的安全问题、以及芯片算力底座这三件事讲清楚。最后给出一套可以动手跑的代码实验帮助你理解 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, height0.8): 线性倒立摆模型加速度。 x: 质心水平位置 zmp: 零力矩点位置 height: 质心高度 omega np.sqrt(9.8 / height) return omega * omega * (x - zmp) def simulate_single_step(x0, v0, zmp, support_boundary0.15, dt0.01, total_time0.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_end0.000, v_end0.000, stableTrue 场景2: x_end0.xxx, v_end1.xxx, stableFalse, fall_time0.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 这些更复杂的工具链。会跑代码之后再上真机每一步都记得留日志、留回滚点这才是人形机器人技术最稳妥的成长路径。
返回列表