Loading [MathJax]/jax/output/CommonHTML/jax.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >双足机器人ZMP预观控制算法及代码实现

双足机器人ZMP预观控制算法及代码实现

作者头像
博士的沙漏
发布于 2022-01-07 08:48:15
发布于 2022-01-07 08:48:15
2K0
举报
文章被收录于专栏:AI与机器人AI与机器人

1. 简介

本文的主要内容参考了Kajita等人2003年的论文,Biped Walking Pattern Generation by using Preview control of Zero-Moment Point 以及《仿人机器人》一书,算法的代码已开源,详见文末链接。

把双足机器人简化为一个桌子小车(Cart-Table)模型,会比较方便于处理ZMP问题。本算法提出了一种混合了ZMP和倒立摆模型的预观控制算法,可用于伺服跟踪ZMP的轨迹。基于预观控制算法,就算我们的仿真模型是简单的倒立摆模型,也可以解决更加复杂的双足机器人的动力学控制问题。

2. 双足机器人的动力学模型

2.1 三维线性倒立摆模型

如图所示,考虑在三维笛卡尔空间当中运动的三维线性倒立摆模型(3D-LIPM),该模型的绕其支点 转动,质心可以在一个虚拟的约束平面运动内运动。 所在的平面为水平地面, 轴竖直向上,与地面垂直,并且我们指定 的正方向为机器人前进的方向。

约束平面可使用该平面的法向量表示为 ,并且 轴与该平面的交点为 ,则对于约束平面来说: 如果约束平面是水平的,则有 ,此时,倒立摆模型的质心在该约束平面内的运动过程由下面的运动方程表示:

其中, 表示质心的质量, 表示重力加速度常数, 分别表示倒立摆模型绕 轴和 轴旋转的扭矩。即使对于约束平面非水平( )的坡道步行过程,我们也可以为扭矩添加额外的约束来使得该动力学过程成立: 对于约束平面水平的情况,零力矩点(ZMP)的计算方式为:

其中, 表示ZMP的位置。将上述公式代入前面的运动方程中可以得到:

2.2 ZMP方程和桌子-小车模型

在前面的章节,我们把ZMP作为三维线性倒立摆的输入,用于计算质心的运动轨迹。从本节开始,为了控制ZMP的轨迹,我们需要把它作为控制系统的输出,因此将上个章节最后的那个公式重写为ZMP方程

上面这个方程在后文中将被多次提到,后面凡是使用ZMP方程的地方都是指这个方程。

桌子小车模型的示意图如下图所示:

水平地面上的桌子表面有一个沿着桌面运动的小车,尽管桌脚的面积很小,桌子呈现头重脚轻的情况,容易倾倒。但我们可以控制小车在桌面上做加速运动,产生对应的加速度来获得桌子的瞬时平衡,此刻ZMP是在桌子支撑脚的范围内的。图中所示为沿着 方向运动的桌子小车模型,在三维环境中,我们还需要一个沿着 方向运动的桌子小车模型,情况是相似的,因此,这里我们以 方向的桌子小车为例来进行分析。

由于我们要求绕ZMP点的力矩必须为零(否则会导致机器人翻倒),因此:

该公式表示小车产生的加速度等效到ZMP点的力矩作用要能抵消小车的质量收到重力作用后在ZMP点处产生的力矩作用,这样才能保证桌子是平衡的。并且,我们可以发现,这个公式与前面的ZMP方程是等价的。

3. 基于ZMP产生步行模式

我们的总体目标是要给定ZMP来求解质心的运动过程,前面的ZMP方程已经给出了ZMP点和质心运动之间的关系,求解这个微分方程可以使用快速傅里叶变换(FFT)在频域内解决,然后再使用FFT的逆变换得到质心的轨迹。这里我们将介绍另一种更加简单的方法。

首先,我们把质心水平加速度的微分定义为 当做ZMP方程的输入,我们可以把ZMP方程写作如下的系统状态方程

对于 方向来说,我们可以定义 来获取相似的结果。

利用上述公式我们把步态模式生成器构造为一个ZMP跟踪系统,如下图所示:

该系统可以生成COM的运动轨迹,同时ZMP可以跟踪预定义的参考位置。

除此之外,我们还需要考虑另一个问题,如下图所示:

图中展示了在理想情况下,双足向前机器人迈出步长为 的一步时ZMP和COM的运动轨迹。在第1.5秒的时候进行支撑腿的切换,切换时刻的前后ZMP的参考轨迹都保持不变,在切换时刻支撑腿由其中一条腿换做另一条腿进行支撑运动。在进行支撑腿切换的时刻,ZMP点有一个位置上的突变,COM的运动在此之前已经开始了,如图中Output箭头所指的位置。从前面的控制框图可以看出,我们必须要引入未来的信息来影响当前的状态。这是什么意思?也就是说我们要做提前的规划预测,把“眼光”放长远一点,不能仅仅依靠当前的信息反馈来做判断。这里就需要引入我们的算法了:预观控制算法。

