Moco-8仅有8自由度因此以对角步态为主,而对四足机器人来说爬行步态是更重要的一种步态其能实现在崎岖路面上的移动特别是上下楼梯大多以爬行步态为主,相比如波士顿动力公司所设计机器人采用的液压或高性能伺服驱动,受体积和成本限制其关节多采用舵机及减速组传动,因此关节响应速度较慢同时由于缺少关节角度反馈和足底力反馈使其难以实现可靠的对角小跑步态,因此爬行步态是微型四足机器人中最主要的移动方式。

由于爬行步态任意时刻最少有三条腿来支撑机身,因此其具有较高的静态稳定性。近年来研究人员对爬行步态算法已经进行了大量研究,主要使用绝对稳定裕度来衡量机器人的稳定性并进行步态设计,当稳定裕度为正时机器人就能保证静态稳定。如在文献中作者使用多项式曲线拟合算法规划重心在下一步态周期中的移动轨迹,进一步使用运动学逆解控制足尖移动并保证重心时刻处于着地平面内,基于机器人设计参数进行步态周期的合理调整、限制移动速度就能保证多数情况下的稳定行走。该类算法虽然简单、易于实现但难以引入闭环反馈控制,因此自适应能力较差。

目前四足机器人主要采用三角支撑原理(TSP)来设计爬行步态,基于TSP原理规划重心移动位置,其核心是保证跨腿时机器人重心投影(COG)或零力矩点(ZMP)处于着地三角形平面内。另外通过采用多个三角形重叠支持或对轨迹添加动力学约束能进一步提高TSP步态的稳定性。机器人移动时除了能前进后退外还需要具有侧向移动和转向能力,传统TSP算法往往以离散周期的形式对重心进行规划,因此多直接降低速度或提高步频来保证变向中机器人不侧翻。

为得到更连续的爬行步态一些研究人员对步态时序进行细分,通过增加重心侧向调整实现连续行走,另外还有一些算法通过TSP与CPG神经网络等振荡器相结合的方式来得到连续爬行步态。综上,采用TSP原理能规划出稳定可靠的爬行步态但仍然有一定优化改进空间,如在现有算法多采用固定步态周期,而在实际环境中机器人会遇到突发情况需要进行快速步态调整;另外机器人往往会受到外力干扰如果不对其进行控制则很有可能出现侧翻,而现有算法往往需要增加复杂逻辑来抵抗外力,其加大了步态算法的逻辑复杂度。

本文介绍一个由本人提出的改进ZMP智能决策爬行步态算法,其针对现有TSP爬行算法采用固定步态周期自适应能力低、抗外力算法逻辑复杂和步态连续性仍待优化的问题,算法在着地区域中实时规划ZMP期望轨迹并进行反馈控制,实现了平滑快速的机体移动,同时基于所提算法能方便地引入传感器数据构成反馈控制。为提高步态规划自适应性,文中对传统TSP算法中采用固定步态周期的方法进行改进,基于面积贪婪决策实现自主跨腿。通过在微型四足机器人上的实验,验证了该算法能够实现稳定的全向行走和转向,通过突加扰动测试验证了所提步态算法能在一定程度上克服外力,所提算法逻辑简单易于软件实现。

2 基于反馈控制机器人重心规划算法

基于反馈控制的思想,本文设计了一种可以连续调节ZMP点的规划算法。该算法以ZMP点作为反馈,采用非线性PD控制器进行反馈控制。由于爬行步态同一时刻最多有一只脚抬起,因此将轨迹规划分为四脚着地和三脚着地两种情况进行设计。

2.1 四脚着地时期望ZMP轨迹设计

四脚着地期望ZMP轨迹示意图

上图为四脚着地期望ZMP轨迹示意图,设当前ZMP位置为

 [公式] 其计算方法如下:

[公式]

其中

 [公式] 为机器人质心在足支撑平面投影坐标,h为机体质心高度,

 [公式] 是惯性传感器测量到机体坐标系下的加速度,g是重力加速度。另设机体坐标系下期望速度矢量 v (矢量角度为 γ  ||v||是速度矢量模值),期望重心位置为

 [公式] ,点

 [公式] 为着地脚构成四边形的中心,根据稳态裕度计算公式可知在该点位置稳定性最好。过点Z以速度矢量 v方向做直线L1,过点 Pz 做直线L1的垂线L2, 它们的交点为 Pv

,由于:

[公式]

[公式]

