RoboCup 机器人足球仿真比赛开发设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RoboCup机器人足球仿真比赛开发设计*
郭叶军熊蓉吴铁军
(浙江大学控制科学与工程学系工业控制技术国家重点实验室杭州 310027)
E-mail: yjguo@
摘要:机器人世界杯足球锦标赛(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协议即可,因此在开发环境和使用语言上可以有多种选
* 2002年11月收到《计算机工程与应用》录用通知
择。由于rcsoccersim运行在Linux/Unix系统下,而Linux遵循之GPL3许可和RoboCup开放源码、共享资源的思路有极大的相通之处,因此国际上一般都是选择Linux系统作为开发平台。同时因为windows系列平台的易用性,也有极少数参赛队选择,如清华大学TsinghuAeolus4。考虑到有大量基于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指令之前发送到,否则就会浪费本周期机会;发送指令的时间又要足够的晚,这样才能在得到尽可能多信息的情况下,做出一个更准确的决策。那么,什么时候发送指令就成为问题的关键。