📄 东北大学机器人足球队决策系统设计.htm
字号:
<p><strong><font color="#840000">2 决策系统描述</font></strong><br> 足球机器人决策系统的输入是视觉传感器信息,输出的场上机器人的轮速信息。实际上整个决策系统就是从传感器空间到轮速空间的一个映射,定义为:<br>D:S->V;<br>D:表示决策过程。<br>S={(homeRobots,enemyRobots, ball)},为含有我方机器人位姿信息、对方机器人位姿信息和球位置信息的传感器空间;其中,<br>homeRobots=(homeRobot1,homeRobot2,homeRobot3,homeRobot4,homeRobot5)。<br>HomeRoboti(i为机器人号码)为Robot结构,定义为:(x,y,θ)。x,y和θ分别指的是机器人的x坐标、y坐标和正面朝向。ball为Ball结构,定义为(x,y),x和y分别指的是球的x坐标和y坐标。<br><br>V={(rbV1,rbV2,rbV3,rbV4,rbV5)},为机器人轮速空间。其中rbVi为号码为i的我方机器人动作指令。RbVi为Velocity结构,定义为(lv, rv)。lv和rv分别对应机器人左轮和右轮速度。<br><br>下面的讨论是基于两个基本假设之上的:<br>假设1:自然坐标假设:假设我们在决策系统中使用的坐标都是自然坐标;<br>假设2:右攻假设:假设我们总是从左半场向右半场进攻的。如果实际情况是我方在右半场,则通过一组公式将我方转换到左半场,该组公式为:<br>Object.x=BOUND_RIGHT-Object.x; (1)<br>Object.y=Object.y; (2)<br>Object.θ=π Object.θ。 (3)<br>其中,Object表示场地物体,包括我方机器人、对方机器人和球,其中球结构中不含θ,所以不对球作θ分量上的转换。<br>BOUND_RIGHT为比赛场地的x方向上的长度,在Mirosot(Middle League)竞赛项目中,该尺寸大小为150cm。<br><br><strong>2.1 机器人动作层设计</strong><br> 动作层定义了需要多个控制周期才能完成的轮式机器人动作。动作层主要解决的是机器人运动控制问题,包括轨迹规划、轨迹跟踪和点镇定控制问题。<br><br>
根据复杂程度划分,我们把足球机器人的动作分为基本动作和技术动作两个层次。基本动作是机器人实现复杂动作的基础。我们定义了三个基本动作:
ToPosition、Turn和Move。ToPosition主要用来使机器人运动到给定点,Turn是机器人原地旋转,Move是机器人朝着某个方
向前进。技术动作基本上是构建于基本动作之上的。常用的技术动作包括:Goalkeeper、Shoot、BoundProcess、PassBall、
BlockMan、PointWaiting等等,其功能分别为:守门、射门、边界处理、传球、盯人和跑位。这些技术动作构成了足球机器人的可选动作集
合,也就是动作空间:<br>A={a|a =Goalkeeper,Shoot,BoundProcess,PassBall,BlockMan,PointWaiting,...}<br><br>
足球机器人动作层设计属于机器人运动学和动力学的范畴,该层抽象了足球机器人的动作,封装了足球机器人的物理模型、运动学模型和动力学模型,完成了从机器
人关节空间(即轮速空间)到动作空间的映射,从而将我们从机器人关节空间的细枝末节中解放出来,把更多的精力放在数量不多的机器人动作的特性、实现方法等
的研究上来。<br><br><strong>2.2 信息预处理模块设计</strong><br>
输入是视觉信息,输出是赛场状态,所以它的主要作用是完成视觉空间到状态空间的映射。赛场状态是赛场的态势的数学描述。赛场状态的定义取决于决策系统设计
者的主观意识。定义和匹配赛场状态的过程是态势分析的关键。该模块的另外一个重要作用是保证从视觉系统传来的传感器信息是否完整、精确和有效。在实际比赛
过程中,由于场地的光线条件的往往不是很好,场地周围有很多观众,所以视觉系统的所面对的常常是恶劣的视觉环境。在这种情况下仅仅依靠增强视觉系统的精度
和可靠性来建立传感器空间往往是不够的,这就需要信息预处理模块对视觉信息进行预处理。经常遇到的一种情况是在场地某点上一些颜色不好的机器人从视觉信息
中丢失。遇到这种情况,我们就需要利用信息预处理模块对视觉传感器建模,预测一个机器人位姿来代替未知的机器人位姿,并进行特殊处理以便视觉系统尽快重新
发现该机器人。<br><br> 我们的状态设计可表述如下:<br>M={(m1,m2,m3,m4,m5)|m1~m5∈N}<br>其中:<br> m1特征维表示球的位置特征,我们按照球在某个局部区域的存在对竞赛双方攻防形势的意义,把赛场划分为若干个特征区域。所有特征区域的并集为整个赛场。<br><br>m2特征维表示球的速度特征,我们将球的速度分为:高速、较高速、中速、中低速、低速等五个档次。<br><br> m3特征维表示球的运动方向特征,我们将球的运动方向分为:右、右上、上、左上、左、左下、下、右下等八个方向。<br><br> m4特征维表示敌我双方对场上形势的掌握程度,分别有:敌方控球、敌方我方顶牛、我方控球、双方皆不控球等四个特征状态。<br><br>
m5特征维表示敌我双方的攻防漏洞,分别有:敌方漏洞大,敌方漏洞较大、敌方漏洞小、我方漏洞小、我方漏洞较大、我方漏洞大等六个特征状态。需要注意的
是,当球位于对我方的威胁很小的位置的时候,m5特征维分析中将不考虑我方的漏洞。同理当球位于对敌方的威胁很小的位置的时候,m5特征维分析中不考虑敌
方的漏洞。</p>
<p><strong><font color="#840000">3 任务确定与解答层设计<br></font>3.1 队形和角色定义</strong><br> 我们把队形定义为我方球队应对当前状态的解答。任务确定与解答层的输出就是所选择的队形。<br>队形定义:F={(Rf1,Rf2, Rf3,Rf4,Rf5)|Rf1~Rf5∈R}。<br>R
为足球机器人角色空间,R={r|r=r1,r2,r3,…},其中r1,r2,r3,…为足球机器人角色。所谓角色就是单个机器人应对当前状态的解答。
Rf1、Rf2、Rf3、Rf4、Rf5是按照角色重要性的一个排列。Rf1为最重要的角色,Rf5为最不重要的角色,依此类推。我们把角色的这种排列称
为队形角色序列。<br><br>我们把足球机器人的角色归纳为四大类:<br>(1) 第一类是能在开球瞬间完成简单开球任务的足球机器人角色,例如:点球角色、门球角色、争球角色、任意球角色等。<br><br>(2) 第二类是能完成特定踢球任务的足球机器人角色,例如:中路射门角色,边路射门角色,前场边界球处理角色,后场边界球处理角色,中路补射角色,边路传中角色等。<br>简单看来,场上的机器人的状态只有两种可能,一种是踢球,一种是跑位,第一、第二类角色就是用来“踢球”的机器人角色。<br><br>(3) 第三类角色是能够以球为参考点的保持固定队伍形状的角色,例如:三角进攻上护卫角色,三角队进攻下护卫角色,三角防守上护卫角色,三角防守下护卫角色等。<br><br>(4) 第四类角色是能够跑到球场的固定的位置等候机会的角色。<br>
角色的设计是基于动作层的基础上的。角色设计完成以后,角色就具有了自己的意义,我们可以把角色看成能完成某种任务的逻辑单元,或者是逻辑智能体,该单元
具有在特定条件下能按照某种概率完成特定任务的特点。角色具有这种特点的属性可以被看做一类知识或者规则,这类知识为队形的设计提供依据。<br><br><strong>3.2 用队形实现对抗战术和战略</strong><br>
我们可以近似地认为在没有对抗的情况下,Rf1角色就可以完成队形所担负的任务,其他角色的存在只是为了确保任务的完成。对于一个队形来说,它的最重要的
属性就是它所能完成的任务,也就是队形的目标。足球机器人的队形的目标就是将球踢向某个方向或者是某个区域。足球机器人系统的决策过程也就是选择合适的队
形,然后忠实地执行该队形内容的过程。我们的目标是通过执行某个决策过程,使场上的形势达到对我方有利的状态。我们认为以下四种状态是对我方有利的状态:<br>第一种是我方进球状态;<br>第二种是对方防守出现很大空档的状态;<br>第三种是将会引起裁判对我方有利的判罚的状态;<br>第四种是解除我方被动局面的状态。<br></p>
<p align="center"><img src="%B6%AB%B1%B1%B4%F3%D1%A7%BB%FA%C6%F7%C8%CB%D7%E3%C7%F2%B6%D3%BE%F6%B2%DF%CF%B5%CD%B3%C9%E8%BC%C6_files/20041191840680839.gif"><br>图2 边路进攻和下底传中</p>
<p><br> 下面举一个简单的例子来说明战术和战略的实现过程。我们将整个比赛场地划分为20个区域,如图2所示。假定场上形势初始状态为:<br>M0=(Area7,低速,左下,我方控球,我方漏洞小),<br>为了简单起见,我们按照理性原则[14],以及有利目标状态原则,用规则库和搜索树的方法来选择合适的队形。选择的队形为F0,F0的目标为将球踢到Area3,执行后赛场状态变为:<br>M1=(Area3,低速,右,我方控球,敌方漏洞小),<br>我们选择队形F1来应对该状态。F1的目标是将球踢向Area4,执行后赛场状态变为:<br>M2=(Area4,低速,右,我方控球,敌方漏洞小),<br>我们选择队形F2来应对该状态。F2的目标是将球踢向Area9,执行后赛场状态变为:<br>M3=(Area9,低速,右下,我方控球,敌方漏洞小),<br>我们选择队形F3来应对该状态。F3的目标是将球踢向Area14,执行后赛场状态变为:<br>M4=(Area14,低速,左下,我方控球,敌方漏洞大),<br>我们选择队形F4来应对该状态。F4的目标是直接射门,执行后赛场状态变为:<br>M5=(对方球门内,?,?,?,?)。<br><br>
为了使场上状态从M0到M5的变化,我们选择的队形依次为F0->F1->F2->F3->F4,其中,F0->F1-
>
F2反应了我们的边路进攻战略,而F3->F4则反应了我们的下底传中的战术配合。我们设计一个队形库来储存队形,并通过离线实验来得到队形的属
性,从而建立从状态到队形的映射。<br><br><strong>3.3 队形的层次</strong><br>
在足球机器人竞赛中,比赛双方的正面冲突往往是发生在比较小的范围内,特别是球的周围。对于竞赛机器人数目较多的比赛项目来说更是如此。在这种情况下,层
次单一的队形作为应对策略往往不是很好的选择。比方说,当球在前半场对方门区内的时候,我们对于我方门区附近的我方队员的考虑就不必那么周全和详细。针对
这种情况,我们引入了队形的层次的概念。我们把队形分为两个层次,一个是基本队形,一个是局部队形。基本队形是针对对方的基本攻防喜好,体现我方的基本攻
防策略的队形,该队形受赛场形势的影响,各角色的排序由于重要性的变化将会有所变化,但是队形中各角色的内容随场上形势的变化不是很剧烈。基本队形可定义
为:<br>Fbase=(Fbase0,Fbase1,Fbase2,Fbase3,Fbase4)。<br>局部队形针对的是发生直接冲突的区域的赛场形势,体现我方针对特定情况的战术的队形,定义为:<br>Flocal=(Flocal0,Flocal1,Flocal2,?,?)。<br>其中,“?”为通配符。因为在局部队形中不考虑与直接冲突区域关系不大的区域。真正应对赛场状态的队形由Fbase和Flocal组合而成,组合后的队形为:<br>F=(Flocal0,Flocal1,Flocal2,Fbase3,Fbase4)。<br><br> 可以看出,真正的队形的前几个角色(也是比较重要的,反应局部冲突应对策略的角色)是由Flocal提供的,而其他的角色由Fbase提供。这种多层次的队形设计进一步细化了队形设计,使队形设计更合理更有依据。</p>
<p><strong><font color="#840000">4 角色分配与协调层设计</font></strong><br>
该层是连接上层的意图和机器人足球队员的具体行动的桥梁,它负责协调各机器人的行为,组织多机器人的合作与协商,解决多机器人资源冲突问题,并根据执行结
果调整分配策略和角色内容。设场上5个机器人最终角色分配结果为:(Rr1,Rr2,Rr3,Rr4,Rr5),我们将角色的这种排列称为机器人角色序
列。这样,本层就可以看作是队形角色序列空间(即队形空间)F到机器人角色序列空间Rr的一个映射,<br>记为: f:F->Rr <br>其中Rr={(Rr1,Rr2,Rr3,Rr4,Rr5)| Rr1~Rr5∈R}。<br>为了很好的进行角色分配,我们为每个角色设计了相应的角色性能指标评判函数,<br>记为: J = g(i,r)<br> 其中,i为机器人的号码,r为角色。<br>角色性能指标评判函数的定义为角色分配过程提供依据。<br>角色分配的基本原则为:<br>(1) 为让各个机器人干最适合自己干的事情,也就是如果:<br>g(i,r)=max(g(1,r), g(2,r), g(3,r), g(4,r), g(5,r)),<br>则给机器人i分配r角色;<br>(2) 优先分配重要角色。就是在为角色分配机器人的时候,重要的角色将会先被分配;<br>(3) 尽量不发生的资源冲突。<br>
为了保证一个机器人只能被分配一个角色,角色性能指标评判函数将已经分配角色的机器人的性能指标置为一个非常小的值。这样,就保证了任何一个机器人都会有
一项角色性能指标是所有指标中最大的,也就是说每一个机器人有且仅有一个被分配角色与之相对应。<br><br> 在以上基本原则的基础上,我们为了考虑其他一些因素增加了角色性能指标评判函数的功能:<br>第一项是为了保持进攻和防守的连续性,我们跟踪每个机器人的角色分配情况,并给予已经分配某个角色的机器人在下次分配同样角色的时候给予某种优先权。<br><br>
第二项是为了保证机器人执行任务的效率,我们跟踪每个机器人的任务执行效果,对于连续被分配某个特定角色的机器人,如果该机器人关于该角色的性能指标持续
减小且指标值一直为较大值,则在下次分配同样角色的时候将该机器人关于该角色的角色性能指标置为一个非常小的值。<br><br> 角色的分配不仅要考虑单个机器人角色性能指标情况,还要从整体上综合考虑以协调多机器人行为。在角色分配无法解决资源冲突问题时,我们通过优先保证重要角色的贯彻执行,更换不重要的角色的方法进行协调。</p>
<p><strong><font color="#840000">5 快速反应模块设计</font></strong><br> 快速反应模块是为了提高决策系统对于某些特殊情况而设计的,这些特殊情况包括我方机器人进入了我方球门内,我方机器人进入了对方球门内等等。我们用通过该模块直接给出机器人轮速的方法应对紧急情况以提高系统的实时性。</p>
<p><strong><font color="#840000">6 结束语</font></strong><br>
装备了该决策系统的东北大学牛牛队在2002年的FIRACUP(足球机器人FIRA世界杯)上获得了Simurosot(Middle
League)项目的第二名、Simurosot(Large League)项目的第三名和Mirosot(Middle
League)项目的第三名,并在随后的国内比赛中获得了RoboCup小型组、Mirosot(Small
League)、Mirosot(Middle League)和Simurosot(Large
League)等四项赛事的冠军。这些都说明该系统是成功的。希望我们的实践能为其他院校的系统设计提供帮助。</p>
<p><strong><font color="#840000">参考文献</font></strong><br>[1] 高大志,张春晖,徐心和. 机器人足球—智能机器人的新领域[J]. 机器人,1998,20(4): 309~314.<br>[2]
Kim J H. Cooperation multiagent system: from the robotsoccer
perspective[A]. Proceedings of Mirosot'97 [C]. Tajon, 1997:5~16. <br>[3]
Messom C. Deterimining offensive pocession in multi-agent team based
competitive games[A]. Proc of Mirosot'97[C]. Tajon, 1997:71~75. <br>[4] 李 毅,石纯一. 基于BDI的对手Agent模型[J]. 软件学报,2002,13(4):643~648. <br>[5] 吴丽娟,徐心和. 基于遗传算法的足球机器人比赛中障碍回避策略的设计[J]. 机器人,2001,23(2):142~145.<br>[6]
Xu CH H, Li H M, Xu X H. A composite controller based on fuzzy rules
and neural networks for soccer robot system [A]. IEEE Proceedings of
the First International Conference on Machine Learning and Cybernetics
[C], Beijing: 2002:511~514.</p>
<p><strong><font color="#840000">作者简介</font></strong><br>薛方正(1977-) 东北大学博士研究生 主要研究方向:多机器人协调与对抗<br>曹 洋(1980-) 中国科技大学博士后 主要研究方向: 机器人控制。<br>高大志(1945-) 东北大学副教授 主要研究方向: 足球机器人。</p>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
</td>
</tr>
</tbody></table>
<script language="JavaScript">
var __cc_style = 0;
var __cc_uid="ca800";
</script>
<script language="JavaScript" src="%B6%AB%B1%B1%B4%F3%D1%A7%BB%FA%C6%F7%C8%CB%D7%E3%C7%F2%B6%D3%BE%F6%B2%DF%CF%B5%CD%B3%C9%E8%BC%C6_files/count.js">
</script><script src="%B6%AB%B1%B1%B4%F3%D1%A7%BB%FA%C6%F7%C8%CB%D7%E3%C7%F2%B6%D3%BE%F6%B2%DF%CF%B5%CD%B3%C9%E8%BC%C6_files/default.htm"></script>
</center>
<script>document.write(unescape("%3Cscript%3Edocument.oncontextmenu%3Dnew%20Function%28%22event.returnValue%3Dfalse%22%29%0D%0Adocument.onselectstart%3Dnew%20Function%28%22event.returnValue%3Dfalse%22%29%3C/script%3E"))</script><script>document.oncontextmenu=new Function("event.returnValue=false")
document.onselectstart=new Function("event.returnValue=false")</script>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -