四足机器人运动控制

* 第一章 序 <https://blog.csdn.net/weixin_41045354/article/details/84073544#__2>
* 第二章 运动状态
<https://blog.csdn.net/weixin_41045354/article/details/84073544#__15>
* 姿态控制 <https://blog.csdn.net/weixin_41045354/article/details/84073544#_26>
* 运动控制 <https://blog.csdn.net/weixin_41045354/article/details/84073544#_29>
* 第三章 步态 <https://blog.csdn.net/weixin_41045354/article/details/84073544#__47>
* 第四章 CPG控制网络
<https://blog.csdn.net/weixin_41045354/article/details/84073544#_CPG_77>
* 介绍 <https://blog.csdn.net/weixin_41045354/article/details/84073544#_78>
* CPG模型分类
<https://blog.csdn.net/weixin_41045354/article/details/84073544#CPG_82>
* 基于HOPF振荡器的CPG单元模型
<https://blog.csdn.net/weixin_41045354/article/details/84073544#HOPFCPG_91>
* CPG网络控制模型
<https://blog.csdn.net/weixin_41045354/article/details/84073544#CPG_152>
* Tips
<https://blog.csdn.net/weixin_41045354/article/details/84073544#Tips_193>
* 参考文献 <https://blog.csdn.net/weixin_41045354/article/details/84073544#_213>


<>第一章 序


足式机器人较传统的四轮式和履带式有着无与伦比的优势,其在复杂环境中具有更高的机动性,在军事任务和抢险任务中能够发挥出比传统轮式更大的作用。要想让机器人更智能,首先要做到的是让机器人能够像人或动物一样自由行动。在
马克・雷波特看来,要想实现这一目标,必须让机器人具备以下三项能力:

①平衡性和动态运动能力:能够让机器人在任意地方、任何地形保持平衡,并实现自由活动,这意味着机器人的工作范围得到了有效扩展。

②对运动的控制能力:指机器人可以灵活地操控物体(如使用键盘和遥控器等),同时进行自由活动,这意味着机器人能够在移动的过程中轻松完成各项操作任务。

③移动感知能力
:指机器人能够感知空间中物体的稳定存在,即便视线移向别处也能够避开障碍物,这意味着机器人能够绘制出周边环境中障碍物的位置图,从而在移动的过程中能够有效避开障碍物。

该项目就是致力于开发出一套完整有效四足机器人控制系统
。在笔者看来,第一点是最基本的,因此我们的研究也是从第一点开始一步一步前进。对于四足机器人的平衡控制,其牵涉到的内容比较繁杂,需要一点先验知识,因此我们将其摆在运动控制之后论述。下面我们先从最简单运动控制开始,即实现机器人的移动,对此部分的控制,我们提出了
基于平面三轴的运动控制方法。


在介绍这套控制方法之前,我们先简单介绍一下关于四足机器人的一些基本知识,由于我们的控制方法是基于北理大出版的《仿生四足机器人技术》里提出的CPG控制网络,因此以下内容大部分为书上原话稍加整理给出,笔者就不对具体的技术细节过多解释了,有兴趣的小伙伴可以自行翻阅此书。

<>第二章 运动状态

本章先讨论一个基础的问题:如何描述机器人的位姿。位姿包括位置和姿态。我们可以用P=[x,y]TP=[x,y]^TP=[x,y]T
来表示平面上一个点的位置。相应的,也可以用来P=[x,y,z]TP=[x,y,z]^TP=[x,y,z]T表示空间里一个点的位置。


姿态的数学描述比位置稍为抽象一点。平面上一个点的姿态可以只用一个旋转角表达,而空间中姿态的表达方式则有多种,常见的如欧拉角、四元数、旋转矩阵等,这里不展开论述[5]。总之,有了位置和姿态,我们就可以解决机器人的定位问题,以及坐标转换的问题。

该项目提出这样一个设想:在不考虑各腿的协同运动时,可以简单地把机器人当成一个刚体,因此其运动可看作是空间中刚体的运动
,这里我们选用欧拉角表示机器人的姿态,因此其运动包括:Roll,Pitch,Liner_Z,Liner_X,Liner_Y,Yaw,前三者用于控制机器人的姿态,后三者控制机器人的位置。注意这里笔者把Liner_Z归入姿态控制而Yaw归入运动控制,因为在机器人的实际运动当中,Liner_Z控制机器人质心离地面的高度,对于平整路面而言,其高度应为定值,可看作是机器人的一个姿态,因此笔者把Z轴方向的运动归入姿态控制;对于Yaw,其控制的是机器人在平面内的旋转运动,属方向控制,因此归入运动控制。

<>姿态控制


上文已经提到过Roll,Pitch,Liner_Z这三轴的运动是用来控制机器人的姿态的,而姿态控制更多的应用在环境响应那部分,因此在这里暂时不细说,先来看运动控制部分。

<>运动控制

1、运动分解

由于四足机器人在平整地面上运动时,质心离地高度(Liner_Z),pitch,roll角均基本保持不变,因此可以将其看成是平面内的运动。其位姿表示成P=[x,
y,θ]TP=[x,y,\theta]^TP=[x,y,θ]T。该项目现阶段的主要目标是:通过该控制模型,机器人能够按照给定轨迹P(t)=[x(t),y(t),
θ(t)]TP(t) = [x(t), y(t), \theta(t)]^TP(t)=[x(t),y(t),θ(t)]T运动。其基本运动组成如下:

①沿X轴的平移(Liner_X)
②沿Y轴的平移(Liner_Y)
③绕Z轴的旋转(Yaw)

2、运动叠加

平面上几乎所有的运动均可拆解成上述三种基本运动的组合,这里我们举例最常见的两种运动:

①+②:平面内任意方向的斜向直线运动
①+③:指定半径的转向运动

需要注意的是对于组成复合运动的基本运动,其发生的顺序是不一定的,既可以同时发生,亦可以按时间先后发生,具体取决于实际环境中对运动轨迹的约束。

<>第三章 步态

参考清华大学张秀丽等前辈的《足式机器人生物控制方法和应用》,足式动物的运动模式可以用“步态”来表示。步态指的是各腿在行走时具有固定相位关系的行走模式。


行进速度较慢的情况下,四足动物的每一步行走都处于较为稳定的三足支撑状态,如乌龟等。该运动模式称为行进步态,是一种四拍步态。行进速度较快一点的是小跑步态(Tort)和溜蹄步态(Pace),这两者都是两拍步态。为了用数学语言描述步态,我们需要知道以下参数定义:

①步态周期T:一个完整运动循环所用的时间;
②步长S:一个步态周期内,支撑腿驱动躯体质心相对于地面移动的距离;
③抬腿高度h:一步内足端离地最大距离;
④相位差φi\varphi_iφi​:第i条腿着地时刻相对于参考腿的延时与周期的比;
⑤支撑(stance):腿与地面接触支撑躯体并推动躯体前行的状态;
⑥摆动(swing):腿抬起在空中摆动的状态;
⑦负载因子β\betaβ:处在支撑相的腿撑在地面的时间占整个运动周期的比例。

以上参数为动物步态参数,由于四足机器人的步态是参照动物步态指定的,因此其参数定义与动物类似,具体可查阅其他资料,在此不展开细说。下面给出4种常见步态的相位图。

经研究发现,有以下规律:以机器人左前腿为基准,将其相位定义为φLF=0\varphi_{LF} = 0φLF​=0,相对相位可以表达为负载因子β和右后腿相位φ
RH\varphi_{RH}φRH​的函数,这在步态转换部分将起到重要作用:

<>第四章 CPG控制网络

<>介绍


众所周知,动物最常见的运动方式是节律运动,即按照一定的节奏、有力度地重复、协调、持续进行的动作,是低级神经中枢的自激行为。生物学上,动物的节律运动控制区被认为是分层并且模块化的,其控制以中枢模式发生器为中心,既可以接受来自高层的高级神经中枢的主观控制,也可以响应来自躯体各种感受器官的反射,这就是
CPG控制机理。

前人已经按照CPG控制机理建立了不同形式的数学模型,它们能够产生的周期振荡的信号,使其能够满足节律运动的特点。

<>CPG模型分类

目前比较经典的CPG模型可划分为以下两大类:

①基于神经元的模型:Matsuoka神经元震荡模型、Kimura模型等,该类模型生物学意义明确,但参数较多,动态特性分析比较复杂。

②基于非线性振荡器的模型:Kuramoto相位振荡器、Hopf谐波振荡器等,该类模型参数较少,模型比较成熟。


在保证能够输出稳定的周期性震荡信号的前提下,那些形式简单、参数较少、计算量小、便于分析、易于实现的CPG模型是更好的选择。根据这一个原则,我们选取了HOPF振荡器作为CPG的单元模型。

<>基于HOPF振荡器的CPG单元模型

1、HOPF振荡器

HOPF振荡器在状态空间中存在一个稳定的极限环,即对于任意非零初始值,均能使得振荡器产生相同形状的周期性振荡信号,其数学模型如下:

假设α=100,μ=1,ω=2π\alpha =100, \mu=1,\omega = 2\piα=100,μ=1,ω=2π
,振荡器产生的极限环和输出结果如下:

从图像可以看出,对于该微分方程组,取任意初始值x(0), y(0),在稳定输出后,均能收敛到同一个圆上。将其输出信号放大进行观察:


经过对比发现输出信号上升沿与下降沿所用时间是一致的,我们设定上升沿为摆动相,下降沿为支撑相,因此,采用HOPF振荡器时,机器人腿部摆动持续时间与支撑持续时间是一致的。为了能够对这两者进行单独控制,使其能够适应不同负载因子下的运动模式,对
ω\omegaω进行以下改进:

其中ωst,ωsw\omega_{st}, \omega_{sw}ωst​,ωsw​分别表示支撑相频率和摆动相频率,参数a决定ω\omegaω
在这两者之间的变化速度,β\betaβ为负载因子,按照上文总结出的规律,其用于决定机器人的运动模式,即控制不同步态。最终数学模型的形式如下:

其中,

α用于控制振荡器收敛到极限环的速度;
a决定了ω在ωst\omega _{st}ωst​和ωsw\omega_{sw}ωsw​之间的变化速度;
μ决定振荡器的幅值,关系式为A=μA=\sqrt{\mu}A=μ​;
β为负载因子(范围0-1);
ωsw\omega_{sw}ωsw​表示摆动相频率;
ωst\omega_{st}ωst​表示支撑相频率,且ωst=1−ββωsw\omega _{st}=
\frac{1-\beta}{\beta}\omega_{sw}ωst​=β1−β​ωsw​。

2、动态特性

设置参数α=100,a=50,β=0.5,μ=1,ωsw\alpha=100,a=50,\beta=0.5, \mu=1,\omega_{sw}α=100,a
=50,β=0.5,μ=1,ωsw​取不同值时的输出曲线:

设置参数α=100,a=50,ωsw=2π,μ=1,β\alpha=100,a=50,\omega_{sw}=2\pi, \mu=1,\betaα=100,a
=50,ωsw​=2π,μ=1,β取不同值时的输出曲线:

设置参数α=100,a=50,β=0.5,ωsw=2π,μ\alpha=100,a=50,\beta=0.5, \omega_{sw}=2\pi,\muα=1
00,a=50,β=0.5,ωsw​=2π,μ取不同值时的输出曲线:

通过上述对比可知,振荡器输出信号的幅值、周期、上升/下降沿所占时间比,都能通过相应的参数进行控制,且各参数之间不存在耦合。下面总结一下:

①μ\muμ:控制输出信号的幅值A=μA=\sqrt{\mu}A=μ​;
②ωsw\omega_{sw}ωsw​:控制调节输出信号的周期;
③β\betaβ:控制输出信号上升/下降沿所占时间比例。

<>CPG网络控制模型


以上内容已经简要介绍了单个振荡器的特性,但是,我们的四足机器人至少有12个主动关节,仅靠一个振荡器显然是不够的,因此我们需要一个CPG控制网络来实现各腿的协同运动。CPG按照不同的连接方式可分为链式连接和网络连接,连接起来的CPG能够实现多个肢体的协同运动,并且在时域上保持相关性。


这里我们先不考虑机器人的侧向髋关节的运动,仍旧参考北京理工大学《仿生四足机器人技术》里面提出的CPG控制网络模型。基本思路是这样的:采用4个HOPF振荡器分别对应四足机器人的4条腿,将每个振荡器的x输出直接作为髋关节的角度控制信号,对y输出进行变换,再将变换之后的信号用作膝关节的角度控制信号。

需要注意的是,我们的4个振荡器必须是相互关联的,按照前辈们的方法,就是设立一个耦合项,利用其来表征振荡器之间的关系(
至于为什么能这样,笔者目前学识有限,惭愧地讲一句抱歉不能给大家解释这里),最终数学模型如下:

其中,

①Ah,AkA_h,A_kAh​,Ak​分别为髋关节,膝关节幅值,ϕ\phiϕ为关节标志,该项与硬件结构配置有关,我们的机器人采用前肘后膝式。即LF_k,
RF_k为1, LH_k, RH_k为-1

②R(θji)R(\theta^i _j)R(θji​)控制各腿控制信号的耦合关系,且θji=2π(φi−φj)\theta^i_j = 2\pi
(\varphi_i-\varphi_j)θji​=2π(φi​−φj​),φi\varphi_iφi​
为第i个振荡器的相位(相位图请看第三章:步态),其数学表达式如下:

③为了更加直观,我们把耦合项展开成以下矩阵形式(一个8*4矩阵,按行求和):

④同样我们可以把数学模型写成更加直观的微分方程:

⑥θhi,θki\theta_{hi},\theta_{ki}θhi​,θki​分别为第i条腿的髋关节,膝关节的控制信号,是一条关于时间的函数。


至此我们已经建立起了最基础的控制网络模型,但是,仅仅是这样还不够,正如单个HOPF振荡器需要好几个参数一样,该控制模型亦是如此。那么这些参数跟我们的机器人有什么关系呢?又是如何确定的呢?这里先给大家留个悬念(-ω-),大家可以先思考一下,或者查阅相关资料,问题的答案在参考文献里面能找到,我也会在下一篇文章中“手把手”讲解。

<>Tips

*
这里我给出一个仿真实例,视频我会上传到B站,搜“四足机器人”,认准我的头像就ok了。

*
按照Tort步态的相位分布,给定以下参数α=1000,a=100,β=0.5,Ak=3.3,Ah=9.8,ωsw=5π
\alpha=1000,a=100,\beta=0.5,A_k = 3.3,A_h=9.8,\omega_{sw}=5\piα=1000,a=100,β=0.5
,Ak​=3.3,Ah​=9.8,ωsw​=5π,(需要注意各数值单位间的换算,这里给定的Ah,AkA_h,A_kAh​,Ak​为角度制),输出结果如下:


其中,蓝色信号为髋关节信号,红色信号为膝关节信号。从图像可以看出此时的输出信号满足Tort步态运动规律,左前腿与右后腿保持同相关系,另外两者同样如此,在髋关节信号上升沿为正,其余为0,符合摆动相的要求。

下面终于到了展示成果的环节了,仿真结果如下(✧٩(ˊωˋ*)و✧):

<>参考文献

[1].罗庆生, 罗霄著. 仿生四足机器人技术[M]. 北京:北京理工大学, 2016. 15-30

[2]韩宝玲, 王秋丽, 罗庆生. 六足仿生步行机器人足端工作空间和灵活度研究[J]. 机械设计与研究, 2006,22(4): 11-12

[3]常青, 韩宝玲, 罗庆生. 四足机器人转向与斜向运动规划理论及方法[J]. 北京理工大学学报, 2015, 35(5): 1-2

[4]施宏阳. 基于WCPG的步态生成与运动控制方法[D]. *:华中科技大学, 2015. 15-18

[5]高翔. 视觉SLAM十四讲[M]. *:电子工业出版社, 2017

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信