ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

人形机器人原地纵跳全流程解析:从硬件设计到落地缓冲

人形机器人原地纵跳全流程解析:从硬件设计到落地缓冲

1. 跳跃任务定义:为什么同一条腿既要爆发又要撑住落地

人形机器人能不能跳,是检验整套机电系统是否"完整"的一把快尺。比走路更进一步,跳跃把所有问题都加速了:发力要在零点几秒内完成,体重和惯性带来的冲击会在落地瞬间翻好几倍,飞在空中又几乎没有摩擦可供借力——任何一项短板——电机瞬时功率不够、控制周期过长、状态估计滞后、结构刚度不足——都在这个动作里暴露得格外明显。

这个案例里要做的事很具体:让一台全自主的双足人形机器人在平地完成原地纵跳,再安全落回原地,整个过程不靠外部力源、不加保护吊绳。先交代这台机器人的基本盘:整机高度约 60 厘米,重量 3.2 公斤,双腿共 6 个主动自由度(髋、膝、踝各一个),手臂只是简单随动结构,不参与跳跃。也就是说,所有力气都靠两条腿的 6 个关节出,所有稳定性也都靠这 6 个关节协调。跳跃目标定得比较克制:起跳高度 15 到 20 厘米,空中停留约 0.25 到 0.4 秒,落回原地后 1 秒内恢复静立。

1.1 跳跃的四个阶段

从控制系统的视角,一次跳跃被拆成四个完全不同的阶段,每阶段的任务和控制策略都不一样:

  • 蹲起蓄力阶段:双腿主动下蹲一定角度,把质心位置放低,为蹬伸预留行程,同时让电机在低速高扭状态下"预热",避免直接从静立状态强行爆发。
  • 蹬伸起跳阶段:双腿同步伸展,地面反力必须持续大于重力,质心获得向上的加速度。从速度、功率到两腿关节的同步性,这里都是全流程最高要求。
  • 飞行阶段:双脚离地后没有地面力约束,系统进入自由旋转状态。这个阶段几乎什么都改不了,只能靠起跳瞬间的姿态和角速度把它"锁定"住。
  • 落地缓冲与回稳阶段:脚底接触地面瞬间有数倍体重冲击,要先把冲击动能吸收掉,再用位置与姿态控制把人重新拉回静立。

这四个阶段不是独立设计的,它们的接口条件互相卡死:飞行段从哪个高度、什么姿态开始,由起跳段的离地状态决定;落地段开始时机器人的姿态和质心高度,又由上一步的飞行轨迹决定。所以我在实践中习惯先把飞行段和落地段约束好,再倒推起跳段怎么发力。这样做的好处是,调试时每个阶段能被单独验证,而不是一上来就要求一次完整跳跃直接成功。

1.2 死死抓住的两项硬约束

开始做跳跃规划之前,有两项物理约束必须先摆出来,不然后面全是空中楼阁。

第一项是地面反力约束。机器人只能向地面"推",不能从地面"拉",所以地面对脚的合力方向在数学上必须满足 ZMP 落在支撑多边形内部。蹲起和蹬伸阶段尤其危险——如果质心投影提前超出了脚掌范围,机器人没跳起来就先倒下了。日常站立时 ZMP 裕度很大,但跳跃蹬伸时脚掌几乎要整面用力,任何一点姿态偏斜都会让 ZMP 快速滑向脚边缘。

第二项是电机峰值功率约束。跳跃是一个典型的高功率窗口动作:3.2 公斤的机器人要获得 1.5 到 2 米每秒的离地速度,蹬伸时间按 0.18 秒估算,所需机械功率大约在 60 瓦上下。但实际取电时还要把电机与减速器的综合效率(约六成)算进去,铜损和驱动器损耗也没法忽略,瞬时电功率会逼近 150 瓦。别小看这个数字,它对整机供电、线径、电容容量和驱动器选型都提出了明确要求,后面硬件部分我会展开讲。

2. 硬件实现:腿部结构、关节模组与机身布局的取舍

很多人以为跳跃的难点全在算法,其实算法再漂亮,硬件腰杆不硬也白搭。这台机器人是第三版大改之后才站稳的,前两版分别在膝部刚度和电机响应速度上栽了跟头。

2.1 腿部三连杆方案与运动学