我们先把前面定义的ZMP的系统状态方程离散化,设采样时间为

我们把上述方程称为离散化的系统方程,其中,

以及

给定ZMP的参考位置 ,为了使得系统的输出 尽可能精确地跟踪目标ZMP位置 ,我们定义一个评价函数来作为损失函数,从而构造一个优化问题。评价函数为:

其中, 表示伺服误差, 表示一个 的半正定的对称矩阵。 表示状态向量的增量, 表示输入的增量。在任意时刻 ,满足使得 最小化的解 就是我们要的最优解。

在每一个采样时间,如果可以预先知道ZMP的未来 步的参考量,则使得评估指标最小化的最优控制器为:

其中, 表示基于权重 以及离散化的系统方程的系统参数计算得到的增益。因此,预观控制过程由三部分组成:跟踪误差的积分动作、状态反馈、使用未来参考的预动作。

下图所示为采用预动作后的收益:

我们可以看到,控制器并不需要太长未来时间的信息,因为预收益 在未来 秒以后已经变得非常小了。

下图是采用 秒的预观时间周期时的步态模式生成结果,包含向前走三步的COM和ZMP轨迹:

其中,上面的子图为沿着 轴的矢量平面内运动过程,下面的子图为沿着 轴的侧平面内的运动过程。我们可以看到,COM的轨迹非常平滑,实际的ZMP轨迹也能完全跟踪参考的ZMP轨迹。整个步行过程可以分为多个步行周期,在单个步行周期中又可以分为单腿支撑相位和双腿支撑相位。在单腿支撑的步相中,ZMP的参考轨迹要始终落在支撑脚的区域内,在切换支撑腿以后要从旧的支撑脚区域转移到新的支撑脚区域当汇总。为了获得一个平滑的ZMP轨迹,我们使用了Cubic Spline进行轨迹插值。

下图展示的是采用更短预观时间(0.8秒)的COM轨迹预测和ZMP轨迹跟踪结果:

从图中我们可以看到,ZMP的跟踪轨迹不如前面采用更长预观时间的算法结果,这里不能很好地跟踪ZMP的参考轨迹。尽管这样,整个系统还是稳定的,因为有状态反馈作为系统的输入。

以上为Kajit等人在2003年论文中提出的ZMP预观控制算法的基本内容,读者也可参考《仿人机器人》一书中的第4.4章节。

4.参考文献

基础版ZMP预观控制算法:Biped Walking Pattern Generation by using Preview control of Zero-Moment Point

改进版ZMP预观控制算法:General ZMP Preview Control for Bipedal Walking

《仿人机器人》,关注公众号【博士的沙漏】,后台回复【HR】获取下载链接。

5. 代码实现

代码使用Python语言编写,一共实现了3种ZMP预观控制算法,包括最基础款ZMP预观控制、考虑当前时刻ZMP误差的预观控制和考虑历史ZMP误差之和的预观控制,可根据给定的每一步落脚点生成质心和ZMP的运动轨迹。其中,基础款ZMP预观控制算法由于没有考虑ZMP的误差反馈,在实际使用的时候随着前进距离的增加会累积误差,可能会与所规划的ZMP参考点有差异,如下图所示:

而考虑了当前时刻ZMP误差的预观控制算法虽然有所改善,但改善微乎其微,如下图所示:

改进版的ZMP预观控制算法考虑了历史积累的ZMP误差因此其控制效果最好,能完全跟踪参考的ZMP轨迹:

该算法生成的COM和ZMP参考轨迹可用于双足机器人的步行控制过程:

