四足机器人运动控制
- 第一章 序
- 第二章 运动状态
- 姿态控制
- 运动控制
- 第三章 步态
- 第四章 CPG控制网络
- 介绍
- CPG模型分类
- 基于HOPF振荡器的CPG单元模型
- CPG网络控制模型
- Tips
- 参考文献
大家可以先看看效果
[四足机器人]开环运动控制测试
第一章 序
足式机器人较传统的四轮式和履带式有着无与伦比的优势,其在复杂环境中具有更高的机动性,在军事任务和抢险任务中能够发挥出比传统轮式更大的作用。要想让机器人更智能,首先要做到的是让机器人能够像人或动物一样自由行动。在马克・雷波特看来,要想实现这一目标,必须让机器人具备以下三项能力:
①平衡性和动态运动能力:能够让机器人在任意地方、任何地形保持平衡,并实现自由活动,这意味着机器人的工作范围得到了有效扩展。
②对运动的控制能力:指机器人可以灵活地操控物体(如使用键盘和遥控器等),同时进行自由活动,这意味着机器人能够在移动的过程中轻松完成各项操作任务。
③移动感知能力:指机器人能够感知空间中物体的稳定存在,即便视线移向别处也能够避开障碍物,这意味着机器人能够绘制出周边环境中障碍物的位置图,从而在移动的过程中能够有效避开障碍物。
该项目就是致力于开发出一套完整有效四足机器人控制系统。在笔者看来,第一点是最基本的,因此我们的研究也是从第一点开始一步一步前进。对于四足机器人的平衡控制,其牵涉到的内容比较繁杂,需要一点先验知识,因此我们将其摆在运动控制之后论述。下面我们先从最简单运动控制开始,即实现机器人的移动,对此部分的控制,我们提出了基于平面三轴的运动控制方法。
在介绍这套控制方法之前,我们先简单介绍一下关于四足机器人的一些基本知识,由于我们的控制方法是基于北理大出版的《仿生四足机器人技术》里提出的CPG控制网络,因此以下内容大部分为书上原话稍加整理给出,笔者就不对具体的技术细节过多解释了,有兴趣的小伙伴可以自行翻阅此书。
第二章 运动状态
本章先讨论一个基础的问题:如何描述机器人的位姿。位姿包括位置和姿态。我们可以用 P = [ x , y ] T P=[x,y]^T P=[x,y]T来表示平面上一个点的位置。相应的,也可以用来 P = [ x , y , z ] T P=[x,y,z]^T P=[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 , θ ] T P=[x,y,\theta]^T P=[x,y,θ]T。该项目现阶段的主要目标是:通过该控制模型,机器人能够按照给定轨迹 P ( t ) = [ x ( t ) , y ( t ) , θ ( t ) ] T P(t) = [x(t), y(t), \theta(t)]^T P(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种常见步态的相位图。
经研究发现,有以下规律:以机器人左前腿为基准,将其相位定义为 φ L F = 0 \varphi_{LF} = 0 φLF=0,相对相位可以表达为负载因子β和右后腿相位 φ R H \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 ω进行以下改进:
其中 ω s t , ω s w \omega_{st}, \omega_{sw} ωst,ωsw分别表示支撑相频率和摆动相频率,参数a决定 ω \omega ω在这两者之间的变化速度, β \beta β为负载因子,按照上文总结出的规律,其用于决定机器人的运动模式,即控制不同步态。最终数学模型的形式如下:
其中,
α用于控制振荡器收敛到极限环的速度;
a决定了ω在 ω s t \omega _{st} ωst和 ω s w \omega_{sw} ωsw之间的变化速度;
μ决定振荡器的幅值,关系式为 A = μ A=\sqrt{\mu} A=μ;
β为负载因子(范围0-1);
ω s w \omega_{sw} ωsw表示摆动相频率;
ω s t \omega_{st} ωst表示支撑相频率,且 ω s t = 1 − β β ω s w \omega _{st}= \frac{1-\beta}{\beta}\omega_{sw} ωst=β1−βωsw。
2、动态特性
设置参数 α = 100 , a = 50 , β = 0.5 , μ = 1 , ω s w \alpha=100,a=50,\beta=0.5, \mu=1,\omega_{sw} α=100,a=50,β=0.5,μ=1,ωsw取不同值时的输出曲线:
设置参数 α = 100 , a = 50 , ω s w = 2 π , μ = 1 , β \alpha=100,a=50,\omega_{sw}=2\pi, \mu=1,\beta α=100,a=50,ωsw=2π,μ=1,β取不同值时的输出曲线:
设置参数 α = 100 , a = 50 , β = 0.5 , ω s w = 2 π , μ \alpha=100,a=50,\beta=0.5, \omega_{sw}=2\pi,\mu α=100,a=50,β=0.5,ωsw=2π,μ取不同值时的输出曲线:
通过上述对比可知,振荡器输出信号的幅值、周期、上升/下降沿所占时间比,都能通过相应的参数进行控制,且各参数之间不存在耦合。下面总结一下:
① μ \mu μ:控制输出信号的幅值 A = μ A=\sqrt{\mu} A=μ;
② ω s w \omega_{sw} ωsw:控制调节输出信号的周期;
③ β \beta β:控制输出信号上升/下降沿所占时间比例。
CPG网络控制模型
以上内容已经简要介绍了单个振荡器的特性,但是,我们的四足机器人至少有12个主动关节,仅靠一个振荡器显然是不够的,因此我们需要一个CPG控制网络来实现各腿的协同运动。CPG按照不同的连接方式可分为链式连接和网络连接,连接起来的CPG能够实现多个肢体的协同运动,并且在时域上保持相关性。
这里我们先不考虑机器人的侧向髋关节的运动,仍旧参考北京理工大学《仿生四足机器人技术》里面提出的CPG控制网络模型。基本思路是这样的:采用4个HOPF振荡器分别对应四足机器人的4条腿,将每个振荡器的x输出直接作为髋关节的角度控制信号,对y输出进行变换,再将变换之后的信号用作膝关节的角度控制信号。
需要注意的是,我们的4个振荡器必须是相互关联的,按照前辈们的方法,就是设立一个耦合项,利用其来表征振荡器之间的关系(至于为什么能这样,笔者目前学识有限,惭愧地讲一句抱歉不能给大家解释这里),最终数学模型如下:
其中,
① A h , A k A_h,A_k Ah,Ak分别为髋关节,膝关节幅值, ϕ \phi ϕ为关节标志,该项与硬件结构配置有关,我们的机器人采用前肘后膝式。即LF_k, RF_k为1, LH_k, RH_k为-1
② R ( θ j i ) R(\theta^i _j) R(θji)控制各腿控制信号的耦合关系,且 θ j i = 2 π ( φ i − φ j ) \theta^i_j = 2\pi (\varphi_i-\varphi_j) θji=2π(φi−φj), φ i \varphi_i φi为第i个振荡器的相位(相位图请看第三章:步态),其数学表达式如下:
③为了更加直观,我们把耦合项展开成以下矩阵形式(一个8*4矩阵,按行求和):
④同样我们可以把数学模型写成更加直观的微分方程:
d x i d t = α ( μ − r i 2 ) x i 2 − ω i y i + ∑ j = 1 4 ( cos θ j i x j − sin θ j i y j ) \frac{dx_i}{dt} = \alpha(\mu-r_i^2)x_i^2 - \omega_iy_i+ \sum_{j=1}^{4}(\cos\theta^i_jx_j-\sin\theta_j^iy_j) dtdxi=α(μ−ri2)xi2−ωiyi+j=1∑4(cosθjixj−sinθjiyj)
d y i d t = α ( μ − r i 2 ) y i 2 + ω i x i + ∑ j = 1 4 ( sin θ j i x j + cos θ j i y j ) \frac{dy_i}{dt} = \alpha(\mu-r_i^2)y_i^2 + \omega_ix_i+ \sum_{j=1}^{4}(\sin \theta^i_jx_j+\cos \theta_j^iy_j) dtdyi=α(μ−ri2)yi2+ωixi+j=1∑4(sinθjixj+cosθjiyj)
⑥ θ h i , θ k i \theta_{hi},\theta_{ki} θhi,θki分别为第i条腿的髋关节,膝关节的控制信号,是一条关于时间的函数。
至此我们已经建立起了最基础的控制网络模型,但是,仅仅是这样还不够,正如单个HOPF振荡器需要好几个参数一样,该控制模型亦是如此。那么这些参数跟我们的机器人有什么关系呢?又是如何确定的呢?这里先给大家留个悬念(-ω-),大家可以先思考一下,或者查阅相关资料,问题的答案在参考文献里面能找到,我也会在下一篇文章中“手把手”讲解。
Tips
这里我给出一个仿真实例,视频我会上传到B站,搜“四足机器人”,认准我的头像就ok了。
按照Tort步态的相位分布,给定以下参数 α = 1000 , a = 100 , β = 0.5 , A k = 3.3 , A h = 9.8 , ω s w = 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π,(需要注意各数值单位间的换算,这里给定的 A h , A k A_h,A_k Ah,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