1  引言
     足球机器人系统是近年来十分活跃的高科技竞技系统[1]。该系统已成为各种人工智能、机器人等领域问题的一种标准试验平台[2,3]。各种先进的方法和理论都在其中得到使用和验证[4,5,6]。为了指导MIROSOT的决策系统编程, 我们提出了一种混合决策结构, 如图1所示。该结构将足球机器人决策系统分为:任务确定与解答、角色分配与协调和机器人动作等三个层次,用信息预处理模块来处理传感器的原始信息,用一个快速反应模块来处理特殊情况。东北大学机器人足球队决策系统是一种基于该混合决策结构的多机器人对抗决策系统。MIROSOT分为Small League、Middle League、Large League三种类型。我们以MIROSOT(Middle League)比赛程序为例介绍决策系统各层计的主要内容,该项目规定敌双方各有5个机器人参加比赛。  


图1     混合决策结构

2  决策系统描述
     足球机器人决策系统的输入是视觉传感器信息,输出的场上机器人的轮速信息。实际上整个决策系统就是从传感器空间到轮速空间的一个映射,定义为:
D:S->V;
D:表示决策过程。
S={(homeRobots,enemyRobots, ball)},为含有我方机器人位姿信息、对方机器人位姿信息和球位置信息的传感器空间;其中,
homeRobots=(homeRobot1,homeRobot2,homeRobot3,homeRobot4,homeRobot5)。
HomeRoboti(i为机器人号码)为Robot结构,定义为:(x,y,θ)。x,y和θ分别指的是机器人的x坐标、y坐标和正面朝向。ball为Ball结构,定义为(x,y),x和y分别指的是球的x坐标和y坐标。

V={(rbV1,rbV2,rbV3,rbV4,rbV5)},为机器人轮速空间。其中rbVi为号码为i的我方机器人动作指令。RbVi为Velocity结构,定义为(lv, rv)。lv和rv分别对应机器人左轮和右轮速度。

下面的讨论是基于两个基本假设之上的:
假设1:自然坐标假设:假设我们在决策系统中使用的坐标都是自然坐标;
假设2:右攻假设:假设我们总是从左半场向右半场进攻的。如果实际情况是我方在右半场,则通过一组公式将我方转换到左半场,该组公式为:
Object.x=BOUND_RIGHT-Object.x;    (1)
Object.y=Object.y;      (2)
Object.θ=π Object.θ。   (3)
其中,Object表示场地物体,包括我方机器人、对方机器人和球,其中球结构中不含θ,所以不对球作θ分量上的转换。
BOUND_RIGHT为比赛场地的x方向上的长度,在Mirosot(Middle League)竞赛项目中,该尺寸大小为150cm。

2.1  机器人动作层设计
     动作层定义了需要多个控制周期才能完成的轮式机器人动作。动作层主要解决的是机器人运动控制问题,包括轨迹规划、轨迹跟踪和点镇定控制问题。

     根据复杂程度划分,我们把足球机器人的动作分为基本动作和技术动作两个层次。基本动作是机器人实现复杂动作的基础。我们定义了三个基本动作:ToPosition、Turn和Move。ToPosition主要用来使机器人运动到给定点,Turn是机器人原地旋转,Move是机器人朝着某个方向前进。技术动作基本上是构建于基本动作之上的。常用的技术动作包括:Goalkeeper、Shoot、BoundProcess、PassBall、BlockMan、PointWaiting等等,其功能分别为:守门、射门、边界处理、传球、盯人和跑位。这些技术动作构成了足球机器人的可选动作集合,也就是动作空间:
A={a|a =Goalkeeper,Shoot,BoundProcess,PassBall,BlockMan,PointWaiting,...}

     足球机器人动作层设计属于机器人运动学和动力学的范畴,该层抽象了足球机器人的动作,封装了足球机器人的物理模型、运动学模型和动力学模型,完成了从机器人关节空间(即轮速空间)到动作空间的映射,从而将我们从机器人关节空间的细枝末节中解放出来,把更多的精力放在数量不多的机器人动作的特性、实现方法等的研究上来。

