FIRA和RoboCup两大机器人足球赛的区别
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Robocup2D入门介绍
发布时间:2010-07-22 浏览次数:
一机器人足球简介
机器人足球赛,顾名思义,就是制造和训练机器人进行足球比赛。
通过这种方式来提高人工智能领域、机器人领域的研究水平。
从1997年起,每年举办一界机器人世界杯足球赛。
机器人足球赛涉及人工智能、机器人学、通讯、传感、精密机械和仿生材料等诸多领域的前沿研究和技术集成,实际上是高技术的对抗赛。
国际上最具影响的FIRA和RoboCup两大世界杯机器人足球赛,有严格的比赛规则,融趣味性、观赏性、科普性为一体。
机器人足球赛从一个侧面反映了一个国家信息与自动化领域基础研究和高技术发展的水平。
RoboCup的最终目标是:到21世纪中叶,一支完全自治的人形机器人足球队应该能在遵循国际足联正式规则的比赛中,战胜最近的人类世界杯冠军队。
目前,有关机器人足球比赛的国际组织有两个:FIRA组织和Robocup联合会。
FIRA(Federation of International Robot-Soccer association),它是由韩国人创立的组织,从1997年开始,FIRA每年都举行一次机器人足球世界杯决赛(FIRA Robot_Soccer World Cup),简称FIRA RWC。
FIRA的比赛项目主要有:超微机器人足球赛、单微机器人足球赛、微型机器人足球赛、小型机器人足球赛、自主式机器人足球赛、拟人式机器人足球赛、
仿真机器人。
RoboCup(Robot World Cup),即机器人世界杯足球锦标赛。
它是国际上一项为提高相关领域的教育和研究水平而举行的大型比赛和学术活动,通过提供一个标准任务来促进分布式人工智能、智能机器人技术、及其相关领域的研究训练和制造机器人进行足球赛,是当前人工智能和机器人领域的研究热点之一。
机器人足球比赛的设想首先是由加拿大不列颠哥伦比亚大学的教授AlanMackworth 在1992 年的论文《On Seeing Robots》中提出的。
同年10 月,在东京举行的关于人工智能领域重大挑战的研讨会中,与会的研究人员讨论了人工智能领域中具有挑战性的问题,同时对制造和训练机器人进行足球比赛以促进相关领域研究的问题进行了探讨。
在一些学者的积极倡导(如美国CMU 的ManuelaM. Veloso 教授等),以及SONY 公司的全力支持下,RoboCup 世界联合会于1996年宣告成立,并于同年在日本举行了一次表演赛,获得了很大地成功。
举办机器人世界杯足球赛的目的是为了促进分布式人工智能研究与教育的发展。
通过提供一个标准任务,使得研究人员利用各种技术,获得更好的解决方案,从而有效促进各领域的发展。
为了让一个机器人组成的足球队更接近一个人类的足球队,各种技术必须完美的结合在一起。
涉及的研究领域包括:智能机器人系统、多智能体系统、实时模式识别与行为系统、智能体结构设计、实时规划和推理、基于网络的三维图形交互、传感器技术等。
研究目标是计划经过五十年左右的研究,使机器人足球队能战胜人类足球冠军队。
Robocup的比赛项目主要有:仿真组比赛、小型机器人比赛、整队小型机器人比赛(每队包括11个机器人)、中型机器人比赛、Sony有腿机器人比赛 (由Sony赞助) 、人形机器人比赛(从2002年开始) 、遥控机器人比赛、RoboCup评论员系统演示。
RoboCup 仿真组比赛是各种比赛中参赛队数目最多的一种。
由于仿真环境
与人类足球比赛的环境相似,比赛队员的仿真模型与实际队员也很接近,这里
可以实现机器人比赛中由于机器人硬件的不足而放弃的规则,故其对于分布式人工智能理论的研究具有重要意义。
两项赛事各有特点,其中最明显的区别在于两者的体系结构不同,FIRA是集中控制,在比赛中,所有的机器人都是由统一的控制软件做统一的规划,调度和控制,总体上,一个球队就象是一个完整的人,由一个大脑指挥它的四肢运动。
而Robocup是分布式,每一个机器人都有一个独立的Client程序,可以把Client程序看成是一个独立机器人的大脑,而机器人只是一个执行机构,每个机器人之间
都独立规划、独立调度和独立控制,而且相互之间的通信也是受限制的不完全通信,因此,在整体上,这样的系统结构在、就象在真实环境中的机器人足球队一样。
二 Robocup仿真比赛环境
比赛采用Client/Server 方式,由RoboCup 联合会提供标的SoccerServer系统,参赛队编写各自的Client 程序,模拟实际足球队员进行比赛。
SoccerServer是一个允许竞赛者使用各种程序语言进行仿真足球比赛的系统。
它提供了一个虚拟场地,并对比赛双方的全部队员和足球的状态进行仿真。
Client,相当于球员的大脑,指挥球员的运动。
于比赛是以Client/Server 方式进行的,所以对球队的开发编译没有任何限制。
仅要求球队的开发工具提供通过UDP/IP 连接的Client/Server 支持,这是因为Server 和每个Client 之间的通讯都是通过UDP/IP 端口实现的。
每个Client 都是独立的进程,通过给定的端口和Server 连接。
一支球队可以有最多11 个Client(或者说是球员),也就是说竞赛者同时运行与比赛球员数目相等的Client。
当球员和Server 连接上后,所有的信息都通过这个端口传递。
球员发送他们下一步要做的动作请求给Server(如踢球,转身等)。
Server 接收到这些消息后,执行对应指令,并相应的更新SoccerServer 仿真环境。
另一方面,Server 向所有的球员提供感知信息(如:关于足球,球门和其他球员位置的可视信息)。
每个Client 模块只允许控制一名球员,Client 之间不允许直接进行通信,Client 之间的通讯必须通过SoccerServer 来进行,因此通讯带宽受到一定的限制。
SoccerServer 包含两个程序: SoccerServer 和SoccerMonitor。
SoccerServer 的工作是仿真足球和队员的状态、与Client 进行通信、按照一定的规则控制游戏的进程(裁判功能)。
SoccerMonitor 是一个可视化的工具,负责利用Windows(X window 或Windows 9X/2K)系统显示虚拟场地。
在SoccerMonitor 上显示的信息包括比分,球队名字,所有球员和足球的位置。
SoccerMonitor 也提供了一个很简单的Server 接口。
如:当两支球队都连接上后,可以点击在SoccerMonitor 上的“Kick-Off”按钮开始比赛。
当然,在Server 上进行比赛,SoccerMonitor 并不是必需的。
然而,如果有需要的话,可以同时与多个SoccerMonitor 相连,在多个显示器上同时显示比赛的情况。
三 Linux简介
Linux(发音为LIH-nuks)是一种免费发布的开放源代码操作系统。
也就是说,每个人都可以获得Linux的源代码,但这个操作系统有些打包的发行版需要付费。
Linux几乎可以在所有已知的处理器上运行,并且能做各种应用�D�D从联网和软件开发到运行消费类应用程序,无所不能。
喜欢企鹅(开发者Linus Torvalds选的吉祥物)的人认为Linux可靠、安全,肯定是其他操作系统高质量、低成本的替代品。
我们试验平台就是在Linux平台下开发的。
我们实验室用的就是SuSe Linux。
有时候要安装程序,需要读程序的readme文件。
安装时常用命令如下(具体使用时请按照软件的readme 进行):password (更改用户密码),man(联机帮助),ls(列出文件),cd(更改目录),cp(复制文件),mv(移动文件),mkdir(建立目录),rmdir(删除目录),chmod(文件权限设定),tar(文件解压缩)。
编译:gmake depend make configue
./configue(符号“./”表示在本目录下运行)
运行: start
*/
常用工具应该了解: kdevelop,g++等。
四建立简单队伍
我校使用的是UVA底层,从网上下载trilearn_base_sources-3.3.tar.gz解压到/root目录下打开trilearn_base_sources-3.3\src\PlayerTeams.cpp 高层就在这里实现的。
你可以在里面进行高层决策。
Player::deMeer5( )的实现原理:
- if ball is kickable
kick ball to goal (random corner of goal)
- else if i am fastest player to ball
intercept the ball
- else
move to strategic position based on your home position and pos ball 由于守门员守门员,在整个球队中占有重要的地位。
对守门员策略的介绍,我们也分为三个方面:守门员可以做的动作、守门员的决策过程、守门员的决策依据和算法。
在Player::deMeer5_goalie( )中单写。
UVA2000年的版本在高层决策上使用的是已公布的FCP的策略,其中并不涉及复杂的学习策略,而是用简单的人工编码来实现。
既使这样,其球队实力也不可低估,在与某些学习型球队对抗时,往往仍可取得较好的战绩。
所以,可以用它来作为我们平时训练的对手。
deMeer5作为一般球员的策略,采用的是能踢则踢,不能踢则防的简单策略。
大家都学过有限自动机。
在deMeer5中,也是利用这一原理,将球进门作为最终状态,如果球没有进门,deMeer5会一直寻找可能实现这一最终状态的机会,并不断的尝试,直至达到终态为止。
所以从这个角度上来说deMeer5的策略是简单的。
作为球队中的特例,守门员使用的是单独的策略deMeer5_goalie。
首先,介绍一下本方采用的4-3-3阵型,基准位置在formation.conf中设定。
比赛中,队员会不断的判断是否处于可踢的状态,如果不可踢,则就会结合自己在阵形中的位置和当前状态,来确定自己的站位。
这样在大多数的情况下,可以知道己方球员的大致位置,而不必局限于自己的视觉。
当然,这种方法在某些情况下会造成体力的损失。
这在和强队的比赛中是极为不利的。
这就要从底层去修改。
其次,由于在比赛中会有进球,每一次开球实际上就相当于一个新的开始,即状态机又回到了初始状态。
这样的好处是,球员踢得不好,不会有心理压力。
但这也给我们带来了一个问题,就是当在对手领先的情况下,我们要采取一套与一般状态下不同的策略,往往偏重于防守。
就需要额外的编码了。
deMeer5()的优点是决策速度快,这是由其是手工编码而决定的。
然而,由于其没有对以往比赛的记忆功能,所以无法总结以往的比赛经验,只能通过人来间接的总结,对编码人员的足球知识或经验是一个挑战。
同时,由于其没有灵活的转换机制,所以一旦被学习型的对手掌握了它的策略,就只能处于招架之地。
对其改进方向,大致有两个,一个是在总结比赛经验的基础上,通过手工编码对其在处理某些情况下的功能有所加强,进一步细化各种角色的地位。
另一种方法是在决策过程中加入学习的算法,将通过离线学习总结出的参数加入决策过程,或是对不同的对手采用不同的决策参数。
经过改进你可以在看看效果了。
解压rcsoccersim-9.3.7.tar.gz到/root目录中,在终端中打开server:(1) ./configure (2)make 若显示美错误就编译成功了。
打开终端:(1)cd
/root/rcsoccersim-9.3.7/rcssserver/src (2)./rcssserver 新建另外一个终端打开monitor:(1)cd /root/rcsoccersim-9.3.7/rcssmonitor/src (2)./rcssmonitor
上两个球队(./start.sh)详见每个球队的readme。
如你对此非常感兴趣,你可以看UVA2003简介,manual英文版,trilearn_2002_html那里会有更详细的介绍。
然后看BasicPlayer.h,Player.h,PlayerSettings.h,SoccerTypes.h,WorldModel.h。
五总结
以上只是浅显的介绍,毕竟RoboCup是AI科技的前沿,要想更加深入的进行研究,你须好好学习考上研究生,博士为AI作出贡献。
目前只能借这个机会能学到在大学书本上学不到的知识(Linux系统使用,shell脚本编程,kdevelop下c++编程等),把你学到的理论转化为实践(用C++编程写真正的程序,锻炼自己的实际动手能力。