[公式]

Pv坐标可以由下式计算得到:

[公式]

进一步得到期望ZMP点 Pe 为:

[公式]

其中

 [公式] 为期望速度增益,dt为重心控制周期。

2.2 三脚着地时期望重心轨迹设计

速度矢量前方两条腿

速度矢量前方一条腿

上图为三脚着地时期望ZMP轨迹示意图,设机器人各脚当前投影位置为 

[公式] 

 [公式] 

 [公式] 

 [公式] 三脚着地时可以细分为两种情况,速度矢量前方只有一条着地脚如上图所示,速度矢量前方有两条着地脚如上图所示。期望ZMP点计算方法与2.1小节中计算方法类似,定义最小边界裕度d1和d2为直线L1上

 [公式] 

 [公式] 离着地区域边界的距离,则三脚着地时期望ZMP轨迹可表示为如下分段函数。

[公式]

其中

[公式]

[公式]

[公式]

同理计算出L1,L2交点Pv后,由上式得到最终期望ZMP位置 Pe 

2.3 ZMP点反馈控制器

在2.1和2.2小节中得到了不同着地脚情况下期望ZMP位置 Pe ,则以当前ZMP位置 Pv

作为反馈,设计如下的非线性PD控制器:

[公式]

[公式]

其中 [公式] [公式]

上式中

 [公式]为控制器输出,

 [公式] 

 [公式] 为控制器可调参数。c是着地区域权值,该权值的作用是在着地面积过小时减小重心调整速率,避免机器人蹬腿过快造成侧翻,保证重心平稳调整; σ1,σ2,α1,α2 是非线性函数参数,

[公式]是当前着地腿构成多边形的面积,

[公式]是设定的最小着地面积,

[公式]是为c的下界。则各着地腿足尖水平移动速度如下:

[公式]

其中

 [公式] 

 [公式] 

 [公式]

 ω 为期望机体角速度,L为机体长度,W为机体宽度。

3 基于面积贪婪决策的步态规划算法

步态规划流程图

本文所设计的步态规划算法流程如图3所示,所提ZMP点控制算法在每个程序周期执行,跨腿则由条件一(任意腿超出最大可移动范围)和条件二(ZMP点超出重心可移动阈值半径)触发。前者具有较高优先级即某一腿超出范围后优先跨腿,在仅满足条件二时通过所提面积贪婪决策来选择需要跨的腿。面积贪婪决策是本文步态规划的核心算法,为实现该算法首先做出下述两个假设。

假设一:机器人总希望跨腿后着地腿构成多边形面积增大。

假设二:机器人因跨脚需要重心移动时,总希望有最大的区域能让重心移动。

上述假设保证了机体侧身移动中有足够的着地区域让ZMP点在其中移动,在机器人腿向外侧展开时能保证三腿着地期间机器人具有较大的稳定裕度,另外机器人腿部内缩时有可能会出现由于着地面积过小造成重心调整侧向力太大、机器人侧翻,该问题则基于采用2.3小节中所设计控制器的非线性控制输出解决,同时通过对各腿可移动范围进行限制能保证一个最小着地面积避免上述情况出现。

步态规划意图

根据上述假设,以图4中所示情况为示例,给出本文最终设计的面积贪婪决策算法伪代码如表1所示。

面积贪婪决策算法伪代码

上图为机器人前进过程中步态规划示意图,图中黑色方框为机器人机体,棕色椭圆为各腿可移动范围(长轴为l1,短轴为l2),黄色圆形区域为重心可移动范围,其圆心为当前着地腿构成多边形中心,半径为可调阈值Rs,虚线数字标志表示当前需要跨的腿。

前进过程中步态规划

在上图(a)中各腿未超出自己的移动范围而ZMP点超出黄色区域,根据所设计步态规划算法此时需要跨腿,由面积贪婪决策可知机器人B,D腿跨腿会导致着地面积的减小,因此选择速度矢量前方的腿A号和C号腿作为候选,根据面积贪婪决策算法速度矢量前方侧身区域较大面积为蓝色区域,则C号腿需要跨出。在完成移动后机器人状态如上图(b)所示,此时D号脚超出可移动范围需要优先跨腿。同理上图(d),(e)采用面积贪婪决策算法选择所需跨的腿。针对不同四足机器人的结构参数,通过设置合适的l1,l2和Rs就可以得到稳定性较高的爬行步态。

在确定跨腿ID后需要进行落足点选择和足尖规划轨迹,本文采用摆线轨迹保证足尖着地速度为零,同时为保证机器人能克服侧翻,文中使用机体惯性传感器(IMU)计算出的横滚角 φ 来对着地点位置进行二次修正,使机器人在侧翻时做出足尖侧扩来增大着地面积提高落地稳定性。设跨腿所需时间为

 [公式] ,抬腿的高度为H;

 [公式] 为期望落足点位置, 

[公式] 为当前足尖位置。则摆动腿轨迹数学描述如下:

[公式]

其中

 [公式] 为最大横滚角修正外扩跨腿距离,

 [公式] 

所提步态算法软件流程示意图

如上图所示,文中算法运行在STM32单片机控制器中,系统上电后单片机开始从机载IMU中读取加速度和陀螺仪数据,通过互补滤波进行姿态解算得到机体加速度和实时姿态角,控制器以100Hz的频率进行所提ZMP反馈控制。首先基于遥控器期望移动速度和足尖位置进行ZMP轨迹规划,所提反馈控制器基于期望ZMP轨迹和实时ZMP点进行反馈控制,实现机器人重心移动。在每个控制周期内程序基于所提自适应跨腿触发算法判断是否需要跨腿,当检测到跨腿触发信号后以使用所提贪婪决策算法确定需要跨腿的ID号,跨腿规划器则对该腿基于机器人实时姿态和跨腿参数规划轨迹,轨迹跟踪器输出期望足尖位置。最终,运动学逆解模块以足尖期望速度和位置计算机器人关节角度,同时将其转换为PWM信号输出给关节舵机完成机器人步态控制。

4 步态规划实验

机器人前进过程实验结果图

由于机器人未安装足底力反馈传感器,因此选取平地场景来验证所设计算法的可行性。以前进步态为例,给定移动速度2cm/s, 矢量角度为0°,实验过程如上图所示。上图(a)中反馈控制器控制重心向前移动,上图(b)中重心超出范围根据所提算法规划触发D腿,机体受反馈控制器控制进行侧身同时重心继续向前移动,上图(c)处A号脚超出可动范围优先跨出,之后上图(d)中脚C同样由于超出范围优先跨出,上图(e)处B脚由于腿超出跨腿,上图(f)出A脚由于机体前移造成重心超出跨腿。此外,机器人左右平移以及旋转过程如下图所示,具体步态规划过程不再详述。

右侧移动

原地旋转

以前进为例,下图给出了机器人在该过程中的稳态裕度变化曲线。从下图中可以看到本文所提算法在固定速度下稳态裕度呈周期性变化,并且在整个过程裕度均大于零即重心在移动过程中均能落在着地区域内保证机器人不会翻倒。

前进过程中的稳态裕度曲线

下图为移动过程中机体高度和姿态角变化曲线,可以看到在移动过程中机器人姿态无明显晃动,机体重心高度保持在设定高度11.5cm左右,所提算法在无主动姿态控制的情况下移动较平稳,高度保持稳定。

移动中机体姿态和重心高度变化曲线

5 外力扰动实验

所提步态算法通过引入IMU数据构成闭环控制,使得机器人能通过侧蹬来克服一定程度的突发外力扰动,实验中通过人为向机器人施加侧向外力验证所提反馈算法,结果如下图所示。

机器人克服外力扰动

在上图(a)机器人受突加外力作用,在上图(b)机载IMU检测到姿态变化和加速度变化,首先由加速度计测量值造成ZMP变化控制足尖移动使机器人侧蹬,同时姿态变化使得机器人落足点向外扩张如上图(c)所示,最终在上图(f)中机器人通过主动调节ZMP误差和跨脚落足点扩张保证了自身在外力作用下不会发生侧翻。下图给出了受突发外力扰动下的机器人机体ZMP曲线和加速度曲线。

无反馈控制

有反馈控制

上图为机器人运行状态变化曲线,上图(a)为未使用反馈控制下的机器人状态曲线,可以看到在外力作用下机器人稳态裕度产生较大波动,上图(b)为使用所提反馈控制算法下的状态曲线,可以看到在外力作用下机器人保持稳定稳态裕度波动较小,可见所提算法能有效抑制突发外力扰动。

本节介绍了由本人提出的改进爬行步态算法,其已经被应用于早先的LittroDog四足机器人中,后续我们将开发12Dof的四足机器人Moco-12会将上述算法移植到其中!