2.2  信息预处理模块设计
     输入是视觉信息,输出是赛场状态,所以它的主要作用是完成视觉空间到状态空间的映射。赛场状态是赛场的态势的数学描述。赛场状态的定义取决于决策系统设计者的主观意识。定义和匹配赛场状态的过程是态势分析的关键。该模块的另外一个重要作用是保证从视觉系统传来的传感器信息是否完整、精确和有效。在实际比赛过程中,由于场地的光线条件的往往不是很好,场地周围有很多观众,所以视觉系统的所面对的常常是恶劣的视觉环境。在这种情况下仅仅依靠增强视觉系统的精度和可靠性来建立传感器空间往往是不够的,这就需要信息预处理模块对视觉信息进行预处理。经常遇到的一种情况是在场地某点上一些颜色不好的机器人从视觉信息中丢失。遇到这种情况,我们就需要利用信息预处理模块对视觉传感器建模,预测一个机器人位姿来代替未知的机器人位姿,并进行特殊处理以便视觉系统尽快重新发现该机器人。

     我们的状态设计可表述如下:
M={(m1,m2,m3,m4,m5)|m1~m5∈N}
其中:
     m1特征维表示球的位置特征,我们按照球在某个局部区域的存在对竞赛双方攻防形势的意义,把赛场划分为若干个特征区域。所有特征区域的并集为整个赛场。

m2特征维表示球的速度特征,我们将球的速度分为:高速、较高速、中速、中低速、低速等五个档次。

     m3特征维表示球的运动方向特征,我们将球的运动方向分为:右、右上、上、左上、左、左下、下、右下等八个方向。

     m4特征维表示敌我双方对场上形势的掌握程度,分别有:敌方控球、敌方我方顶牛、我方控球、双方皆不控球等四个特征状态。

     m5特征维表示敌我双方的攻防漏洞,分别有:敌方漏洞大,敌方漏洞较大、敌方漏洞小、我方漏洞小、我方漏洞较大、我方漏洞大等六个特征状态。需要注意的是,当球位于对我方的威胁很小的位置的时候,m5特征维分析中将不考虑我方的漏洞。同理当球位于对敌方的威胁很小的位置的时候,m5特征维分析中不考虑敌方的漏洞。

3  任务确定与解答层设计
3.1  队形和角色定义

     我们把队形定义为我方球队应对当前状态的解答。任务确定与解答层的输出就是所选择的队形。
队形定义:F={(Rf1,Rf2, Rf3,Rf4,Rf5)|Rf1~Rf5∈R}。
R为足球机器人角色空间,R={r|r=r1,r2,r3,…},其中r1,r2,r3,…为足球机器人角色。所谓角色就是单个机器人应对当前状态的解答。Rf1、Rf2、Rf3、Rf4、Rf5是按照角色重要性的一个排列。Rf1为最重要的角色,Rf5为最不重要的角色,依此类推。我们把角色的这种排列称为队形角色序列。

我们把足球机器人的角色归纳为四大类:
(1) 第一类是能在开球瞬间完成简单开球任务的足球机器人角色,例如:点球角色、门球角色、争球角色、任意球角色等。

(2) 第二类是能完成特定踢球任务的足球机器人角色,例如:中路射门角色,边路射门角色,前场边界球处理角色,后场边界球处理角色,中路补射角色,边路传中角色等。
简单看来,场上的机器人的状态只有两种可能,一种是踢球,一种是跑位,第一、第二类角色就是用来“踢球”的机器人角色。

(3) 第三类角色是能够以球为参考点的保持固定队伍形状的角色,例如:三角进攻上护卫角色,三角队进攻下护卫角色,三角防守上护卫角色,三角防守下护卫角色等。

(4) 第四类角色是能够跑到球场的固定的位置等候机会的角色。
     角色的设计是基于动作层的基础上的。角色设计完成以后,角色就具有了自己的意义,我们可以把角色看成能完成某种任务的逻辑单元,或者是逻辑智能体,该单元具有在特定条件下能按照某种概率完成特定任务的特点。角色具有这种特点的属性可以被看做一类知识或者规则,这类知识为队形的设计提供依据。

