零倾覆力矩点(ZMP)

系列文章目录


前言

        在机器人学中,零倾力矩点(ZMP)是一个特征点,主要用于足式运动。在下文的一些假设中,我们将看到,它非正式地代表了一个系统接触反作用力的结果点。例如,下图中的刚体处于静态平衡,当且仅当其 ZMP 位于质心的垂直位置时。

静态平衡刚体的 ZMP 和 COM

一、定义

        从形式上讲,ZMP 指的是空间中相对于一个平面(通常是地平面)抵消接触力矩的点的集合。这个集合实际上是一个轴,而不是一个点,但为了方便起见,让我们按照传统的推导方法来计算地面平面上的 ZMP。这一推导从任何多刚体系统的牛顿-欧拉运动方程开始:

m\ddot{\boldsymbol{p}}_G=m\boldsymbol{g}+\boldsymbol{f}^c 

\dot{L}_O=\overrightarrow{OG}\times m\boldsymbol{g}+\boldsymbol{\tau}_G^c

        其中,m 为机器人的总质量,\boldsymbol{g} 为重力矢量,G 为系统的重心,\ddot{\boldsymbol{p}}_G 为加速度,\dot{L}_O 为固定点 O 的角动量变化率。在右侧,\boldsymbol{w}_G^c=[\boldsymbol{\tau}_G^c\; \boldsymbol{f}^c]) 表示净接触扭矩,即施加到机器人上的所有接触扭矩之和,坐标取自质心 (COM) G

        定义多体系统的重力惯性扭矩,它只取决于加速度:

\begin{aligned}&\boldsymbol{f}^{gi}\; \overset{​{\mathrm{def}}}{\operatorname*{\operatorname*{\operatorname*{=}}}}\; m(\boldsymbol{g}-\ddot{\boldsymbol{p}}_{G})\\&\boldsymbol{\tau}_{O}^{gi}\; \overset{​{\mathrm{def}}}{\operatorname*{\operatorname*{\operatorname*{=}}}}\; \overrightarrow{OG}\times m\boldsymbol{g}-\dot{L}_{O}\end{aligned}

        牛顿-欧拉方程可以用螺杆代数的扭矩形式写出:\boldsymbol{w}^{gi}+\boldsymbol{w}^c=\boldsymbol{0}:ZMP 是属于非中心轴的点 Z,其定义如下:

\boldsymbol{\tau}_Z^{gi}\times \boldsymbol{n}=0

        其中 \boldsymbol{n} 表示非倾斜表面(通常指在平地上行走时的地面)的法向量。这个等式的左侧可以根据另一点上的力矩进行改写:

\begin{aligned} \boldsymbol{\tau}_Z^{gi}\times\boldsymbol{n}& =(\boldsymbol{\tau}_O^{gi}+\overrightarrow{ZO}\times\boldsymbol{f}^{gi})\times\boldsymbol{n} \\ &=\boldsymbol{\tau}_O^{gi}\times\boldsymbol{n}+(\overrightarrow{ZO}\cdot\boldsymbol{n})\boldsymbol{f}^{gi}-(\boldsymbol{f}^{gi}\cdot\boldsymbol{n})\overrightarrow{ZO} \end{aligned}

通过展开向量三重乘积。我们暂且假设 OZ 位于 \boldsymbol{n} 的法线的同一平面上,因此 \overrightarrow{ZO}\cdot\boldsymbol{n}=0。然后,将上面的表达式注入 ZMP 的定义中,得到

\overrightarrow{OZ}=\dfrac{\boldsymbol{n}\times\boldsymbol{\tau}_O^{gi}}{\boldsymbol{f}^{gi}\cdot\boldsymbol{n}}

        这个公式在实践中用于计算力传感器或惯性测量单元的 ZMP,这些传感器或惯性测量单元通常嵌入在当前的足式机器人中。在某些情况下,ZMP 也可称为零力矩点(zero moment points),例如在足式运动中,当角动量在质量中心保持恒定,因此 \boldsymbol{\tau}_Z^{gi}=\boldsymbol{\tau}_G^{gi}=\boldsymbol{0} 。但是,请记住,如果没有这样的假设,在 ZMP 上的接触力净力矩只能在其三个坐标中的两个坐标上抵消。

二、压力中心

        压力中心(COP)是定义在两个接触物体之间的一个动态点。与根据多体系统加速度定义的 ZMP 不同,COP 是根据接触面上的相互作用力定义的局部量。当机器人与环境单接触或在平地上行走时,这两种不同的方法会得出相同的结果(Sardain 和 Bessonnet,2004 年)。

        让我们考虑机器人的一只脚接触平面的情况:

        环境通过表面对机器人施加的接触力 \boldsymbol{f}^{c} 可分解为两个项的总和: 

  •  合压力 \boldsymbol{f}^p=(\boldsymbol{f}^c\cdot\boldsymbol{n})\boldsymbol{n}
  • 合摩擦力 \boldsymbol{f}^f=\boldsymbol{f}^c-\boldsymbol{f}^p,与接触面相切 (\boldsymbol{f}^f\cdot\boldsymbol{n}=0)

        这两个力是通过接触面 \text{S} 的所有元素 \text{dS} 施加的无穷小力的总和。用 p(P) 表示在任意点 P\in\mathcal{S} 上施加的压力:

