发新话题
打印

RoboCup 机器人足球仿真比赛开发设计

RoboCup 机器人足球仿真比赛开发设计

摘要:机器人世界杯足球锦标赛(The Robot World Cup),简称RoboCup ,通过提供一个标准任务来促进分布式人工智能、智能机器人技术及其相关领域的研究与发展。本文在介绍RoboCup 仿真环境的基础上,系统完整地介绍了客户端程序的开发设计流程,阐述了其中涉及到的一些主要问题和算法,最后简要综述目前国际上的典型高层算法结构。
关键词: RoboCup 机器人足球比赛多智能体系统

    随着计算机技术的发展,分布式人工智能中多智能体系统(MAS:Multi-agent System) 的理论及应用研究已经成为人工智能研究的热点。RoboCup1则是人工智能和机器人技术的一个集中体现,被认为是继深蓝战胜人类国际象棋冠军卡斯帕洛夫后的又一里程碑式挑战,目标是到2050 年完全类人的机器人足球队能够战胜当时的人类足球冠军队伍。RoboCup 包括多种比赛方式,主要分为软件仿真比赛和实物系列的机器人足球比赛。由于软件仿真比赛无需考虑实际的硬件复杂,避免硬件实现的不足,可以集中于研究多智能体合作与对抗问题,因此,目前参加仿真组比赛的队伍数目最多。本文的内容涉及RoboCup 仿真比赛,系统地介绍了client 程序开发设计完整流程,可以作为是开发完整的RoboCup 仿真程序的入门指南。

1. RoboCup 仿真比赛介绍2
    RoboCup 仿真比赛提供了一个完全分布式控制、实时异步多智能体的环境,通过这个平台,测试各种理论、算法和Agent 体系结构,在实时异步、与声的对抗环境下,研究多智能体间的合作和对抗问题。仿真比赛在一个标准的计算机环境内进行,采用Client/Server 方式,由RoboCup 联合会提供Server 系统rcsoccersim( 版本8 之前名为soccerserver),参赛队编写各自的客户端程序,模拟实际足球队员进行比赛。

    Rcsoccersim 通过提供一个虚拟场地,对比赛全部球员和足球的移动进行仿真,以离散的方式控制比赛的进程。仿真模型引入了真实世界的很多复杂特,诸如物体移动的随机、感知信息和执行机构的不确定、个人能力的物理有限以及通讯量的受限。Client 程序则表现为多个Agent(球员)为了共同的赢球目标进行多智能体间的合作规划,因此,我们需要进行以下设计:多线程的程序结构,client 和server 间的同步策略,根据有限信息重构足球场上所有对象图景,Agent 的底层动作设计,Agent 的高层决策智能算法。

2. 程序框架和同步策略
    Rcsoccersim 通过UDP/IP 协议和client 进行通信,并没有对client 的开发和运行环境提出任何其他限制,只要支持UDP/IP 协议即可,因此在开发环境和使用语言上可以有多种选择。由于rcsoccersim 运汹Linux/Unix 系统下,而Linux 遵循之GPL3许可和RoboCup 开放源码、共享资源的思路有极大的相通之处,因此国际上一般都是选择Linux 系统作为开发平台。同时因为windows 系列平台的易用,也有极少数参赛队选择,如清华大学TsinghuAeolus 4。考虑到有大量基于Linux 系统的文档资料,而且Linux 系统具有高能的网络特和实时处理能力,在 Linux 下同样拥有强大功能的编辑、编译、调试、源码控制程序,如vim, gcc, gdb, cvs 以及程序开发集成环境KDevelop,丝毫不比Win 平台逊色,所以本文选择了Linux 操作系统作为仿真开发平台。

    仿真开发环境一般需要有三台计算机组成局域网,其中一台运行rcsoccersim,另外两台分别运行两个参赛队的程序,三台机器连到同一个Hub。目前主流配置是Redhat7.3, PIV1.70GHz,256MRAM,100M 网卡。