代码开源在Github仓库,地址为:https://github.com/chauby/ZMP_preview_control.git

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博士的沙漏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【双足机器人(3)】3D线性倒立摆Python仿真(附代码)
本文是双足机器人系列的第三篇,在前面的文章中我们介绍了2D线性倒立摆的基本理论,详见:
博士的沙漏
2021/07/20
1.6K0
【双足机器人(1)】线性倒立摆及其运动控制(附代码)
在仿人双足机器人的控制里面,可以将机器人模型简化为一个线性倒立摆模型(下图来自梶田秀司教授的《仿人机器人》[1],该书电子版可在公众号后台回复【HR】获得),用于机器人的平衡控制和步态规划。线性倒立摆模型及其后续扩展的其他模型在双足机器人的研究中被广泛采用,取得了不错的控制效果。今天,我们就来聊一聊其中最经典,也是最基础的模型:线性倒立摆模型。
博士的沙漏
2020/12/08
2.3K0
【双足机器人(2)】倒立摆运动学模型构建(附代码)
在上一期的文章中,我们对线性倒立摆在2D平面内的运动过程进行了分析,并给出了基于轨道能量的线性倒立摆控制过程。
博士的沙漏
2021/01/05
2K0
【双足机器人(2)】倒立摆运动学模型构建(附代码)
仿人机器人步态规划简述(一)
仿人双足机器人的行走控制并不像人一样轻松,而是需要工程师对机器人的动作进行各种分解,经过步态规划之后机器人才可以实现类似人一样的行走动作。对于仿人机器人的行走过程,涉及到以下的一些概念:
ZC_Robot机器人技术
2021/01/01
5.2K5
仿人机器人步态规划简述(一)
基于混合模型的三步优化框架在人形机器人跳跃运动中的应用
人形机器人在复杂环境中的动态运动能力(如跳跃)是实现环境适应与障碍跨越的关键。然而,高动态跳跃运动涉及复杂的动力学耦合问题,例如质心角动量(CAM)与姿态控制的协调、飞行阶段惯性调整对着陆稳定性的影响等。传统方法通常依赖大规模非线性优化或机器学习,但存在计算效率低、模型简化不足等问题。
一点人工一点智能
2025/04/01
1360
基于混合模型的三步优化框架在人形机器人跳跃运动中的应用
典型人形机器人ASIMO-honda
1986年,本田开始研究机器人双足行走模仿人类。采用步行稳定控制技术,包括地面反作用力控制,ZMP模型控制和脚着地位置控制,两足机器人可能会在不平坦或倾斜的地板上稳定行走。步态产生技术限制了打滑和旋转,确保了动态稳定性跑步。Honda自1986年以来一直从事人形机器人的开发。下图显示了本田人形机器人开发的简要历史。 首先,两足机器人E0可以以直线和静态方式行走。 1993年,增加了一个躯干和两个手臂以完成第一个真正的人形机器人P1。 随后,开始采取减轻重量和尺寸的措施。
ZC_Robot机器人技术
2021/02/20
3.2K1
典型人形机器人ASIMO-honda
舍百万年薪造“哪吒”?稚晖君开发双足机器人实现轮足切换结构创新设计!
大数据文摘转载自机器人大讲堂 那个离职华为消失了半年的B站UP(鸽子)主@稚晖君带着他的新作——很新的机器人回归了。 对于粉丝们来说,半年的煎熬终于可以在这一刻释放了,而对于这个自带热点的男人来说,B站当天的热搜榜首也是被安排得明明白白。 前方高能,全新双足机器人露面 这次他设计的是一款双足机器人,名叫neZHa,咱先来看看“哪吒”的整体效果图: 头顶“火尖枪”、双侧“混天绫”、脚抵“风火轮”,这霸气的造型着实跟它的名字很应景。 在日常生活中,地面机器人的运动形式方面主要分为双足和轮式机器人两大类。区
大数据文摘
2023/04/10
3290
舍百万年薪造“哪吒”?稚晖君开发双足机器人实现轮足切换结构创新设计!
如何让人形机器人“行稳致远”?这篇顶级期刊的论文提出了新方法
随着人形机器人行业的快速发展,其在现实生活中的应用也愈发变得可能。如何在适应不同的地面环境的同时,还能保证机器人的行走安全,是一个亟待解决的课题。 作者 | 优必选 优必选科技与代尔夫特理工大学丁加涛博士、香港中文大学(深圳)林天麟教授(兼任深圳市人工智能与机器人研究院智能机器人中心主任)、利兹大学黄艳龙教授合作,联合发表了论文《Safe and Adaptive 3-D Locomotion via Constrained Task-Space Imitation Learning》。该论文针对人形机器
AI科技大本营
2023/04/14
5160
如何让人形机器人“行稳致远”?这篇顶级期刊的论文提出了新方法
机器人系统的方程求解(现代控制理论2)
当我们已经建立了系统的状态空间模型,给定输入,得到输出,对于机器人而言,给定左右轮速度观察机器人在环境中的状态变化,方程的解就蕴含其中了。
zhangrelay
2021/03/03
5040
公开课精华 | 机器人的带约束轨迹规划
本文章总结于大疆前技术总监,目前在卡内基梅隆大学读博的杨硕博士在深蓝学院的关于机器人的带约束轨迹规划的公开课演讲内容。
深蓝学院
2020/12/10
1.4K0
从颠沛流离的波士顿动力说起:多足机器人的路为什么越走越艰难?
今年8月,雷锋网将在深圳举办一场盛况空前有全球影响力的人工智能与机器人创新大会。届时雷锋网(搜索“雷锋网”公众号关注)将发布“人工智能&机器人Top25创新企业榜”榜单。目前,我们正在拜访人工智能、机器人领域的相关公司,从中筛选最终入选榜单的公司名单。如果你也想加入我们的榜单之中,请联系:2020@leiphone.com。 雷锋网按:本文作者栗向滨,中科院自动化所复杂系统国家重点实验室研究生,主攻机器人与人工智能。 2016年3月18日彭博商业周刊爆出了一条新闻,谷歌母公司Alphabet计划放弃机器人计
AI科技评论
2018/03/07
1.6K0
从颠沛流离的波士顿动力说起:多足机器人的路为什么越走越艰难?
仿人机器人研究进展简介(二)
仿人机器人的研究目前已经取得了长足的进展。从一开始的仿人机器人机构设计,腿部控制原理,平衡机理分析,步态规划等,目前的典型几款仿人机器人已经将一些关键技术有机融合在一起。国外在仿人机器人的研究上有了很多炫酷的展示,包括美国、日本人和欧盟。但是不同国家在仿人机器人的研究方向上有明显的不同,尤其在研究背景和目的上。总体来说,美国的研究主要集中在航天以及军事领域,日本的研究主要在居家以及生活应用领域,而欧洲偏向于特殊场景以及医疗等领域。
ZC_Robot机器人技术
2021/01/01
2.8K0
仿人机器人研究进展简介(二)
【云+社区年度征文】机器人力控制算法与实际应用详解
机器人力控制应用在机器人控制任务中的方方面面,其也是衡量一个机器人本体控制水平的衡量标准。机器人力控制兼顾机器人本体特性与人机交互等任务,使得机器人在发挥自身运动灵巧性的同时与人进行友好的交互。可以说机器人的力控制是机器人实际走向人类生活的关键技术。 本文详细阐述机器人的力控制的概念和应用,并且简要给出算法实现步骤。
ZC_Robot机器人技术
2020/11/28
8.1K6
【云+社区年度征文】机器人力控制算法与实际应用详解
移动机器人设计与实践-基础概念汇总
人类社会经历过农业时代(最强代表汉唐)-工业时代(最强代表日不落帝国)-信息时代(最强代表美利坚合众国),目前全力升级到智能时代(刚开始)。 
zhangrelay
2023/04/27
6970
移动机器人设计与实践-基础概念汇总
【技术创作101训练营】人形机器人的成长史
今天我们讨论的课题是人形机器人的成长史,从360度观察人形机器人的成长,让大家了解人形机器人的过去、现在和未来。
ZC_Robot机器人技术
2021/01/16
5.7K12
【技术创作101训练营】人形机器人的成长史
机器人系统的稳定性(现代控制理论4)
在上一篇博文中,我们着重介绍了系统的能控性和能观性,对于机器人系统而言,还有一个非常重要的性质就是稳定性。
zhangrelay
2021/03/03
7480
单足跳跃机器人:直线型腿部
单足机器人是作者科研生涯中的第一个机器人作品,虽然已经过去了接近10年,但是对于单足机器人的技术点仍然历历在目。在这里给大家分享下自己对单足机器人技术点的认识。
ZC_Robot机器人技术
2020/11/06
2.8K1
单足跳跃机器人:直线型腿部
【技术解析】无人车横向控制解读
技术解析是由美团点评无人配送部技术团队主笔,每期发布一篇无人配送领域相关技术解析或应用实例,本期为您带来的是无人车横向控制解读
美团无人配送
2019/04/26
6.5K0
【技术解析】无人车横向控制解读
单足跳跃机器人:多关节型腿部
受动物和人类运动敏捷性的启发,研究和开发腿式机器人的研究人员数量在过去的几十年中,它一直在快速增长。与多腿机器人相比,单腿机器人只有一种类型的运动步态,即跳跃代表高度非线性的动力学行为,包括飞行和站立阶段交替进行。 跳动动作有动态稳定并提出具有挑战性的控制问题。 关于腿式机器人的大部分研究专注于单腿跳跃的建模和控制机器。
ZC_Robot机器人技术
2020/11/07
3.1K2
单足跳跃机器人:多关节型腿部
稚晖君教你制作全球最迷你的自平衡机器人
摘要:Nano是一个小巧可爱的机器人,身高大约10公分,特点是平衡感好,长得很白以及善于卖萌。作为全球最迷你的自平衡机器人,Nano身材虽小,但配置有丰富的传感器—陀螺仪,超声波,Motion sensor,如果喜欢的话你可以让它自主巡线,跟踪,避障…更重要的是,它是完全开源的,从硬件到软件的资料都会在下文中提供下载。
杨源鑫
2021/07/07
3.2K0
稚晖君教你制作全球最迷你的自平衡机器人
推荐阅读
相关推荐
【双足机器人(3)】3D线性倒立摆Python仿真(附代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档