关键词:trot步态,walk步态,步态规划

目录

步态基础概念介绍

TROT步态原理

TROT代码实现

WALK步态原理

WALK代码实现

引用文献:


写在前面

这篇文章介绍的是,这篇文章https://blog.csdn.net/weixin_41659552/article/details/113546299?spm=1001.2014.3001.5501中如红框所示的部分

步态基础概念介绍

步态:指机器人各腿依序进行抬腿、着地以及后蹬动作的一种行走方式。为了确保机器人在未受外界扰动的情况下能够稳定步行,需要进行步态规划。

摆动相:腿部抬起处于腾空的状态。

支撑相:腿部着地的状态。

周期:腿部完成抬腿迈步以及着地后蹬动作的时间。

步态频率:单位时间内完成的步态周期数。

步长:一个周期内,足端从抬腿到着地过程中走过的距离。

占空比:单腿处于支撑相的时间占整个周期的比值。

步幅:一个周期内,机身前进的距离。

单独看这些名词不好理解,我们就利用一个trot步态的例子进行讲解

如图2-7(a)所示:起始时对角腿 1 和 4 抬起并向前摆动,另外一组对角腿 2 和 3 支撑整个机身并确保机器人重心在其支撑对角线上。此时对角腿 1 和 4为摆动相,对角腿 2 和 3 为支撑相。
如图 2-7(b)所示:支撑腿 2 和 3 驱动机器人机身向前移 动,而对角腿 1 和 4 仍处于飞行相中。摆动相,支撑相同上。
如图 2-7(c)所示:当机体平移了半个步长即 s / 2 距 离时,摆动腿 1 和 4 着地,处于支撑状态,而原来处于支撑状态的对角腿 2 和 3 抬起处于摆动状态。此时对角腿 2 和 3 为摆动相,对角腿 1 和 4 为支撑相。
如图 2-7(d)所示:处于支撑相的对角腿 1 和 4 驱动机器人机身向前移动, 对角腿 2 和 3 处于飞行状态。摆动相,支撑相同上。
如图 2-7(e)所示:当机身平移了剩下的 s / 2 距离时,对角 腿 2 和 3 着地,而对角腿 1 和 4 开始抬腿并摆动,从而完成了一个完整周期的动作。机身移动的长度为S,即步幅和步长都为S。
以上,我们就明白了什么是摆动相,支撑相,步幅和步长。又因为我们选择的trot步态,这就决定了我们的占空比为0.5。周期由我们的实际需要和机器人狗的物理参数决定,步态频率由周期换算即可。
而不同步态就是在一个周期内,每个脚的摆动相,支撑相经过不同的组合而成,常见的步态如下,可看见不同步态的占空比分别是怎样的。

TROT步态原理

经过上述的举例,我们已经明白了狗狗一条腿的摆腿顺序,和摆腿时间。但腿具体是怎样摆的,在空间划过怎样的曲线我们还不得而知,这个曲线可能有很多种,以下是我列的几种:

是的是的,前面 3 个是我夸张处理了,第四个和我们需要的但较为接近。

步态函数是一个以时间 t 为自变量,函数坐标 x 和 z 为因变量的函数,

    

它的物理意义就是在一个平面内,每个时间打一个点,打出的点可以大致连成一条曲线。

这条曲线的推导也并非是凭空捏造出来的,它的推导需要满足一定的条件,例如

对摆动相来说,为了减少对身体的冲击,需要保证轨迹方程在起始和结束时刻,X方向速度和加速度为零;在尽量降低起始的加速度的同时,速度不能过慢,故速度曲线应该是一段快速上升到平稳的曲线。

基于这样的一些要求,我们便可以使用待定系数法去求解一个,符合要求的曲线,首先设

其中 t 为时间,T 为周期。对式子进行积分,得紧接着带入我们可以确定的值,如起始和结束时刻速度为 0 便可求得式子的参数。对求出的式子再积分一次,得出最终的步态曲线函数。

PA_TROT中采用的的是下图这个步态曲线函数,详细的介绍可以观看这个视频https://www.bilibili.com/video/BV1KQ4y1K7aV?from=search&seid=17567602001381485484)这个步态曲线函数是应该是从某个大佬的经过验证的论文中得来,大家直接拿来用就可以。

综上,我们知道了腿的摆腿顺序,摆腿时间和运动的轨迹,trot步态的基本原理就明白了,接下来就是程序实现。

TROT代码实现

首先,从原理到代码实现,应用前面章节的知识,我们应该明确输入量和输出量分别是什么?最基础的,我们应该知道当前的时间,抬腿的高度以及起始足端坐标和终点足端坐标,输出的值为足端坐标。

再按照上述理论的推导,一个周期内一组对角的腿一起迈出,然后另外一组对角的腿迈出。所以我们可以把周期设为一,占空比设为0.5。0~0.5个周期时,输出第1组坐标,0.5~1个周期输出第2组坐标。 因此我们首先用一个大的if为判断,看现在时间是属于哪个周期。当进入这个周期时,利用步态曲线函数计算出坐标,分别赋给对应的腿。

faai=0.5
Ts=1#函数功能:使用trot步态,生成足端坐标
#变量作用:
#t为当前时间
#xs为起始足端坐标
#xf为终点足端坐标
#h为抬腿高度
#r1,r2,r3,r4取值可以为1或者-1,代表曲线生成的正逆,用于控制转弯
#返回值:足端坐标
def cal_t(t,xs,xf,h,r1,r4,r2,r3):    #小跑步态执行函数if t<=Ts*faai:sigma=2*pi*t/(faai*Ts)zep=h*(1-cos(sigma))/2xep_b=(xf-xs)*((sigma-sin(sigma))/(2*pi))+xsxep_z=(xs-xf)*((sigma-sin(sigma))/(2*pi))+xf#输出yy1=zep y2=0 y3=zep y4=0#输出xx1=-xep_z*r1 x2=-xep_b*r2 x3=-xep_z*r3 x4=-xep_b*r4return x1,x2,x3,x4,y1,y2,y3,y4elif t>Ts*faai and t<=Ts:sigma=2*pi*(t-Ts*faai)/(faai*Ts)zep=h*(1-cos(sigma))/2;xep_b=(xf-xs)*((sigma-sin(sigma))/(2*pi))+xsxep_z=(xs-xf)*((sigma-sin(sigma))/(2*pi))+xf#输出yy1=0 y2=zep y3=0 y4=zep#输出xx1=-xep_b*r1 x2=-xep_z*r2 x3=-xep_b*r3 x4=-xep_z*r4return x1,x2,x3,x4,y1,y2,y3,y4

其中狗腿对应表如下

——头——
1————2
4————3

我们还注意到,传入的参数的参数中,r1,r4,r2,r3会与 x 坐标相乘,这个是起什么作用呢?这是困惑了许久的问题。

我们翻阅整份程序,可以在web_c中找到这个值的源头,它是遥控器传入的值

大概意思是这样的 当value = left 时  L=-1;R=1 ;value = right 时  L=1;R=-1

当 L=-1;R=1时,r1 = r4 = L = -1;r2 = r3 = R = -1;x1,x4与原来的轨迹相反,x2,x3与原来的轨迹相同。

它意味着,机器人坐标左边的足端都会产生一条向后的轨迹,而机器人坐标右边的足端都会产生一条向前的轨迹,使机器人左边脚往后,右边脚往前,完成旋转的动作。

WALK步态原理

有了上述的原理基础,我们学习walk步态原理时就变得容易了。我们知道一个步态是由足端轨迹和步态对应的占空比构成。walk步态足端轨迹与trot相同,我就不再介绍。而walk步态的摆动相,支撑相,占空比如图所示

walk步态任何时候都有三条腿着地,四条腿分别依次迈,他们的抬腿顺序为:左前——右前——右后——左后,每个摆动相分别的占空比0.25。

此外,当三条腿支撑时,涉及到一个找零力矩点的问题。这个问题有点复杂,我简单说一下,希望大家能看得。由于三脚着地,与四脚着地或者两脚着地情况都不一样,重心不是在对角线上,而是在三脚着地点形成的三角形中。因此找到零力矩点后,我们便调整身体姿态,实现让重心向前移动,进而让机体向前移动。详细的原理可以看这篇文章《基于零力矩点的四足机器人非平坦地形下步态规划与控制》

WALK代码实现

walk步态代码实现的总体框架与trot步态差不多,输入量当前时间和抬腿高度是必不可少的,但还是存在其他的一些差异。

首先walk步态是 4 条腿分开抬,因此一个周期会被划分为四个分别计算四条腿的足端轨迹。其次因为需要调整重心,也需要传入身体姿态的值。

值得注意的是,由于程序中walk步态与trot步态的迈腿速度不一样,所以进循环的速度也不一样,trot步态的计时是在主循环中,而walk步态是写在了PA_WALK文件中的cal_w函数里。

以此类推,依次算出四条腿的值,即可。

引用文献:

四足仿生机器人控制系统的研究与设计 华中科技大学 程品

液压四足机器人驱动控制与步态规划研究 北京理工大学 王立鹏

电驱四足机器人步态规划及运动控制系统设计 安徽工业大学 崔越