2.1 程序框架5
    RoboCup 仿真是11VS11 的比赛,每支参赛队启动11 个Agent(球员)进程,每一个进程则由两个线程组成。一个是IO 处理线程,一旦网络上有rcsoccersim 发送的数据包,就被触发运行;另外一个则是决策线程,选择一个适当的时机,利用rcsoccersim 给出的有限信息进行处理决策,最后选择一个合适的基本动作发送至rcsoccersim。由于两个线程都会利用/ 更新足球场上对象的信息,所以还需要增加一个互斥量,对该信息库进行加锁操作。

    决策线程是关键,每个Agent 内部都维护着一个世界模型,作为对真实世界的知识表述,由感知信息的处理结果和外部行为模块所选择动作的预测结果来共同更新。外部行为根据高层决策发送基本动作指令。基本动作作用于真实世界,从而改变Agent 将来的感知。

    从图(1)可以看出,还需要解决client 和server 间的同步问题,维护和更新世界模型,Agent 高层决策算法以及为实现高层决策的底层动作(图示为外部行为)。

2.2 同步策略
    Rcsoccersim 执行Agent 球员发送的基本动作指令,并据此相应的更新比赛环境,同时根据一定的时间间隔规律向每个Agent 发送感知信息(visual, auditory , sense_body)。Agent 则根据这些信息来确定下一步要做的基本动作(dash,kick,turn,etc) 6。在这样的异步、离散控制的仿真环境中,c/s 间的同步机制显得格外重要。在每一个离散周期(目前一个仿真周期为100ms),Agent 不能发送过多的动作指令,否则只会被随机选择其中某个指令;另一方面,在每一个离散周期,Agent 也应该发送起码一个指令,否则就会浪费该仿真周期。发送指令的时间要足够的早,要在本周期rcsoccersim 停止接收Agent 指令之前发送到,否则就会浪费本周期机会;发送指令的时间又要足够的晚,这样才能在得到尽可能多信息的情况下,做出一个更准确的决策。那么,什么时候发送指令就成为问题的关键。

    阿姆斯特丹大学的UvA Trilearn 综合研究了四种同步策略:外部基本策略(External Basic) 、内部基本策略(Internal Basic)、固定外部窗策略(Fixed External Windowing)、柔外部窗策略(Flexible External Windowing)。经过研究表明8,柔外部窗策略是最佳选择,该策略如图2 所示。图中点虚线代表自身感知信息,rcsoccersim 在每个周期的开始时段发送,短划虚线代表视觉信息,实线则是Agent 发送给rcsoccersim 的动作指令,阴影部分是Agent 的决策模块。从图2 可看出,Agent 最大限度的利用了最新信息,同时也保证每一周期都不被浪费,确实是一个不错的同步机制。

3. 世界模型和底层动作
    在开始研究多智能体合作与对抗算法之前,我们还需要解决世界模型的维护以及底层动作的设计。

3.1 世界模型的维护
    Agent 仅能得到视野角度范围内的有限感知信息,而且有限的信息也带与声,而在Agent 内部维护一个较为准确的全局世界模型,是接下去所有决策的前提条件,具有重要意
义。

    卡内基梅隆大学的RoboCup 仿真研究小组9提出世界模型更新算法10,结合Agent 获取的感知信息以及对执行动作的预测结果进行更新世界模型。当更新Agent 的世界模型时,首先更新Agent 本身的位置、速度等值,然后更新球和其他球员。

. Agent 本身
    由于视觉信息是以相对坐标表示的,那么首先要确定对应视觉信息时刻的Agent 本身的绝对坐标。以视觉信息为主,再考虑自身感知信息以及动作预测结果来补充更新Agent 本身信息。

. 足球
    在决策过程中,足球的位置和速度对动作的选择是一个相当关键的因素。因此,要尽可能及时获得关于足球的精确信息。主要利用视觉信息中的相对值来更新足球对象的位置和速度。当决定是否要截球、是否要踢球时,球的速度是非常重要的,而在视觉信息中通常不给出球的速度,因此当需要得到足球速度值时,可以通过原来的位置和当前的位置来计算球的速度。

. 其他球员
    由于经常会因为距离原因不能看到所有球员的号码及所属队名,甚至有些球员将不在视野范围内,因此很难跟踪每个球员的位置。我们需要建立尽可能准确的世界模型,包括场上所有对象信息。

    通常情况下,球员位置和速度的确定和球所采用的方法一样。所额外增加的是视觉信息中所提供的球员的面向。
    在不能获知球员的全部信息时,可用该球员的原先位置来消除这种不确定。由于已知一个球员在一个周期内所能够移动的最大距离,因此当所得到的一个球员信息没有标识时,可以通过原来球员的位置来确定它的标识。

3.2 底层动作介绍
    当一个良好的算法被设计后,同样需要完善的底层动作分解实现之,底层动作主要包括跑位、传球、截球、带球、断球、射门等个人技术。这些技术动作是最基本的,是实现高层的复杂策略所必不可少的,每个都是复合动作,实现都需要多个周期,由多个基本命令(dash, kick,turn)组成。

. 跑位:在决策出跑位点后,在跑位过程我们需要考虑世界模型的准确与完备,即视线不能老是对着跑位点,适当时候还应该转身扫描获取场上对象情况。
. 传球:扫描传球路线,确定传球力量。保证足球不会被对方球员所截获。
. 截球:已知足球速度方向,分析各球员的得球能力。
. 带球:不需要保证足球每个周期都在可踢范围内,只要保证自己能最早截球即可,可调用截球模块来重新获得足球控制权。
. 断球:当双方近距离争抢足球时,如何断球,夺取足球的控制权。
. 射门:可以参考传球模块,需要增加对对方守门员的额外考虑。
     底层动作的实现可采用几何的方法对运动模型进行解析计算,也可采用神经网络的方法进行场景训练,使用监督学习的方式,通过对多层前馈神经元网络的训练,实现如带球,传球,射门等基本技术。基于神经网络的学习在机器人足球领域已经有所研究11,该文提出的方法也适用于仿真领域。

4. 高层算法简介
    高层决策研究—— 多智能体的合作与对抗—— 是RoboCup 仿真项目的最终研究目标。在机器人足球系统的开发中 ,近年来迅速发展的先进智能算法被充分利用,并取得了很好的效果。

    Peter Stone12使用层学习技术来设计机器人的基本动作和顶层决策。Kostas Kostiadis13利用再励学习方法实现多机器人系统中的合作行为。Endo Kazuaki et al.14运用遗传算法来优化系统的参数。层学习技术综合了慎思结构和反应式结构,有很成功的应用。RoboCup 仿真比赛的2001 世界冠军清华大学队15设计了层结构作为机器人的系统结构,使用神经元网络实现全队的基本队形,然后按照智能水平从低到高的顺序,建立整个机器人足球比赛系统,并应用于实践中。

5. 结束语
    本文较为系统地介绍了开发RoboCup 仿真程序的完整过程,特别以较多的篇幅介绍仿真程序开发设计中涉及的一些主要问题与算法。本文旨在降低RoboCup 仿真比赛的进入壁垒,减少开发人员的重复劳动,将更多的精力投入到高层算法上来。

作者简介:郭叶军,男,浙江大学硕士研究生,主要研究方向:智能机器人、多智能体系统、模式识别;熊蓉,女,浙江大学工程师,主要研究方向:智能机器人、分布式集中式控制理论、网络数据库;吴铁军,男,浙江大学教授,博导,主要研究方向:大系统智能控制与优化,人机协同控制与决策,混杂系统智能控制,多智能体分散控制,智能系统理论在复杂工业过程中的应用。

TOP

图一
附件: 您所在的用户组无法下载或查看附件

TOP

图一
附件: 您所在的用户组无法下载或查看附件

TOP

图二
附件: 您所在的用户组无法下载或查看附件

TOP

发新话题