\boldsymbol{f}^p=\int_{P\in\mathcal{S}}p(P)\boldsymbol{n}\mathrm{d}\mathcal{S}

        压力始终是一个正量,因为脚无法穿透地面。因此,始终存在一个压力中心 C,即压力力矩消失的点,因此可以将 \boldsymbol{f}^{p} 视为 "施加在 C 处"。其坐标如下 

\begin{aligned} \boldsymbol{\tau}_{C}^{p}& =0 \\ \overrightarrow{OC}\times(\boldsymbol{f}^p\cdot\boldsymbol{n})\boldsymbol{n}& =-\boldsymbol{\tau}_O^p \\ \left(\boldsymbol{f}^p\cdot\boldsymbol{n}\right)\boldsymbol{n}\times\overrightarrow{OC}\times\boldsymbol{n}& =-\boldsymbol{n}\times\boldsymbol{\tau}_O^p \end{aligned}

        由于 OC 两点都属于同一法线 \boldsymbol{n} 平面,因此我们得到

\overrightarrow{OC}=\dfrac{\boldsymbol{\tau}_{O}^{p}\times\boldsymbol{n}}{\boldsymbol{n}\cdot\boldsymbol{f}^{p}}

        同时,摩擦力与接触面相切、 因此它们的力矩与 \boldsymbol{n} 一致。因此,上述关系可以等价地写成

\overrightarrow{OC}=\dfrac{\boldsymbol{\tau}_{O}^{c}\times\boldsymbol{n}}{\boldsymbol{n}\cdot\boldsymbol{f}^{c}}

        在这里,我们可以看到与用于定义 ZMP 的公式相同的公式,只不过现在是应用于(局部的)接触扭矩,而不是(全局的)重力惯性扭矩。现在,还记得牛顿-欧拉方程中的 \boldsymbol{w}^{gi}=-\boldsymbol{w}^c 吗?你就知道为什么只有一个接触点时 COP 和 ZMP 会重合了(Sardain et Bessonnet, 2004)。

        上图表示 COM G、COP C 和沿着(非中心)重力惯性轴 \Delta^{gi} 的 ZMP Z。后者不一定包含 G,除非系统的角动量守恒(\dot{L}_{G}=\boldsymbol{0})。角动量守恒是上世纪 90 年代和 00 年代大多数双足运动研究的共同假设(Kajita et Tani,1991 年)。 

三、支撑区域

        只要保持接触,COP 就会位于接触面 S 的内部。事实上,接触力矩可以写成

\boldsymbol{\tau}_O^c=\int_{P\in\mathcal{S}}\overrightarrow{OP}\times p(P)\boldsymbol{n}\mathrm{d}\mathcal{S}

        这样,上面的 COP 公式就变成了

\overrightarrow{OC}=\dfrac{\int_{P\in\mathcal{S}}p(P)\overrightarrow{OP}\operatorname{d}\mathcal{S}}{\int_{P\in\mathcal{S}}p(P)\mathrm{d}\mathcal{S}}

        因此,可以将 COP 视为地面接触点的平均值,并根据各自的压力进行加权。当它越过 S 的边界时,接触就会中断,并开始绕 S 区域的相应边缘旋转。为了避免这种结果,足式机器人必须确保其 COP 保持在该区域内,该区域被称为 "支撑区域"。条件 C\in\mathcal{S} 就是非倾斜接触条件。

3.1 与平面的多重接触

        在所有接触点都与同一平面接触的特殊情况下,支撑区域 S 成为所有接触点的凸壳。事实上,同一平面可用于定义上述的 COP 和 ZMP,积分公式显示 C\in\mathcal{S}也是不倾斜的必要条件。这就得出了双足运动中使用的著名标准:

非倾斜接触条件:在双足行走过程中,ZMP位于定义为地面接触点凸壳的支撑区域 S 内。


        这一标准经常用于生成行走轨迹,例如(Kajita 等人,2003 年)和(Wieber,2006 年)。需要注意的是,这是接触稳定性的必要条件,但不是充分条件,因为它缺乏非滑动的补充条件(详见本文第二节)。

四、更进一步


        尽管零倾覆力矩点已被应用于平衡足式机器人,但它通常是任何扭矩的一个特征点。在平衡过程中,我们通常会控制净接触扭矩的 ZMP,即使在有外力的情况下也能得出该值。您可以使用这个 Docker 镜像查看人形机器人控制器的 ZMP 是如何表现的,从而建立直觉。

        ZMP 支持区域可扩展到多接触场景,即脚或手与不同非共面接触的场景。不过,其二维性质使其在多接触运动中受到了一些限制。因此,在后来的行走轨迹生成器中,它们被扩展到了 COM 加速度的三维锥体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值