发明名称 应用于四足仿生机器人的静步态和对角小跑步态切换算法
摘要 一种应用于四足仿生机器人的静步态和对角小跑步态切换算法,给出了间歇静步态向对角小跑步态切换的六种情况以及最优的切换方法。首先,给出了步态切换过程中足端位置描述的定义方法,提出了间歇静步态及其可发生切换的点和对角小跑步态及其可接入的点;然后,给出了步态切换中节律控制的规则和模式控制的策略,保证了切换过程中速度的平滑性;最后,提出改进的泛稳定裕量稳定性判别法,使其可以准确监控步态过渡时处于加速状态的机体稳定性。该算法同时考虑相位差和切换速度,在提高步态切换稳定性平滑性的同时,缩短由收到切换信号到切换开始的时间差,保证机器人步态切换的稳定高效。
申请公布号 CN106354137A 申请公布日期 2017.01.25
申请号 CN201610861666.5 申请日期 2016.09.28
申请人 齐鲁工业大学 发明人 李彬;辛亚先;张慧;李贻斌;荣学文;郭荣伟
分类号 G05D1/02(2006.01)I 主分类号 G05D1/02(2006.01)I
代理机构 济南日新专利代理事务所 37224 代理人 王书刚
主权项 一种应用于四足仿生机器人的静步态和对角小跑步态切换算法,其特征是,首先为标明足端摆动起始点和落足点在机体坐标系x方向的位置,定义足端与自身髋关节的相对位置hip_x,表示原则为以自身髋关节为原点,若落足点在原点前方则位置为正,在后方则为负;具体过程是:(1)定义间歇静步态的六个发生步态切换的点:采用的间歇静步态,定义步长为L,一个周期分为六阶段,定义六个切换点,六个阶段的结束点分别命名为切换点SP1、切换点SP2、切换点SP3、切换点SP4、切换点SP5和切换点SP6,并给出各个切换点的四足hip_x值:<maths num="0001"><math><![CDATA[<mrow><mi>S</mi><mi>P</mi><mn>1</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000011.GIF" wi="750" he="229" /></maths><maths num="0002"><math><![CDATA[<mrow><mi>S</mi><mi>P</mi><mn>2</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000012.GIF" wi="726" he="387" /></maths><maths num="0003"><math><![CDATA[<mrow><mi>S</mi><mi>P</mi><mn>3</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000013.GIF" wi="718" he="227" /></maths><maths num="0004"><math><![CDATA[<mrow><mi>S</mi><mi>P</mi><mn>4</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000014.GIF" wi="774" he="226" /></maths><maths num="0005"><math><![CDATA[<mrow><mi>S</mi><mi>P</mi><mn>5</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000015.GIF" wi="726" he="390" /></maths><maths num="0006"><math><![CDATA[<mrow><mi>S</mi><mi>P</mi><mn>6</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mn>0</mn></mtd></mtr><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mfrac><mi>L</mi><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000016.GIF" wi="738" he="228" /></maths>(2)定义对角小跑步态的作为接入点的所有状态,并用hip_x值标定各状态的足端位置:采用的对角小跑步态定义步长为L',将左前‑右后腿定义为对角腿DL1,右前‑左后腿定义为对角腿DL2;一个trot周期内对角小跑步态的接入点有两个,分别为状态C1和状态C2;C1中,DL1位于自身髋关节前方半个步长,DL2位于自身髋关节后方半个步长;C2中,DL1位于自身髋关节后方半个步长,DL2位于自身髋关节前方半个步长;位于自身髋关节后方半个步长的对角腿为下一阶段摆动腿,另一对角腿为下一阶段支撑腿,C1的下一对摆动足为DL2,C2的下一对摆动足为DL1;各状态点处四足的hip_x值如下:<maths num="0007"><math><![CDATA[<mrow><mi>C</mi><mn>1</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><msup><mi>L</mi><mo>&prime;</mo></msup><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mfrac><msup><mi>L</mi><mo>&prime;</mo></msup><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000021.GIF" wi="668" he="245" /></maths><maths num="0008"><math><![CDATA[<mrow><mi>C</mi><mn>2</mn><mo>:</mo><mfenced open = "{" close = ""><mtable><mtr><mtd><mi>R</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>L</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mfrac><msup><mi>L</mi><mo>&prime;</mo></msup><mn>2</mn></mfrac></mtd></mtr><mtr><mtd><mi>L</mi><msub><mi>F</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mi>R</mi><msub><mi>H</mi><mrow><mi>h</mi><mi>i</mi><mi>p</mi><mo>_</mo><mi>x</mi></mrow></msub><mo>=</mo><mo>-</mo><mfrac><msup><mi>L</mi><mo>&prime;</mo></msup><mn>2</mn></mfrac></mtd></mtr></mtable></mfenced><mo>.</mo></mrow>]]></math><img file="FDA0001122324370000022.GIF" wi="670" he="243" /></maths>(3)节律控制队列:①执行第一切换队列,进行重心的调整,在左右方向将重心调至中心位置,在前后方向上,选取x值较大的一侧足,得到这一侧足的前后落足点中心位置作为重心投影在前后方向的位置;②执行第二切换队列,重心加速前进,由四足中hip_x最小的足所在的对角腿作为本阶段摆动对角腿,若有两个足hip_x都为最小,后腿优先;在重心前移距离不变的情况下,使摆动的对角腿相对于自身髋关节的hip_x变为L'/2,并进入下一切换队列;③执行第三切换队列,重心加速前进,控制另一对角腿向前摆动,使其hip_x达到L'/2;这一阶段结束点处四足hip_x值与trot步态两接入状态hip_x值比较,选择hip_x值相同的状态作为trot步态接入点;(4)模式控制:walk‑to‑trot步态切换中,除了要改变节律之外,步长S、周期T、重心移动速度v都需要进行相应调整,三者关系为v=S/T,但是,间歇静步态的重心前移并不是均匀分布在整个周期中,而是集中在1/3个周期,因此,将间歇静步态重心的实际移动速度记为:v<sub>walk</sub>=3L/T<sub>walk</sub>,而对trot步态一个周期的两个阶段来说,重心不断前移,速度记为:v<sub>trot</sub>=2L'/T<sub>trot</sub>,其中,L'为trot步态的步长,T<sub>trot</sub>为其周期;为保证步态切换过程中重心移动速度的连续性,希望得到一个合适的加速度,使得机器人在开始切换到切换完成的过程中达到下列目标:①切换队列起点速度为v<sub>walk</sub>;②切换队列终点速度为v<sub>trot</sub>;③三个切换队列速度连续,加速度保持不变。其中,三个切换队列任意时刻重心移动距离记为L<sub>t</sub>,速度记为v<sub>t</sub>,两者和时间的关系分别为:L<sub>t</sub>=v<sub>walk</sub>t+0.5at<sup>2</sup>,v<sub>t</sub>=v<sub>walk</sub>+at,由于切换队列结束点的重心移动距离L<sub>sum</sub>和速度v<sub>trot</sub>已知,并设三个切换队列用时为T<sub>sum</sub>,将下列条件t=T<sub>sum</sub>,L=L<sub>sum</sub>,v<sub>t</sub>=v<sub>trot</sub>带入以上公式L<sub>t</sub>=v<sub>walk</sub>t+0.5at<sup>2</sup>和v<sub>t</sub>=v<sub>walk</sub>+at:求得<img file="FDA0001122324370000031.GIF" wi="935" he="177" />因此,切换队列的开始点到结束点之间速度变化是一个关于时间t的函数,如下公式:<maths num="0009"><math><![CDATA[<mrow><msub><mi>v</mi><mi>t</mi></msub><mo>=</mo><msub><mi>v</mi><mrow><mi>w</mi><mi>a</mi><mi>l</mi><mi>k</mi></mrow></msub><mo>+</mo><mfrac><mrow><msup><msub><mi>v</mi><mrow><mi>t</mi><mi>r</mi><mi>o</mi><mi>t</mi></mrow></msub><mn>2</mn></msup><mo>-</mo><msup><msub><mi>v</mi><mrow><mi>w</mi><mi>a</mi><mi>l</mi><mi>k</mi></mrow></msub><mn>2</mn></msup></mrow><mrow><mn>2</mn><msub><mi>L</mi><mrow><mi>s</mi><mi>u</mi><mi>m</mi></mrow></msub></mrow></mfrac><mi>t</mi><mo>,</mo></mrow>]]></math><img file="FDA0001122324370000032.GIF" wi="665" he="167" /></maths>这样,就保证了由walk步态向trot步态切换过程中速度变化连续性,从而,提高转换过程中机器人的平滑稳定性;(5)改进的泛稳定裕量失稳判据法:首先,利用以下公式对于零力矩投影点在不受惯性力影响和受到惯性力影响两种情况在前进方向的差值d进行计算:<maths num="0010"><math><![CDATA[<mrow><msubsup><mo>&Integral;</mo><mn>0</mn><mi>d</mi></msubsup><mi>m</mi><mi>g</mi><mfrac><mi>x</mi><mi>h</mi></mfrac><mi>d</mi><mi>x</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac><msup><mi>mv</mi><mn>2</mn></msup><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000033.GIF" wi="406" he="120" /></maths>其中,h为机体重心高度,v为停止瞬间机体前进速度。求得d值如下:<maths num="0011"><math><![CDATA[<mrow><mi>d</mi><mo>=</mo><msqrt><mfrac><mrow><msup><mi>v</mi><mn>2</mn></msup><mi>h</mi></mrow><mi>g</mi></mfrac></msqrt><mo>;</mo></mrow>]]></math><img file="FDA0001122324370000034.GIF" wi="232" he="167" /></maths>为使机器人保持原有稳定域度,不受惯性力带来的影响,首先,在匀加速开始的第一周期内,使四足摆动较给定标准步长短d,支撑多边形在其它情况不变的基础上也较原来的支撑多边形少向前移动d;然后,恢复给定标准步长,使改进的支撑多边形始终位于改进前支撑多边形后方d处;最后,当匀加速运动结束时,在一个周期内使足端向前摆动步长较标准步长增加d,恢复为改进前的支撑多边形。
地址 250353 山东省济南市长清区大学路3501号