3.2  用队形实现对抗战术和战略
     我们可以近似地认为在没有对抗的情况下,Rf1角色就可以完成队形所担负的任务,其他角色的存在只是为了确保任务的完成。对于一个队形来说,它的最重要的属性就是它所能完成的任务,也就是队形的目标。足球机器人的队形的目标就是将球踢向某个方向或者是某个区域。足球机器人系统的决策过程也就是选择合适的队形,然后忠实地执行该队形内容的过程。我们的目标是通过执行某个决策过程,使场上的形势达到对我方有利的状态。我们认为以下四种状态是对我方有利的状态:
第一种是我方进球状态;
第二种是对方防守出现很大空档的状态;
第三种是将会引起裁判对我方有利的判罚的状态;
第四种是解除我方被动局面的状态。


图2      边路进攻和下底传中


    下面举一个简单的例子来说明战术和战略的实现过程。我们将整个比赛场地划分为20个区域,如图2所示。假定场上形势初始状态为:
M0=(Area7,低速,左下,我方控球,我方漏洞小),
为了简单起见,我们按照理性原则[14],以及有利目标状态原则,用规则库和搜索树的方法来选择合适的队形。选择的队形为F0,F0的目标为将球踢到Area3,执行后赛场状态变为:
M1=(Area3,低速,右,我方控球,敌方漏洞小),
我们选择队形F1来应对该状态。F1的目标是将球踢向Area4,执行后赛场状态变为:
M2=(Area4,低速,右,我方控球,敌方漏洞小),
我们选择队形F2来应对该状态。F2的目标是将球踢向Area9,执行后赛场状态变为:
M3=(Area9,低速,右下,我方控球,敌方漏洞小),
我们选择队形F3来应对该状态。F3的目标是将球踢向Area14,执行后赛场状态变为:
M4=(Area14,低速,左下,我方控球,敌方漏洞大),
我们选择队形F4来应对该状态。F4的目标是直接射门,执行后赛场状态变为:
M5=(对方球门内,?,?,?,?)。

     为了使场上状态从M0到M5的变化,我们选择的队形依次为F0->F1->F2->F3->F4,其中,F0->F1-> F2反应了我们的边路进攻战略,而F3->F4则反应了我们的下底传中的战术配合。我们设计一个队形库来储存队形,并通过离线实验来得到队形的属性,从而建立从状态到队形的映射。

3.3  队形的层次
     在足球机器人竞赛中,比赛双方的正面冲突往往是发生在比较小的范围内,特别是球的周围。对于竞赛机器人数目较多的比赛项目来说更是如此。在这种情况下,层次单一的队形作为应对策略往往不是很好的选择。比方说,当球在前半场对方门区内的时候,我们对于我方门区附近的我方队员的考虑就不必那么周全和详细。针对这种情况,我们引入了队形的层次的概念。我们把队形分为两个层次,一个是基本队形,一个是局部队形。基本队形是针对对方的基本攻防喜好,体现我方的基本攻防策略的队形,该队形受赛场形势的影响,各角色的排序由于重要性的变化将会有所变化,但是队形中各角色的内容随场上形势的变化不是很剧烈。基本队形可定义为:
Fbase=(Fbase0,Fbase1,Fbase2,Fbase3,Fbase4)。
局部队形针对的是发生直接冲突的区域的赛场形势,体现我方针对特定情况的战术的队形,定义为:
Flocal=(Flocal0,Flocal1,Flocal2,?,?)。
其中,“?”为通配符。因为在局部队形中不考虑与直接冲突区域关系不大的区域。真正应对赛场状态的队形由Fbase和Flocal组合而成,组合后的队形为:
F=(Flocal0,Flocal1,Flocal2,Fbase3,Fbase4)。

     可以看出,真正的队形的前几个角色(也是比较重要的,反应局部冲突应对策略的角色)是由Flocal提供的,而其他的角色由Fbase提供。这种多层次的队形设计进一步细化了队形设计,使队形设计更合理更有依据。