腿部采用经典的三连杆构型:髋关节实现侧向稳定,膝关节做前后屈伸,踝关节配合脚掌调整地面接触角度。大腿和小腿都用碳纤维板开模拼接,重量压到单腿 0.52 公斤,让整机质量分布更集中在上半身,跳跃时腿部摆动惯量更小。

跳跃对膝关节的考验最重。蹬伸瞬间膝关节要承受比体重高两到三倍地面反力产生的等效弯矩,一旦大小腿连接处或减速器输出端存在可见的弹性形变,蹬伸方向就会偏,落地时姿态也会对不上。所以项目里膝关节驱动选用一台无框电机加谐波减速器,减速比 100 比 1,输出端用双轴承支撑,实测膝关节的往复扭转间隙被控制在了 1 分以内(角度的六十分之一度)。这个"轴向间隙"参数在普通站立时没人关注,但在起跳和落地冲击下就是决定成败的关键——间隙每大一点,控制上的位置误差就被放大十几倍。

2.2 电机、减速器与整机供电的估算过程

选电机前,我把"最大出力需求"换算成了峰值关节力矩需求。先设定离地速度 1.8 米每秒,蹬伸时间 0.18 秒,则质心向上的平均加速度约 12 米每二次方秒。按质心加速度乘以质量再折算到髋、膝两个关节(踝关节出力较小先忽略),单膝需要的峰值力矩约 1.9 牛米,考虑动力冲击系数 1.5,取 2.8 牛米作为电机规格的下限。

我在样机上对比过两种方案:一种是低减速比大扭矩电机加外部减速器,另一种是内置谐波减速的关节模组。前者响应快、边界清晰,但重量和尺寸不好控制;后者集成度高、输出力矩大,但反向驱动阻力大,会影响落地缓冲时的力控手感。最终选择了集成式谐波关节模组,同时为踝关节保留一级皮带传动,因为踝关节在落地缓冲时更需要"顺滑"而非绝对刚度,皮带传动在这个自由度上提供了更好的顺应性。

配套的整机供电系统也做了针对性升级。瞬时接近 150 瓦的功率,如果电池直接供电,输出电压会瞬间跌落,驱动器甚至主板都可能重启或进入欠压保护。我的处理方式是三级缓冲:高放电倍率锂电池负责长时基础功率,驱动器母线电容加大容量负责短时高频波动,再在每个关节入口放一组小型电容,把最后的残余抖动吃掉。这个细节在后来从仿真迁到实机时救过我多次——第一版跳蹦失败,大概率不是算法问题,而是电源先"泄了气"。

3. 规划与状态估计:从"质心轨迹"到"着地预测"

跳跃规划不推荐用逐关节示教。关节空间示教最大的问题是难以保证飞行段姿态恒定——你录什么轨迹,机器人就飞什么轨迹,但凡有一点风阻、一点初始角速度误差,空中就会越偏越多。我们采用的是质心动力学轨迹:把机器人简化成质心加腿部摆动的模型,先在质心空间里规划一条满足初始高度、最终落地高度约束的抛物线轨迹,再通过逆运动学映射回六个关节角。

3.1 起跳与飞行段的质心轨迹

垂直方向,我用了最常用的"最小加加速度轨迹"离散近似:蹲起段让质心从初始高度缓慢下移到低位,然后在起跳窗口内以平滑加速度曲线把质心推上一条抛物线。起跳瞬间的离地速度由目标高度反推:跳到 0.2 米时需要离地速度约 2.0 米每秒,跳到 0.15 米时约 1.71 米每秒。整条轨迹送进控制器之前,需要做多组初始角速度匹配,确保离地瞬间质心速度的方向就是竖直方向——否则跳出去就飞偏了。

飞行段姿态控制的思路比较朴素但有效:既然空中无法产生修正力矩,那就把起跳时刻的机体姿态和三个轴的角速度都规划成接近零的角度与角速度,让整个飞行段维持在一个"冻结"的惯性姿态。仿真测试时,我在飞行段故意注入 0.5 到 1 度的初始俯仰误差,观察落地预报的效果,结论是:只要初始角速度误差小于每秒 30 度,落地影响可控;一旦超过每秒 50 度,机器人落地时会明显前扑。

3.2 状态估计:IMU 与关节编码器的融合

实物上对跳跃过程做状态估计,比走路难很多。蹬伸瞬间的加速度冲击、落地瞬间的减速冲击,都会让加速度计输出瞬间失真;而陀螺仪有低频漂移,光靠它撑不住飞行段。

项目的状态估计用的是"关节编码器 + 机身 IMU"的松耦合方式:每个关节的高分辨率编码器给出相对角度,配合腿长可以算出质心位置;机身 IMU 提供姿态角和角速度修正。两者数据通过 500 赫兹更新的扩展卡尔曼滤波融合,把加速度冲击权值压到很低,避免瞬间冲击把状态滤波带飞。实操中我加了两个额外保险:一是每次跳跃前自动校准陀螺仪零偏;二是落地触地检测不靠滤波后的加速度,而是直接看踝关节力传感器原始值的突变沿。这样虽然状态估计在落地瞬间会有约 0.1 秒的估计滞后,但触地标志永远是及时的,这就够用了。

4. 落地缓冲与顺应控制:把冲击变成可控的位移

落地缓冲是整台机器人最容易翻车的一环。硬着陆会把冲击直接传进结构,一次就能把关节模组的减速器干出噪音;而如果缓冲过于"软",又会在落地后出现两三次前后摇晃,迟迟无法恢复静立。

4.1 触地状态机与缓冲策略

我把落地段拆成三个子状态:触地瞬间(冲击吸收)、刚度恢复(位置回归)、姿态修正(静立稳定)。触地瞬间把踝关节的力控刚度临时降到临界阻尼值,让关节主动退让,用位移换取冲击峰值下降;同时双腿做同步的阻抗控制,把目标参考点放在略低于当前质心高度的虚拟地面上。简单来说,就是用主动让腿缓冲来吸收冲击,做到 20 厘米以下高度落地时,峰值冲击加速度能控制在 2.5 倍重力加速度以内。

落地后的刚度恢复阶段,我采用的是渐进式恢复的 PD+PID 混合控制:先拉位置比例增益,再调速度阻尼,最后把踝关节力控刚度恢复到站立值。这里有个非常容易被忽略的坑:刚度不能一次性拉满。实测一次性拉满的版本,落地后机器人会因过强位置反馈产生高频抖动,稳定反而更慢;渐进恢复时阻尼先高后低,过渡约 0.3 秒,效果好很多。

4.2 踝关节在落地缓冲中的特殊地位

踝关节虽然出力较小,却是落地冲击的第一道关口。我在踝关节做了"位置内环 + 力控外环"的双闭环:内环负责电机角度伺服,外环负责感知脚底实际压力并修正目标角度。触地时外环先临时接管,让踝关节按脚底力变化柔顺调整角度;约 80 毫秒后位置内环再接管,把人拉回预估姿态。

这套双环切换逻辑在仿真里跑了几百次都没问题,但上实机后第一次就发现切换指令的时序不对——力控外环的更新频率比位置内环低一截,导致接管瞬间有一拍数据空洞。后来把外环更新率也提到 1 千赫兹,才算干净切换。这类时序类 bug 在仿真中极难暴露,只有实机调试时才会显现,也是我后来把"仿真通过"和"实机通过"明确分成两个验收标准的原因。

5. 从仿真到实机:参数迁移与实物调试的完整链路

几乎所有动作规划我都是从仿真开始的,但仿真里能跑通的表现,直接搬到实机上是一定会失败的。这个项目里,仿真阶段用某开源物理沙盒和某跨平台动态建模平台搭建,包含了腿部模型、脚底摩擦力、电机扭矩限制和简化的驱动器延迟。一开始我把所有参数都调得"很干净",结果第一版实机跳跃测试:起跳倒是起来了,但落地时有个明显的前扑趋势,空中姿态也不如仿真稳定。

5.1 仿真和实机的三个本质差异

差异一:仿真电机的力矩是理想瞬时输出,实机电机有电流环带宽限制。同样的指令力矩,实机在 0.1 秒内只能勉强建立到 80% 的力矩,这在落地缓冲时会造成很大差别。差异二:仿真的刚度模型里没有减速器的反向间隙和柔性,实机的 1 分间隙虽然小,但落地回踩时会有微小的弹性累积,累积到姿态控制上就容易变成低频振荡源。差异三:仿真脚底摩擦系数被设成 0.8 到 1.0,实机在常见的灰色橡胶垫上实际只有约 0.5 到 0.6。这几个差异,影响都集中在"起跳瞬间"和"落地瞬间"这两个窗口里。