[灯哥开源—四足机器人]程序算法讲解与STM32移植——PA_TROT和PA_WALK讲解和trot步态,walk步态,步态规划相关推荐

  1. 运动学逆解,VMC算法,计算舵机角度输出文件PA_IK和PA_VMC讲解——[灯哥开源—四足机器人]程序算法讲解与STM32移植

    目录 写在前面 运动学逆解原理 运动学逆解PA_IK代码实现 VMC算法原理 VMC代码实现 引用文献: 写在前面 本篇文章介绍的是,运动控制线程padog.py的逻辑顺序这篇文章中如红框所示的部分 ...

  2. 【灯哥开源四足机器人】推荐一个开源四足机器狗项目,8自有度,两个舵机控制一个腿,apache开源协议的,已经迭代了好多个版本了,设计的非常好。有官方淘宝店,没有3D打印机的可以购买散装零件自己组装

    目录 前言 1,关于[灯哥开源四足机器人] 2,使用py-apple 3,总结 前言 本文的原文连接是: https://blog.csdn.net/freewebsys/article/detail ...

  3. 开源四足机器人 附设计图及代码

    斯坦福学生机器人俱乐部(Stanford Student Robotics club)Extreme Mobility 团队最近迎来了一名新成员--一个名为 Stanford Doggo 的四足机器人 ...

  4. 【ROS-Gazebo】开源四足机器人仿真模型pig_dog

    2019.6.23更新 本项目是基于ubuntu16.04,ROS kinect,在新版本上需要修改pid配置的yaml文件最后一部分的命名空间,在前面加上/pig_dog,否则无法找到路径. 我将写 ...

  5. 白泽六足机器人_arduino_v1——3D打印开源六足机器人程序

    导航在这里:白泽六足机器人_ros_v1 趁着五一帮忙做了一个六足机器人的程序,可以实现前后左右和超声波避障. 图片如下,可以避障,感兴趣的可以去抖音看具体运行视频. 1.打印结构并组装 这个结构在网 ...

  6. MIT Mini Cheetah开源四足机器人仿真环境20211130

    Mit Mini Cheetah相关: 1. 实验室官网 MIT Biomimetic Robotics Lab 2.  Mini Cheetah作者硕士论文 A low cost modular a ...

  7. 斯坦福大学开源四足机器人pupper腿部组装(上)

    上一篇:3D打印件嵌铜螺母. 本文的主题:组装pupper的腿部. 第一步:准备胯部的材料(左右腿同时进行组装),材料如下图所示,左右各一个舵盘,各4个m36内六角平头螺丝,各一个m36内六角杯头螺丝 ...

  8. 【菠萝狗四足机器人】二次开发教程--第一章 【简介与开发环境搭建】

    Py-apple Dynamics 简介与开发环境搭建 1 简介 1.1 何为 菠萝狗 和 Py-Apple Dynamics 1.2 目前支持的功能 2 开发环境搭建 2.1 硬件的搭建 2.1 软 ...

  9. Arduino白泽四足机器人——matlab逆运动学求解

    基于"白泽"四足机器人足端轨迹的插值方法 目录 1 应用背景 2 模型建立 3 MATLAB对足端轨迹进行拟合插值 4 结果与分析 5 matlab逆运动学程序 1 应用背景 近年 ...

最新文章

  1. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、为指定变量添加单位信息、自定义overall的标签名称
  2. 神经网络设计与分析之sin函数拟合分析
  3. cisco 2911 GRE ***
  4. 他在 B 站有 178 万粉丝,今天免费带你玩转 Python
  5. Maven Git发布
  6. 前端学习(3325):Mdn说闭包
  7. js 日期天数相加减,格式化yyyy-MM-dd
  8. 中秋祝福网页_中秋客户维系关怀,该送客户什么礼品?
  9. TypeScript教程
  10. php分页代码简单实现原理,php分页类之PHP分页原理+代码实现
  11. xen-tools虚拟机快速部署
  12. man综述--系统调用和库函数的关系
  13. 树莓派 —— 树莓派安装字体
  14. 伍德里奇 第6版 计量经济学导论_伍德里奇《计量经济学导论》(第6版)笔记和课后习题详解...
  15. Google 发布硬盘搜索引擎
  16. 聚类的方法、原理以及一般过程
  17. 记录:The field files exceeds its maximum permitted size of 1048576 bytes...解决方案【亲测有效】
  18. C语言Matrix编程题——[Recursion]D. Liang 8.2 Fibonacci number
  19. 马太效应/幂律分布的本质以及其数学表述
  20. Windows Server 2008 R2 WSUS服务器的详细配置和部署

热门文章

  1. 电脑老是自动安装流氓软件的解决办法(详解)
  2. linux的进程调度时机,Linux进程调度时机怎么把握?
  3. Cisco模拟计算机网络设计:某工厂园区网有:2个分厂(分别是:零件分厂、总装分厂)+1个总厂网络中心 + 1个总厂会议室;
  4. CW聚类算法原理 -- 译自《Chinese Whispers》论文
  5. unity导出android,可以显示出MMD模型,但是不能播放动作。求解答
  6. 2021年全球与中国3D和虚拟现实行业市场规模及发展前景分析
  7. ESSAY[000004]
  8. 宾夕法尼亚大学在线计算机硕士,宾夕法尼亚大学计算机与信息科学研究生录取条件有哪些?...
  9. unittest的详细说明
  10. Aspen Plus 2004.2_完整版全功能好用\