零倾覆力矩点(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 加速度的三维锥体。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/140745.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【深入理解SpringCloud微服务】深入理解nacos配置中心(四)——配置新增或修改源码分析

【深入理解SpringCloud微服务】深入理解nacos配置中心(四)——配置新增或修改源码分析 原理回顾源码分析ConfigController#publishConfig()ConfigOperationService#publishConfig()nacos事件监听机制ConfigChangePublisher#notifyConfigChange()NotifyCe…

在 FlexSim 中使用 OpenUSD 分析、可视化和优化现实世界的流程

对于制造和工业企业而言,效率和精度至关重要。为了简化运营、降低成本和提高生产力,各公司正在转向数字孪生和离散事件模拟。 离散事件模拟使制造商能够通过试验不同的输入和行为来优化流程,这些输入和行为可以逐步进行建模和测试。 FlexSi…

6. Transforms的使用(一)--ToTensor()

Transforms的使用(一) 1.使用ToTensor类将数据转化为Tensor形式 导入需要使用的transforms类 from torchvision import transforms创建ToTensor类的实例 totensor transforms.ToTensor()将读取的图片ndarray数据转化为Tensor数据 img cv.imread(img_p…

Java网络编程 TCP通信(Socket 与 ServerSocket)

1.TCP通信原理 TCP通信涉及两个端点:客户端和服务器。服务器端使用 ServerSocket 监听特定端口,等待客户端的连接请求。客户端使用 Socket 连接到服务器的IP地址和端口。一旦连接建立,双方就可以通过输入输出流进行数据交换. ServerSocket是…

视频工具EasyDarwin生成RTMP给WVP拉流列表

效果 运行 登录 http://127.0.0.1:10086/ admin/admin 创建RTMP服务

微型导轨在光学仪器中的应用!

微型导轨在光学仪器中扮演着至关重要的角色,以其高精度、高稳定性的特点,提供稳定的光学路径和精确的光学元件位置。接下来,我们一起来看看微型导轨在光学仪器中的应用实例! 1、显微镜:在显微镜中,微型导轨…

鹏哥C语言自定义笔记重点(67-)

67. 68. 69. 70. 71.结构体内容 72.理解结构体的字节数 73. #pragma once //头文件中使用,功能是:防止头文件被多次引用 74.结构体传参 结论:结构体传参时,要传结构体地址。 75.位段 76.static是只能在该文件中看到,其他地方看不到 77.…

【6大设计原则】迪米特法则:解密软件设计中的“最少知识原则”

引言 在软件设计中,设计原则是指导我们构建高质量、可维护系统的基石。迪米特法则(Law of Demeter,LoD),也被称为“最少知识原则”,是六大设计原则之一。它强调对象之间的松耦合,确保系统的各个…

8. Transforms的使用(三)-- Resize

Transforms的使用(三) 1. 为什么要使用Resize 在模型的训练过程中往往需要图片数据的维度相同,才能适应深度学习模型中的相关神经网络结构,这时候就需要使用Resize保证所有的图片保持相同的尺寸2. 使用Resize调整图片的尺寸 在pytorch2.3的版本上,Resize()支持对Tensor类…

1405 问题 E: 世界杯

废话 这个题,我估计 22 22 22 年的时候写过一次,当时应该是搞明白了,现在重新写还是不会写,有点无奈 题目 问题 E: 世界杯:现在的 OJ 把题目加到一个活动里面去之后,感觉之后这个链接就访问不了了。题目…

CSS—4

1.定位 1.相对定位 2.绝对定位 3.固定定位 4.粘性定位 5.定位的特殊应用 2.布局-版心 3.布局-常用布局名词 4.布局-重置默认样式

321. 拼接最大数

1. 题目 321. 拼接最大数 2. 解题思路 题目精简一下: 给你两个数组,从每个数组选取N个元素(需要保持相对顺序,比如从数组[4,8,2]选取两个元素,选取出来后必须保持顺序,比如选4和2,那么组成新…

对操作系统(OS)管理和进程的理解

文章目录 从冯诺依曼体系入手来了解计算机硬件部分操作系统操作系统的概念设计操作系统(OS)的目的对下(硬件)OS的管理对上如何理解系统调用 进程 在计算机系统中,硬件、操作系统和进程是三个至关重要的概念。它们相互协…

C# 反射之动态生成dll/exe

这个可能应该属于反射的高级使用范围了,平常在项目中使用的人估计也不是很多。由于使用反射的话会降低性能,比如之前用到的GetValue、SetValue等之类,但是使用这种方式会大大提高效率,在这里我只想说,都直接写IL指令了…

C++八股文之面向对象篇

🤖个人主页:晚风相伴-CSDN博客 思维导图链接:面向对象的性质 持续更新中…… 💖如果觉得内容对你有帮助的话,还请给博主一键三连(点赞💜、收藏🧡、关注💚)吧 …

【CSS in Depth 2 精译_031】5.3 Grid 网格布局的两种替代语法

当前内容所在位置(可进入专栏查看其他译好的章节内容) 第一章 层叠、优先级与继承(已完结) 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位(已完结) 2.1 相对…

【VSCode】VSCode Background 背景插件辅助窗口程序

前排贴上Github项目链接 GitHub窗口项目链接 这是一个基于VSCode上由shalldie上传的background扩展制作的windows窗口程序。 该程序旨在通过窗口程序尽可能的完善该扩展原有的功能。 background - shalldie 的最大优势是我目前仅在其扩展上发现了UseFront的选项,这…

2011年全国硕士研究生入学统一考试计算机科学与技术

1. 试卷背景: 试题:2011年全国硕士研究生入学统一考试计算机科学与技术学科联考中的计算机学科专业基础综合试题。难点:该问题的研究难点在于试题涵盖了计算机科学与技术的多个方面,包括数据结构、算法、计算机组成原理、操作系统…

text2sql(NL2Sql)综述《The Dawn of Natural Language to SQL: Are We Fully Ready?》

《The Dawn of Natural Language to SQL: Are We Fully Ready?》(github)出自2024年6月的NL2SQL(Natural language to SQL )综述论文。这篇论文尝试回答如下三个问题: 问题1:NL2SQL的现状是什么?(Q1:Where Are we Now?) 论文图1总结了近20年NL2SQL方法…

Qt:懒汉单例(附带单例使用和内存管理)

前言 本文主要写懒汉单例以及单例的释放,网上很多教程只有单例的创建,但是并没有告诉我们单例的内存管理,这就很头疼。 正文 以下是两种懒汉单例的写法 1. 懒汉式单例(多线程不安全,但是在单线程里面是安全的&…