5.2 第一跳失败到连续三跳:我调整的先后顺序

直接放结果:实机上从第一跳失败到连续三次稳定跳跃,大约花了两天。调整顺序很关键,按我的经验应该是:先解决电源与驱动(确保瞬时功率不崩),再调状态估计的触地检测,再调落地缓冲曲线,最后才是起跳轨迹的参数。反过来先调起跳轨迹,往往会在落地时被完成度不高的缓冲曲线干扰,导致错误归因。

实机第一跳失败的直接原因:落地缓冲参数给得太"温柔",踝关节退让量太大,导致触地时质心位置低于预期,前扑趋势被放大。修改方向是降低退让位移上限、加快刚度恢复速度,并且把触地检测阈值从力值的 0.1 倍体重调到 0.25 倍体重,避免噪声触发提前缓冲。改完后第二次起跳落地就明显稳定,第三次开始能连续跳到原来的足迹附近。

6. 实测结果、失败案例与后续动作

6.1 一组能说明问题的实测数据

最终完成的这台机器人,在室内平地上能完成 18 厘米高度的原地纵跳,空中停留时间约 0.28 秒,落地后 0.8 秒恢复静立,落地位置与目标点偏差在 4 厘米内。三次连续跳跃间隔 5 秒左右,期间电池电量下降约 3%,供电稳定,无欠压报警。峰值电流方面,电机驱动器母线出现过约 12 安培的短时电流,持续约 20 毫秒,刚好在电容缓冲范围之内。

6.2 三个值得说说的失败案例

第一个失败案例是"落地反向蹬伸"。有一次实验里把落地缓冲的力控方向写反了,脚底触地瞬间机器人不是让腿退让,而是反向蹬地,结果直接把脚掌向前推出,整机跪地。排查后确认是控制代码里力传感器符号约定与真实安装方向不一致,修正符号后问题消失。这类低级错误在检查代码时很难发现,因为仿真里力传感器的正方向通常写得很规整,实机安装一旦有翻转,条件判断就全反了。

第二个失败案例是"飞行段姿态漂移"。起初起跳前我把姿态角的目标设成了精确的绝对水平,但忽略了机身离地前,由于地面反力作用线不通过质心而产生的角加速度累积,导致离地时实际已经带着约 3 度的俯仰和每秒 20 度的俯仰角速度。空中再一漂,落地时前扑得很厉害。后来我在起跳前最后 20 毫秒的姿态目标里故意增加 1 度后仰作为补偿项,并把这 1 度纳入飞行段的姿态保持参考,问题得到解决。

第三个失败案例是"电池压降死机"。早期我把两个关节共用一个驱动通道,瞬间电流过大导致母线电压跌到欠压阈值,驱动器和主板同时重启。后来改成每个关节独立驱动,并在供电主干线上加了大容量电解电容,问题才彻底消失。这个案例让我养成了一个习惯:每次动手前先做整机功率估算,推演最坏情况下的瞬时电流,再决定供电方案和模块布局,而不是等实机跳崩了再去查电压曲线。

6.3 后续动作

这一版跳跃已经稳定,但离"实用"还有距离。我下一步计划把跳跃与行走的状态机打通,让机器人能从行走状态直接切换进跳跃预蹲,并在落地后继续行走。这需要把触地检测、姿态修正和步态规划整合到同一个控制框架里,工作量和现在单纯做跳跃完全不是一个量级。

另外,我还打算在落地缓冲中加入模型预测控制,让缓冲曲线不再依赖手调参数,而是根据实时状态在每个控制周期里在线重新计算。模型预测的好处是能自动处理触地瞬间的约束变化,代价是要吃算力。以现有的硬件能力,跑一个简化 QP 版本可以做到 1 千赫兹更新,这会成为下一版落地的核心。

如果你也在做类似的项目,我的建议是先把落地缓冲的参数放在所有优化之前——跳跃的观感和安全性,至少一半由落地决定。先稳定落地,再谈高度和速度,这是一个不会后悔的顺序。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进