APP下载

一种用于接力赛的NAO机器人比赛系统设计

2020-01-08

测控技术 2019年12期
关键词:接力赛步态赛场

(东南大学 仪器科学与工程学院,江苏 南京 210096)

NAO是在世界学术领域内运用广泛的类人机器人。例如运用NAO机器人对自闭谱系障碍儿童进行干预治疗[1];运用NAO机器人开发人脸识别系统[2];运用NAO机器人平台设计高尔夫比赛系统[3];运用NAO进行中文语音识别等[4]。本文根据NAO机器人的仿人结构设计了一种机器人接力比赛系统。NAO可以通过摄像头识别赛道,并根据身体与赛道的角度判断转弯方向及角度;根据转弯角度变化来进行速度调整;同时通过多协同合作,在第一台NAO机器人即将走向终点时向同伴机器人发送信号,同伴NAO机器人即接收信号并准备启动。以上所述策略保障了整个比赛的顺利进行。

1 NAO机器人基础硬件平台

硬件方面,NAO机器人[5]本身是一个标准平台,它全身有25个自由度,可以完成一些较为复杂的动作,NAO机器人下肢关节具有 12 自由度,其髋、 膝、踝关节分别为 3、 1、 2 自由度,左右对称。头部搭载两个摄像头;在双脚、双手等部位配有压力传感器可以检测是否碰到障碍物;胸前有超声波传感器可以用于检测前方的障碍物避免碰撞。在比赛中机器人视觉的作用至关重要,NAO机器人搭载的摄像头可以实现最高30帧/秒的YUV422图像,分辨率为640像素×480像素。机器人水平视野范围为47.8°,垂直视野范围为36.8°。

NAO机器人接力赛为比赛模拟人类接力赛项目,其竞赛形式为: 2台NAO机器人接力竞步,每台机器人行走6 m,最终成绩按照用时由少到多排序。比赛场地总长、宽分别为6 m和4.8 m,分为3组赛道;每组赛道包含去程赛道,回程赛道各一条,单条赛道为长、宽分别为6 m和0.8 m的赛道;单条赛道4个边喷涂有宽5 cm白色边界线;场地地面为绿色,场地表面的材料为薄地毯面料。

2 接力赛软件系统设计

在上述规则和机器人软硬件限制的基础上,本文提出了一种主要基于机器人单目视觉的比赛策略软件系统。该系统主要在Linux系统上进行编程[6],分模块设计实现了机器人接力比赛中几个主要步骤。具体步骤详见图1系统软件设计流程图。

图1 系统软件设计流程图

2.1 NAO机器人启动模块

NAO机器人的启动有两种方案可供选择。

方案1:NAO机器人胸前有声呐装置,利用超声波避障功能启动NAO机器人。当胸前有挡板障碍物时NAO机器人等待启动,障碍物撤离比赛开始,NAO机器人开始行动。

方案2:比赛开始,裁判吹响哨声。NAO机器人听到哨声即开始启动。

两种方案各有利弊,方案1由于NAO机器人机械结构原因存在短暂延时问题,但该方案稳定性好,移开挡板NAO机器人启动;方案2时效性好,声音的传播速度快,NAO听到哨声即启动,不会产生启动延时问题,但在环境嘈杂时,可能存在无法听到裁判哨声的情况。

2.2 赛场位置识别及图像处理模块

在接力赛中,NAO机器人主要通过视觉识别白色的赛场边界。机器人拍摄到的赛场轮廓如图2(a)所示。

在机器人扫描周围环境时,检测到白色直线的特征物体后即进行颜色提取与转化,通过颜色提取来获得符合白色阈值条件的像素点[7-8]。经过以上处理之后赛场边缘轮廓如图2(b)所示。

由图2(b)可知,此时图片噪声较大,图片中左上角有许多白色噪声点,图片右上角有其他赛场边缘线。此时机器人无法判断正确的赛场边缘线。本策略对该图片进行滤波处理,并采用霍夫变换和canny边缘算法进行边缘检测,获得并绘制图像轮廓。图像轮廓如图2(c)所示。计算图中各轮廓的长度,将长度较长的直线轮廓(图2(c)中线条1)作为赛场边缘线。

图2 赛场边缘图像

2.3 基于赛场识别调整机器人转向及转速模块

基于赛场识别调整机器人转向及转速模块的初步方案(方案1)为:将识别并处理过的赛场边缘白线置于机器人视野中心,再判断机器人头部与身体之间的夹角,根据夹角判断是否需要转向。因赛场边界线可近似认为是一条无限长的直线,故将赛场边界线置于视野中心,则机器人视野与赛场边界线必垂直。此时判断机器人头部与身体之间的夹角。如图3所示。

该图为俯视角度,实线为赛场边缘白线,圆形为机器人,虚线1为机器人摄像头看向赛场边缘线的视线,虚线2为机器人身体前进方向。θ为机器人摄像头方向与前进方向夹角,若0°<θ<90°,则系统判断为机

图3 机器人与赛场边缘线位置俯视图1

器人偏左走,需要向右调整方向。反之,若-90°<θ<0°则系统判断为机器人偏右走,需要向左调整方向。当θ=90°或θ=-90°时,则系统判断为机器人前进方向正确,不需调整方向。

在接力赛比赛过程中,机器人获取图像为动态过程且为实时获取图像,但由于机器人步速及步态限制,机器人调整转速需要一定的时间,若转速调整过大,则易发生过量调整问题。故本方案采取多次调整策略,即调整多次转速但每次调整转速值较小。

本方案根据上述θ的大小判定转速调整。当60°<|θ|<90°时,转角调整1°/s;当30°<|θ|<60°时,转角调整5°/s;当5°<|θ|<30°时,转角调整10°/s;当0°<|θ|<5°时,机器人前进方向与赛场边缘线接近垂直,此时,可判定为机器人到达赛场终点。

但将该方案应用在接力跑时,因为机器人头部不断摆动,大大降低了机器人跑步的速度。故本文提出方案2:如图4所示,实线1、实线2为赛场边缘白线,圆形为机器人,虚线3为机器人预设前进方向。机器人头部固定不动,视野为正前方。θ1和θ2分别为机器人看向左右两条赛场边界白线的夹角。易知,当机器人行走方向始终沿虚线3方向行走时,θ1和θ2大小相同。而当机器人偏向右边时,θ1>θ2;当机器人偏向左边时,θ1<θ2。故可通过判断θ1和θ2的大小关系来判断机器人是否需要调整转向。与方案1相同,方案2采取多次调整策略,调整多次转速但每次调整转速值较小。

图4 机器人与赛场边缘线位置俯视图2

本方案根据上述θ1和θ2的大小关系判定转向及转速调整,θ1>θ2时机器人向左偏转;θ1<θ2时机器人向右偏转。并且当 0°<|θ1-θ2|<5°时,转角调整1°/s;当5°<|θ1-θ2|<10°时,转角调整5°/s;当10°<|θ1-θ2|时,转角调整10°/s。

将方案2应用到接力跑中,机器人减少了头部动作,接力跑稳定性得到提升,跑步速度也大大提高。

转向调整方案1与方案2的速度对比在本文第4小节示出。

2.4 NAO机器人接力模块设计

图5(a)为机器人拍摄的赛场图,经过2.2节图像处理后简化为图5(b)所示的模型图。如图5(b)所示,该图为俯视图,圆形为机器人所在位置,直线为赛场边界线,虚线1为机器人看向赛场边界线的视线,θ为机器人视线与机器人前进方向夹角,若85°<θ<95°,则系统判断为机器人即将到达赛场终点,第一台机器人继续前进5 s后结束运行,并向第二台机器人发送启动信息。

图5 机器人与赛场边缘线位置俯视图3

利用Socket通信[9]实现NAO机器人之间的接力通信。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

当第二台机器人接收到第一台机器人发送的启动信息后,开始启动,并按照上文所述策略继续运行。根据2.2节所述策略进行赛场位置识别及图像处理,根据2.3节所述策略基于赛场识别对机器人转向及转速进行调整,当第二台机器人到达终点时,停止运行,比赛结束。

3 NAO机器人步态规划

双足机器人步态规划主要有三次样条插值法与逆运动学求解法。

3.1 三次样条插值法

步态方案1采取三次样条插值方法来规划NAO机器人行走步态[10],根据关键时刻主要节点的位姿来规划NAO机器人在整个步态周期的运动轨迹。图6为机器人行走过程中,下肢的行走模型。

图6 机器人下肢模型

NAO机器人在行走过程中的单个步态周期为双脚支撑-左(右)脚支撑-双脚支撑-右(左)脚支撑-双脚支撑。为使规划出的轨迹平滑,在保持位移和速度连续性的同时,还要保证加速度的连续性。本文通过选取NAO机器人行走过程中关键时刻的位移、速度、加速度等状态,采用三次样条插值方法对未知时刻状态进行插值计算,规划出机器人单个步行周期的状态值,从而得到NAO机器人的期望运动轨迹。对机器人单个步态周期进行插值处理,选取插值函数:

(1)

式中,f(t)于各节点的值是f(ti)=fi(i=0,1,2,…,n);hi=ti+1-ti(i=0,1,2,…,n)。M0,M1,…,Mn满足线性方程组:

(2)

再补充:

S′(t0)=M0,S′(tn)=Mn

(3)

将式(2)与式(3)联立,解得M0,M1,…,Mn的值,再将结果代入式(1),故可解得S(t)的表达式即为NAO机器人运动轨迹。

3.2 逆运动学求解法

由于机器人在接力跑时,只需要进行前进和左右转的简单操作,不需复杂的步态规划,故步态策略设计了步态方案2:采取逆运动学求解法[11]。图7显示了机器人行走过程中躯干、髋关节、大腿和脚4个坐标系。

图7 机器人下肢各坐标系

规定对于同一个点,在M坐标系的位置记为pM,在N坐标系中的位置记为pN,同一点由M坐标系到N坐标系的转换矩阵记为M2N。为方便计算,将躯干坐标系记为A坐标系,将髋关节坐标系记为B坐标系,将大腿坐标系记为C坐标系,将脚坐标系记为D坐标系。

故机器人膝盖关节的角度可计算为

式中,l1为机器人膝盖上方腿的长度;l2为机器人膝盖下方腿的长度;ldis为B2A平移向量的长度。

机器人脚相对于机器人膝盖上方腿的俯仰角可以计算为

而机器人脚部的俯仰角可计算为

式中,x,y,z为脚坐标系对髋关节坐标系(D2B)的平移分量。

故机器人膝盖上方腿的俯仰角(pitch)(在脚坐标系中)为

θpitch=β+γ

机器人脚的滚动角度(roll)可计算为

又B2C=C2D-1·B2D,C2D=Rotx(δ)·Roty(θpitch·Transz(l2)·Roty(α)·Transz(l1)。

故由已知的髋关节参数(偏航角yaw(z),滚动角roll(x),俯仰角pitch(y))构造出旋转矩阵:

RotHip=Rotx(δx)·Roty(δy)·Rotz(δz)

其中,ci为cos(δi);si为sin(δi)。故

其中,rij为矩阵第i行第j列的值(i,j从零开始计数)。

至此,求出了所有关节角。

步态规划模块方案1与方案2的速度对比在本文第4小节示出。

4 实验分析

对2.3节调整转向模块方案1、方案2与第3节步态规划模块方案1(三次样条插值法)、方案2(逆运动学求解法)进行实验对照及数据分析。测量不同方案机器人跑步的速度。在同样的跑道上用同样的两台机器人跑完接力赛全程,得出的跑步时间如表1所示。表中SiTj指调整转向模块方案i,步态规划模块方案j。

表1 不同方案跑步时间测量

对表1进行分析,在调整转向方面,将表中第2、3列与第4、5列数据相比较,发现采用调整转向模块方案1时,机器人接力赛存在出界情况,而采用调整转向模块方案2不存在出界情况,调整转向方案2比方案1稳定性高;且采用调整转向模块方案2时,机器人跑步速度得到大大提升,故本策略采用调整转向方案2。在步态规划方面,将表中第4列与第5列数据相比较,发现方案1与方案2都不存在出界情况,且方差都较小,稳定性都较高,机器人跑步的平均速度都较快;但相比较于步态规划模块方案1,方案2方差更小速度更快。故本文策略采用步态规划模块方案2。

5 结束语

所设计的NAO机器人接力赛系统可以让机器人自主完成识别赛场边界线并根据边界线位置调整自身转向及转速,使NAO机器人能够在比赛过程中在规定赛场边界中行走,并自主判断赛场结束位置,使得比赛能够正确高效进行。实验表明该系统运行效果良好,并在“软银机器人杯”2018中国机器人技能大赛中获得一等奖。

该比赛系统从Socket通信原理入手,解决了机器人通信的问题,为机器人协同合作提供了新思路。同时该比赛系统对机器人步态做出了详细解读,与其他机器人步态相比,该比赛系统设计的步态运行更稳定且速度更快,对双足机器人的步态研究进行了补充。同时这个比赛也存在许多不足。比如场地的设计过于简单,对机器人赛者运用机器人进行路径规划的能力考验的不够。

在本文策略的设计上,今后可以在如下方面进行进一步改进:① 该比赛策略注重于对于实时情况的反应比如转向及调整转速,但是缺少对于比赛全局的考虑;② 在进行Socket通信时,也存在短暂延时问题,对于比赛时间有一定的影响。

猜你喜欢

接力赛步态赛场
一场别开生面的接力赛
基于步态参数分析的老年跌倒人群步态特征研究
让我成长的一场接力赛
基于面部和步态识别的儿童走失寻回系统
基于Kinect的学步期幼儿自然步态提取
步态研究及其在踝关节不稳中的应用进展
3D机械昆虫游戏接力赛
赛场回眸
赛场回眸
赛场回眸