2. 基础概念:ZMP(零力矩点)与CoM(质心)的关系与计算

好,咱们进入正题。ZMP和CoM这两个概念,说白了就是人形机器人稳定性的“命根子”。你调参调来调去,最后都是在跟这两个家伙打交道。

我记得刚入行那会儿,带我的老工程师跟我说过一句话:“搞不懂ZMP和CoM,你就别碰人形机器人。”当时觉得夸张,后来踩了坑才明白——这话一点不假。

2.1 什么是CoM?

CoM,全称Center of Mass,质心。你可以把它想象成机器人所有质量“浓缩”成的一个点。这个点在哪,机器人的整体平衡就在哪。

对于人形机器人这种多刚体系统,CoM的计算其实不复杂:

// 质心位置计算(简化版)
// 假设机器人有N个连杆,每个连杆质量为m_i,质心位置为p_i
CoM = (Σ m_i * p_i) / (Σ m_i)

嗯,就是加权平均。每个部件的质量乘以它的位置,加起来,再除以总质量。

我在项目里遇到过一个问题:有个同事把电池的质量算错了,结果CoM位置偏了5厘米。机器人一走路就往一边倒,调了三天参数都没用。最后发现是质量参数写错了。所以啊,基础数据一定要核对清楚。

我的习惯:每次建完模型,我都会手动算一下几个关键姿态下的CoM位置,跟仿真结果对比。别嫌麻烦,这能帮你省下后面调参的无数时间。

2.2 什么是ZMP?

ZMP,Zero Moment Point,零力矩点。这个概念比CoM稍微绕一点。

简单说,ZMP是脚底板上一个特殊的点。在这个点上,地面反作用力产生的水平力矩为零。说白了,就是机器人脚底“受力最均衡”的那个位置。

你想想看,人站着的时候,脚底板受力不是均匀的。前脚掌压力大,还是后脚跟压力大?ZMP就是那个让前后力矩刚好抵消的点。

核心要点:ZMP必须在支撑多边形内部,机器人才能保持稳定。支撑多边形就是脚底板的轮廓范围。

2.3 ZMP与CoM的关系

这两个点啥关系?我画个图你就明白了。

ZMP与CoM的关系示意图 地面 支撑多边形(脚底) CoM(质心) ZMP(零力矩点) 静态站立时:CoM投影与ZMP重合 动态行走时:ZMP在CoM投影前方(加速)或后方(减速)

静态站立的时候,CoM在地面的投影和ZMP是重合的。但一旦机器人开始走路、转身、或者被推了一把,这两个点就分开了。

为什么会这样?因为动态运动会产生惯性力。CoM反映的是重力作用,ZMP反映的是重力+惯性力的综合效果。

记住这个公式: ZMP的位置 = CoM投影位置 + (惯性力产生的力矩) / (地面反作用力)

2.4 ZMP的计算方法

实际工程中,ZMP的计算有两种主流方法。我两种都用过,给你说说区别。

方法 原理 适用场景
基于动力学模型 通过机器人各连杆的加速度、角速度、惯性张量计算 仿真环境、离线规划
基于力传感器 通过脚底的六维力传感器直接测量 实物机器人、实时控制

我个人更推荐第二种方法。为啥?因为模型总有误差,传感器数据才是真实世界的反馈。

力传感器算ZMP的公式长这样:

// 基于脚底力传感器的ZMP计算
// Fz: 垂直方向总力
// Mx, My: 绕x轴和y轴的力矩
// 假设传感器安装在脚底中心

ZMP_x = -My / Fz
ZMP_y = Mx / Fz

简单吧?但坑也在这里。

我曾经踩过的坑:力传感器有零点漂移!刚开机时数据是准的,跑半小时后就开始偏了。我那次调试,机器人明明站得好好的,ZMP却显示在脚外面。折腾了两天才发现是传感器温漂。后来我养成了习惯:每次运行前做一次零点校准。

2.5 稳定性判据

有了ZMP,怎么判断机器人稳不稳?标准很简单:

  • ZMP在支撑多边形内部 → 稳定
  • ZMP在支撑多边形边界上 → 临界稳定
  • ZMP在支撑多边形外部 → 不稳定,要倒了

但这里有个细节:支撑多边形不是一成不变的。单脚支撑时,就是那只脚的轮廓。双脚支撑时,是两只脚围成的凸多边形。

我见过有人把支撑多边形画成矩形,其实不对。脚底板的形状是不规则的,尤其是脚尖和脚跟的弧度。严谨的做法是用凸包算法算一下。

2.6 稳定性裕度

光说“在内部”还不够。你得知道离边界有多远。这个距离就叫稳定性裕度。

// 稳定性裕度计算
// 找到ZMP到支撑多边形各边的最短距离
// 取最小值作为裕度

稳定性裕度 = min( distance(ZMP, edge_1), 
                  distance(ZMP, edge_2), 
                  ... )

裕度越大,机器人抗干扰能力越强。我一般会留个5-10厘米的裕度。太小了,一阵风就吹倒了。太大了,走路姿态会变得很僵硬,像机器人穿了高跟鞋。

调参小技巧:刚开始调的时候,把稳定性裕度设大一点(比如15cm)。等机器人能稳定走路了,再慢慢缩小,优化步态的自然度。

2.7 实际应用中的注意事项

最后说几个实战中容易忽略的点:

  1. 传感器噪声:力传感器的数据一定要滤波。我习惯用截止频率20Hz的低通滤波器。
  2. 延迟问题:从传感器采集到ZMP计算,再到控制器响应,有延迟。这个延迟会导致ZMP“滞后”于实际运动。
  3. 地面不平:实验室地板是平的,但实际场景不是。ZMP计算时要考虑地面倾斜。
  4. 鞋底变形:橡胶鞋底会变形,影响支撑多边形的实际形状。硬底鞋更准。

嗯,基础概念就讲这么多。ZMP和CoM的关系,说白了就是“静态平衡”和“动态平衡”的区别。搞懂了这个,后面调参你才能知道自己在调什么。

可可精品资料库