接下来以 matlab 软件的机器人工具箱中的 ikine( )逆解函数为例,说明上述计算方法 的编程实现流程,如算法1所示。
零力矩点 (ZMP) 是一个适用于各种运动状况下的概念也是对人形机器人进行运动控制时需要用到的一个重要物理量。本节首先介绍 ZMP 的定义、计算方式和测量方法,然后讨论 ZMP 指标与人形机器人动力学的关系,讲解 ZMP 在机器人运动时是如何发挥作用的。
一、ZMP与地面反力 不同于工业机器人的基座固定于地面,人形机器人脚掌与地面为不稳定接触,因此人形机器人会轻易地摔倒。为了控制机器人稳行行走,需要建立一些指标来判断机器人是否稳定。如果当这些指标在一定范围内时,机器人一定不会摔倒,则该指标就能为机器人的运动控制提供极大的帮助。这种情况下,人们常常使用 ZMP。 如图1所示,机器人足底所受作用力分布不均匀,脚尖方向受到的作用力较大,脚跟方向较小。但整体的负载可以等效于一个作用于足底某个位置的合力R, 其在足底上的作用点就称为零力矩点,简称 ZMP。
图1 零点矩阵(ZMP)的定义 上述是二维的情况,即只考虑了脚掌前后方向的受力和 ZMP 位置。实际上脚掌左右方向也会受力,左右方向的 ZMP 位置也会随受力情况变化而变化。接下来考虑三维环境下单足支撑的情况,如图2(a) 所示。为简化分析,可以忽略踝关节上部的结构。把踝 关节以上的结构对踝关节的影响等效为作用力 FA 和作用扭矩 MA, 如图2(b) 所示。 通常地面反力由三个方向的力分量 R(Rx,Ry,Rz) 和三个方向的扭矩分量 M(Mx, My, Mz) 构成。摩擦力作用于脚与地面的接触点,当脚在地面上处于静止状态时,作用于水平面上的力和力矩的那些分量会被地面摩擦力平衡抵消。因此,水平方向的地面反作用力 (Rx ,Ry)表示平衡FA的水平分量的摩擦力。而垂直方向的反力矩 Mz 表示地面摩擦反力矩,它平衡扭矩 MA 的垂直分量和力FA引起的力矩,如图2(c) 所示。竖直方向的地面反作用力RZ则平衡FA的竖直方向分量,当机器人没有竖直方向的加速运动时,Rz的值等于机器人的重力大小。此时还需要考虑的是MA的水平方向的扭矩分量MAx,MAy 的平衡问题。
图2 三维地面反力分析 考虑如图2(d) 所示的 y-z 平面,通过调整Rz的作用点P, 可以等效地生成水平方向地扭矩分量来平衡 MAx 。生成地平衡扭矩分量地大小取决于点P与踝关节在 y-z 平面的相对距离 。此时可以发现,当地面反作用力始终在脚掌所覆盖的区域内时,踝关节受到的地面反力矩可以等效为通过改变Rz的作用位置生成的水平扭矩分量。Rz的作用位置改变之后,则可以认为,地面反力矩的水平分量Mx和My不存在了。 要注意的是对于实际的机器人来说,作用点P的移动距离是受限制的。其受制于机器人脚掌的实际大小,不能移出脚掌的支撑面之外。直观的理解是如果作用点P移出了脚掌支撑面之外,地面反作用力就不能通过脚掌传递至踝关节,进而平衡系统受力了。 为此需要引入另一个重要概念——支撑多边形,其定义为脚掌与地面接触点的集合的最小凸集。凸集的定义如图3和式1所示,双足机器人的支撑多边形如图4所示。
式1
图3 凸集 在本节我们先给出一个重要结论:“机器人保持稳定时, ZMP 支撑多边形内部“, 下一节来分析该结论是如何得出的。
图4 双足机器人的支撑多边形 二、ZMP分析 1. 二维平面分析 本节我们采用更为严谨的公式,先来分析二维平面下ZMP的位置与足底受力情况的关系,之后再把该方法拓展到三维空间中。如图7.13 由于机器人脚掌受到地面的摩擦力,地面作用力有竖直和水平方向的分量,在 (a) 和 (b) 中分别用ρ(ξ)和σ(ξ)来表示每单位距离的地面反作用力的竖直方向和水平方向分量。
图5 地面作用力的分布 上述的力分量同时作用于机器人足底。接着我们用集中作用在脚底上某一个点的等效力和力矩,来替换如图5中的分布力,如图6所示。
图6 等效力和等效力矩 此时等效力和等效力矩包括水平分力为fx、竖直分力fz和绕作用点Px的力矩τ(px)用如下公式计算:
式2 根据式2,显然存在某个特殊的作用点Px ,使得等效扭矩为零,即有τ(px)=0。此时Px的值为:
式3 由于脚掌与地面之间为单边接触,即脚掌不能往下深入地面,但脚掌可以往上脱离地面。所以地面作用力的分量一定为正,因此有
式4 代入式3,可得
式5 即当全部压力都位于脚尖的时候,除了ρ(x)不等于零,其他ρ(ξ)都为零,有Px=x2,当全部压力都位于脚跟的时候,除了ρ(x)不等于零,其他ρ(ξ)都为零,有Px=x1 。当脚掌压力分散分布于脚掌面时,Px 位于 X1 和X2 之间。这表明,在 维情况下当通过移动等效力的作用点能实现平衡时,作用点会在脚掌的范围之内。 2.三维空间分析 机器人脚掌在 维空间中运动时,脚掌姿态和受力情况会比二维情况更复杂,但 维空间中的 ZMP 原理仍然类似。考虑机器人脚掌位于三维空间中的水平地面上,其竖直方向和水平方向分力分别如图7(a) (b) 所示。
图7 三维地面作用力分量,(左(a)和右(b)) 设地面上某点 r=[ξ,η,0]T,其中ξ和η分别为该点在x轴和y轴的坐标值。 再设ρ(ξ,η)为该点处地面反作用力的竖直分量的大小,如图7(a) 所示。地面作用力的竖直方向分量的总和为:
式6 类似式2,可以计算三维情况下,地面作用力绕某点p=[px py 0]T的力矩τn(p):
式7 其中ʃs表示对地面作用力进行二重积分。地面反力的竖直分量不会造成绕z轴转动的扭矩,所以τnt=0 。同样如同二维的情况,为使等效扭矩为零,即:
式8 于是有:
式9 此时点p等价于地面反力的集中作用点,且此时地面反力绕点p的扭矩为零,机器人不会有绕点p转动的趋势,点p即为此时的 ZMP。 需要注意的是,与二维情况不同,三维情况下地面作用力的水平分力,会对脚掌产 生等效扭矩。考虑如图7(b)的水平方向分力,设σx(ξ,η)和σy(ξ,η)分别为单位面积上的水平分力在x和y方向上的分量 。则两个方向的水平力分别为: