RoboCup3D服务器构建与实现原理技术总结 新
- 格式:doc
- 大小:103.50 KB
- 文档页数:8
Unity3D游戏开发之网络游戏服务器架构设计培训(如何做一名好主程)今天给大家讲一下如何做一个好的主程入手假如,我现在接手一个新项目,我的身份还是主程序。
在下属人员一一到位之前,在和制作人以及主策划充分沟通后,我需要先独自思考以下问题:1、服务器跑在什么样的操作系统环境下?2、采用哪几种语言开发?主要是什么?3、服务器和客户端以什么样的接口通讯?4、采用哪些第三方的类库?除了技术背景之外,考虑这些问题的时候一定要充分考虑项目需求和所能拥有的资源。
我觉得,先不要想一组需要几台机器各有什么功能这样的问题,也不要想需要多少个daemon进程。
假设就一台服务器,就一个进程,把所需要的资源往最小了考虑,把架构往最简单的方向想,直到发现,“哦,这么做无法满足策划要求的并发量”,再去修改设计方案。
操作系统:越单一越好。
虽然FreeBSD的网络性能更好、虽然Solaris非常稳定,但选什么就是什么,最好别混着来。
前端是FreeBSD,后端是Solaris,运营的人会苦死。
也不要瞧不起用Windows的人,用Windows照样也能支持一组一万人在线,总之,能满足策划需求,好招程序员,运营成本低是要点。
不同的操作系统有不同的特性,如果你真的对它们都很熟悉,那么必定能找到一个理由,一个足够充分的理由让你选择A而不是B而不是C。
但做决策的时候要注意不要因小失大。
Programming Language:传统来说,基本都是C/C++。
但是你也知道,这东西门槛很高,好的C/C++程序员很难招。
用Perl/Python/Lua行不行?当然可以。
但是纯脚本也不好,通常来说是混合着来。
你要明白哪些是关键部分,我是说执行次数最多的地方而不是说元宝,这些必须用性能高的语言实现(比如C/C++比如Java),其它像节日活动这样很久才执行一次的,随便吧。
脚本的好处是,可以快速搭原型。
所以,尽早的,在你做完基本的地图和战斗模块之后,立马跑机器人测试吞吐量。
第四章RoboCup3D仿真比赛中个体技术的设计在RoboCup3D仿真比赛中,11个球员为了完成赢得比赛的共同目标而互相合作。
两个球队之间的对抗实际上就是两个球队策略程序之间优劣的较量。
比赛的结果很大程度上是由球员所具备的技能来决定的。
仿真比赛客户端程序中,球员的技能实际上就是它所具备的能完成某个动作的能力,一个球员的行为特点也与它具备的技能有关,在多智能体系统中,单个智能体的技能对整个多智能体系统的性能有很大影响,体现在RoboCup3D中就是单个球员所具备的能力。
球员所具备的技能可以分解成许多基本的动作,一些高级的动作正是由一系列基本的动作所组成的,整个球队的策略都可以理解为单个球员技能的协调与合作。
球员的动作分为高层动作和中层动作以及底层动作[29]。
如图4.1所示,较高的动作都是通过调用一系列较低一层的动作来实现,最底层的动作实际上也就是最基本的指令(dash, kick, beam, say等),这些指令是能被服务器直接理解和接受的,每个球员根据当前的世界模型的状态来决定执行相应的技能动作。
而中层动作包括射门、守门、拦截、带球等。
高层动作一般是指由两个或两个以上的机器人通过相互配合完成的动作,如一射一传、二过一以及下底传中等[30-31]。
其中要注意的是,选择某个技能动作只是产生了一系列基本命令的集合而已,而服务器并不能保证一定可以执行这些指令集合。
比如有个球员要执行跑位的战术动作,但是它的体力值已经耗尽,而执行这个复合动作包含着dash这样的基本指令,根据Server的说明,执行dash动作需要消耗一定的体力值,所以只有当体力值大于dash所要求的才可以响应。
本章主要针对踢球、拦截、射门、守门、带球这几个动作进行分析讨论。
图4.1个体动作的层次关系4.1 踢球动作的设计踢球动作有一定的复杂性,首先需要弄清它的基本模型。
我们知道,球员的半径为0.22m,球的半径为0.111m,而踢球半径是0.04 m,直接加和就是0.371m,因此踢球时球员和球心平面距离的取值范围是0.32m到0.38m。
关于RoboCup3D仿真系统中守门员关键技术研究陈涛;陈业斌;张学峰【摘要】在RoboCup3D仿真系统中,运用扩展卡尔曼滤波处理仿真环境中的噪音干扰,完成对球的准确定位,为守门员的决策提供准确依据.守门员的决策结果主要包括扑球、跑位、主动出击等行为.通过开发一个GUI调试器来完成扑球动作的设计,根据场上球所处的位置信息设计守门员的跑位策略,并适时主动出击将球破坏掉.仿真实验结果表明,经过改进,守门员的防守能力得到加强,扑球成功率可达到90%以上.【期刊名称】《宿州学院学报》【年(卷),期】2014(029)003【总页数】5页(P78-81,85)【关键词】扩展卡尔曼滤波;扑球;定位;跑位【作者】陈涛;陈业斌;张学峰【作者单位】安徽工业大学计算机学院,安徽马鞍山,243032;安徽工业大学计算机学院,安徽马鞍山,243032;安徽工业大学计算机学院,安徽马鞍山,243032【正文语种】中文【中图分类】TP391.9RoboCup(机器人足球世界杯)是一个国际性的研究和教育组织,它通过提供一个标准问题来促进人工智能和智能机器人的研究[1]。
RoboCup3D仿真比赛采用软件尽可能地模拟真实世界中的足球比赛情况,其比赛服务器rcssserver3D是由RoboCup组委会开发和维护的机器人足球仿真平台,它是一个实时的机器人物理仿真器,包括多种传感器和执行器[2]。
最新的仿真比赛环境中,采用Aldebaran Robotics公司的Nao机器人作为仿真机器人模型。
在RoboCup3D仿真足球比赛中,守门员的作用随着server的不断完善而越来越重要。
在早期的server环境下,由于比赛场地设定较小,参赛球员少,射门成功率极高,射门成了进攻的重要手段。
面对较快的球速,守门员不能及时扑救,尽管当时一些3D队伍设置了守门员,但作用并不大,达不到预期的效果。
最新版本的rcssserver3D采用了更大尺寸的球场和新的Nao机器人模型,Nao模型的使用以及对机器人各个关节电机的执行能力加以限制,使得物理仿真更接近真实比赛,球速也接近真实的情况,这使得守门员的扑救更加有效。
Robocup3D仿真机器人截球技术的研究作者:姚千燕来源:《山东工业技术》2015年第11期摘要:在Robocup3D仿真机器人世界杯足球比赛中,仿真机器人球员技术动作设计的优劣在很大程度上决定了球队的强与弱,本文研究了Robocup3D仿真机器人截球技术,将BP神经网络技术应用到截球动作中,通过实验发现,采用该方法使得截球成功率大大提高。
关键词:Robocup3D;机器人;截球;BP神经网络0 引言机器人世界杯足球比赛简称Robocup,Robocup3D仿真比赛近似于人类足球比赛,克服了机器人硬件的多方面限制,解决了很多现阶段硬件无法实现的功能,所以对多智能体系统(MAS)和分布式人工智能(DAI)的理论研究具有深远的影响。
在Robocup3D仿真比赛系统中,每个机器人体系结构包括世界模型、通信、高层决策、动作模型等模块。
其中动作模型中截球技术的优劣对整个Robocup3D仿真比赛的结果具有重要的影响。
本文将仿真机器人截球技术分为两种情况,一种为远距离截球,另一种为近距离截球,将BP神经网络应用到远距离截球技术中,采用该方法缩短了截球时间,提高了截球成功率。
1 Robocup3D仿真系统简介1.1 Robocup3D仿真系统结构采用Client/Server方式设计RoboCup3D仿真机器人足球比赛系统,由监视器和客户端、服务器端组成该系统。
对真实的物理三维世界的模拟可以由Robocup3D仿真环境实现,该系统主要对服务器的通信、基本动作及其决策、对球员的感知等基本功能模块进行了研究。
图1为仿真系统结构示意图。
1.2 机器人截球技术Robocup3D截球技术的研究目标是要确定球员最佳截球点,无论球距离自身距离为多远,球员都可以拦截到球。
最佳截球点由仿真足球的当前位置信息以及速度信息确定,接下来使球员以最快的速度运动到该最佳截球点,从而在比赛中获得对球的掌控权。
通过一些基本动作指令,例如转身指令、加速指令等,在实时分析球场信息之后,使得球员以最快的速度到达改最佳截球点。
《2013中国机器人大赛暨RoboCup公开赛》总结中国自动化学会机器人竞赛工作委员会2013 – 11 – 012013年10月18日-20日,由中国自动化学会机器人竞赛工作委员会、RoboCup中国委员会、合肥市人民政府和科技部高技术研究发展中心主办,合肥市科技局和安徽建筑大学承办的《2013中国机器人大赛暨RoboCup公开赛》在安徽合肥成功举行。
共有200多所学校、2400多支队伍和4200多人参加了本次大赛活动。
本次比赛包括了如下11项比赛大类:(一)RoboCup足球机器人比赛1、仿真组2、小型组3、中型组4、标准平台组5、类人组(二)RoboCup救援组比赛1、仿真组2、机器人组(三)RoboCup家庭组比赛(四)FIRA足球机器人比赛1、仿真组2、小型组(五)水中机器人比赛1、机器人水球2、机器人水底采矿3、机器人水中巡游(六)舞蹈机器人比赛(七)双足竞步机器人比赛(八)微软足球机器人仿真比赛(九)机器人武术擂台赛(十)机器人游中国比赛(十一)其它1、助老机器人比赛2、家庭服务机器人比赛3、家庭机器人仿真比赛4、医疗与服务机器人比赛5、机器人智能搬运比赛6、机器人创新比赛7、仿人机器人竞速比赛8、采摘机器人比赛本次比赛是历届比赛中比赛种类最多和规模最大的一次。
本次赛事包括了两个比赛:一个是2013中国机器人大赛,它既包括如RoboCup和FIRA等国际上的标准比赛项目,同时也包括了如水中机器人比赛、舞蹈机器人比赛、双足竞步机器人比赛、机器人武术擂台赛、机器人游中国、机器人智能搬运、仿人机器人竞速比赛、采摘机器人以及医疗、助老、服务机器人等自创的比赛项目。
另一个是2013 RoboCup 中国公开赛,它是RoboCup 国际赛事的一个组成部分。
10月19日上午,本次大赛隆重开幕。
中国自动化学会理事长戴汝为院士、中国自动化学会机器人竞赛工作委员会顾问中南大学蔡自兴教授、中国自动化学会机器人竞赛工作委员会名誉主任孙增圻教授,中国自动化学会机器人竞赛工作委员会顾问中国科技大学王煦法教授、中国自动化学会机器人竞赛工作委员会副主任原魁研究员、陈小平教授、佟国锋教授、陈万米教授、谢广明教授、副主任兼秘书长李实博士,合肥副市长吴建国、合肥市科技局副局长陈明义、安徽建筑大学校长方潜生教授、安徽建筑大学电子与信息工程学院党委书记张润梅教授等专家和领导出席了开幕式。
收稿日期:2005-01-24 第23卷 第4期计 算 机 仿 真2006年4月 文章编号:1006-9348(2006)04-0128-04RoboCup 小型机器人仿真系统孙鹏,陈小平(中国科学技术大学计算机科学与技术系,安徽合肥230027)摘要:通过对机器人硬件进行仿真,可以有效地提高控制软件的开发效率,并降低硬件的损耗。
该文实现了一个RoboCup 小型机器人仿真系统,该系统的仿真对象是机器人足球比赛中的所有硬件要素,包括机器人的运动学特性、击球和带球装置、视觉系统的噪声和盲区、以及无线通讯系统的延迟等。
该文还分析了真实系统中各仿真对象的物理特性及其实现难点,给出了仿真系统的软件架构和接口定义,描述了各仿真功能的具体实现。
通过分析仿真结果表明此系统达到了比较理想的效果,可以为其它相似系统提供有益的参考。
关键词:计算机仿真;多机器人系统;机器人足球中图分类号:TP242 文献标识码:ARoboCup Sma ll S i ze Robot S i m ul a ti on SystemS UN Peng,CHEN Xiao -Ping(Dep t .Computer Sci .&Tech .,University of Sci .&Tech .of China,Hefei Anhui,230027,China )ABSTRACT:A si m ulati on syste m of r obot hard ware can s peed up the devel opment of contr ol s oft w are and reduce hard ware l oss .This paper p resents a si m ulati on syste m of RoboCup s mall size r obot .It is designed t o si m ulate allhard ware parts of the game,such as dyna m ic model of the r obot,kicking and dribbling device,noise and blind area of the visi on syste m,and latency of the wireless syste m,etc .This paper als o discusses the physical feature of each real part,s oft w are architecture,interface definiti on and i m p le mentati on of each functi on .Result shows that it has very good perf or mance and can offer reference for other si m ilar syste m s .KE YWO R D S:Computer si m ulati on;M ulti -r obot syste m;Robot s occer1 引言RoboCup [1]机器人足球是人工智能与自主机器人研究的一个新领域。
RoboCup3D 人形仿真新手指南allen 2010-09-01本文主要包括三个方面:(1)ROBOCUP 3D 仿真环境的建立,即SERVER的安装(2)编译SEU-SPARK 源码生成可执行文件(3)开始一场比赛并使用TOOKIT 观看LOG。
第一节建立ROBOCUP 3D 仿真环境1.1 安装编译环境和依赖库本次校赛的操作系统采用Ubuntu10.04,使用CD安装后需安装相应的编译环境和依赖库。
1)安装编译环境等$sudo apt-get install build-essential g++ ruby1.8 ruby1.8-dev python2.6-dev cmake2)安装依赖库$sudo apt-get install libboost1.40-all-dev libfreetype6-dev libdevil-dev libode-dev libsdl-dev freeglut3-dev libtiff4-dev libslang2-dev注意:SERVER 需要安装的依赖库有SLANG、BOOST、FREEGLUT、ODE、DEVIL 和SDL1.2 安装3d SERVER此处可以直接执行install.sh脚本进行安装。
由于校赛server和最新的server有所不同,需打上校赛补丁$ patch -p1<xiaosai_patch.patch1)安装simspark$ cd simspark*$ mkdir build$ cd build$ cmake ..$ make$ sudo make install2)安装rcssserver$ cd rcssserver*$ mkdir build$ cd build$ cmake ..$ make$ sudo make install重启电脑打开终端输入rcsoccersim3d 将看到一个球场和一个球表示仿真环境已经安装成功(如图一).注意:如果安装过程中有错误提示,根据相应提示找到缺少或需重新安装的软件包。
RoboCup3D服务器构建与实现原理技术总结大纲第一部分Simspark仿真平台构建介绍第一章系统概览第二章Zeitgeist 应用框架介绍2.1 Zeitgeist 基本要素2.2 Zeitgeist Class Object System2.3 Reflective Factory with Object Hierarchy工厂模式与的对象框架结构第三章仿真器主要的Components和控制流(RoboCup 3D仿真环境介绍)3.1 并行Agent离散事件仿真系统—SPADES3.2 事件处理(基于事件的仿真)3.3 Game Control Server第四章物理仿真4.1 物理引擎介绍4.2 物理仿真基本概念4.3 关节与铰链式身体Articulated Bodies4.4 Agents作为仿真对象第五章场景描述语言5.1 RubySceneGraph Language5.2 文件结构5.3 结点表示5.4 Scene Graph模块和方法访问第二部分Simspark仿真平台源码实现部分介绍第1章系统概览仿真3D所使用的是Simspark平台,它是2007年才开始使用的新的仿真平台,主要的成分是仿真引擎、对象/内存管理以及物理引擎,它们之间存在着一定的协同作用。
仿真引擎是将平台构成的其他部分连接到一起,并在仿真的主循环中增加仿真时间器。
许多模块以插件形式嵌入到仿真引擎中,以此来处理包括与机器人智能体的网络连接与仿真过程可视化的实现。
整个系统的体系结构还包括控制信号流与数据流。
类对象的创建与销毁是由Zeitgeist 的框架结构来实现的。
它是系统的核心组件,并且提供到所有仿真器的servers的通路。
Zeitgeist的实现是严格的使用了面向对象的程序设计语言—C++,并且在系统运行时,类的存储使用了树的数据结构。
Zeitgeist使用了以下三种方法对对象进行管理:1.使用对象来描绘当时的仿真场景。
2.利用对象将仿真器中各种功能各自封装,形成Servers。
3.利用工厂模式来创建新的对象,并且是以字符串的形式。
这一特点也提高了仿真器的灵活性与可扩展性,对其进行改动时不需要对simulation code进行重新编译,因为使用了Ruby Script Language,它是一种面向对象的脚本语言。
物理引擎是Simspark第二个重要的组件,使用了ODE—Open Dynamics Engine,进行真实物理动力学仿真,它是一个开放式的模拟带关节的刚体动力学模型库。
物理引擎主要是根据一个物理模型来负责对仿真对象的位置和速率进行不断更新。
第2章Zeitgeist 应用框架介绍1.1 Zeitgeist 基本要素Zeitgeist能对各种对象和组件进行管理,并使用同一的方法来处理数据对象和一些功能性的组件。
所有被管理的对象都是从class Leaf派生而来。
对象都是被存储在树形的数据结构中,并且是通过string表达式来使用,这也是对文件系统的一种模拟,它所表示的是对象所在树形结构中的路径。
对象又是如何在程序中进行存储的呢?对象在对其结点名进行存储的时候,还涉及到了另外两个信息,一个是其父结点名的引用,一个是存在的子结点名的引用。
对象以此种方式存储可以带来很大的好处,它使得平台在运行时刻能够对对象进行更加灵活的定位和引用:当其接受到一串格式正确的路径表达式时,Zeitgeist能够对其进行检索,并寻找是否有与之相匹配的实例对象。
如图1-1所示是关于Zeitgeist的基本类图。
在树中,所有与物理方面仿真有关的对象都被存储在一个叫“scenenode”的特殊结点下。
从scenenode开始的子树被称为scene graph(场景图),这是将其存储结构形象化。
在场景图中,一些特殊的对象集表示他们之间相互的联系,这也使得对象能够自动的关注一个所给的实体的几何学与物理学实例之间正确的相互作用。
当在scene graph中移动结点时,子结点能够维持与父结点的相对位置,这一特性被用来管理对象集。
Zeitgeist还有一个重要的基本要素便是pathname space mapping。
它是出现在QNX 操作系统里,并且被用来实现QNX资源的管理。
资源在此应用框架中利用所给的字符表达式通过路径进行编址,运用这个概念,应用框架不仅能存储和使用这些仿真实体数据,还能够使系统的组件功能化。
2.2 Zeitgeist Class Object System在loadable modules与interface to scripting language的支持下,object factories能够在无需重新编译下对系统进行扩展。
object factories与pathname space mapping相结合能够被用来创建那些在仿真系统编译时所发现的未知的类对象。
这一特性是十分有用的,因为传统的增加功能到系统是通过插件实现的。
它能够获得一般已实现的类的实例作为插件取道配置脚本(piugins via configuration scripts),这些实例之后将被安装作为servers。
(内容未安全了解,待写)2.3工厂模式的对象框架结构这节所说的主要内容是关于上一节的,将介绍到Reflective Factory,它是实现Zeitgeist Class Object System的理论基础。
工厂模式,又叫做类对象模式,是一种程序设计的方法,主要是为创建对象提供过渡接口,以便将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。
这便允许系统在运行时对对象进行创建,对应用程序以后的扩展起到至关重要的作用。
具体内容介绍可以阅读《3d文档编写参考资料》里的《深入浅出设计模式》PDF文档。
主要程序的实现选用的是C++,较其他语言来说,比如,C、Smalltalk、Ruby,C++提供了集成化的外部类库,很方便使用。
并且在之后要介绍的SPADES中间系统它也是只提供了C++接口。
第三章仿真器主要的Components和控制流3.1并行Agent离散事件仿真系统—SPADES3.1.1 SPADES介绍SPADES是仿真器的主要的也是基本的组件,它与仿真系统的其他组成部分都是紧密相连的。
3D足球仿真系统包含3个重要的部分:server、monitor和agent。
除了要设计的agent,对server和monitor也要熟悉,如图3-1所示。
由参赛队完成由SPADES实现rcssserver3D图3-1RoboCup3D仿真系统组件首先先介绍一下SPADES,并行agent离散事件仿真系统(The System for Parallel Agent Discrete Event Simulation ,简称SPADES)是基于agent(agent)的分布式仿真的中间件系统,其主要目的是为运行多计算机仿真系统提供一个一般性的平台。
SPADES使得基于agent的仿真变得容易。
Agent是SPADES的主要特色,这里的agent我们只是简单指一个计算实体,它从模拟世界接收感觉,经过一定的计算然后返回将要执行的动作,SPADES明确地跟踪感知、思考、动作的固有反应时间,并在仿真中反映出来。
SPADES主要的几个特点:●agent以执行为基础——支持实现感觉,思考和动作。
●分布式计算——支持在多台计算机上运行agent程序。
●结果不受网络延时或者机器间负载不同的影响——SPADES确保时间按照恰当的顺序进行。
●agent可独立地从编程语言编程——SPADES不要求agents用某一种特定的编程语言编写,唯一的要求是agent的程序能够被通道读和写。
●动作不需要同步——agent的动作可以在仿真的不同时间执行。
SPADES又提供了什么?SPADES是一个仿真中间件,它不被约束于某一特定领域的仿真。
为了产生一个完整的仿真,需要给SPADES加上两块:agent(计算实体),用来感知、思考和行动;世界模型,用于模拟真实世界,并负责agent之间的交互。
SPADES提供下列各项来辅助构造一个仿真:·提取一个基于事件的仿真,提供给世界模型一个仿真包含按时间被接收的事件,这叫作离散事件仿真。
世界模型能创作仿真事件和当事件被实现时对其做任意的处理(比如,把它们的作用加在世界上)。
·提取感觉、动作提供给agent,agent只需从一个通道读取数据(以世界模型规定的格式)然后通过另一通道发送动作。
Agent除了可能需要限制计算量外,不需要做网络或外在的时间管理工作。
·响应一个感知时,SPADES跟踪agents计算的数量,这么做是为了仿真这个事实:使用越多计算的agent响应的越慢。
·所有的网络通讯被操纵,世界模型和agent都不需要创建套接字、知道网络地址或做其它任何的网络控制。
·所有关于机器间分配控制所需的论证SPADES已做完。
;在机器间分配一个仿真,并要正确(指不违反时间之间的因果关系)、有效率地使用可用的资源是一个棘手的问题。
基于SPADES的仿真的结果不受所使用机器数目的变化、网络负载或机器负载的影响。
世界模型和agents的设计者可以在很大程度上忽略分布的存在。
·提供多样的日志工具。
错误记录、动作执行的轨迹、仿真状态的记录都能够由SPADES完成。
3.1.2 SPADES组织结构图3-2 SPADES结构图SPADES结构是c/s结构(图3-2)。
SimulationEngine和Communication Server作为SPADES的一部分提供;当使用者建立了agent和World Model就可以运行在前者上了。
Simulation Engine是允许在其上建立特殊World Model的一般软件。
它运行在server端,并通过Communication Server为agent和server提供交互和通讯。
Server的World Model必须运行在同一台机器上。
作为client分布的是agent和Communication Server。
Communication Server必须出现在所有client的机器上来提供agent和Simulation Engine的通讯。
它从agent接收信息并发送到server 。
agent也运行在client端。
SPADES 的使用者为一个特殊的环境创建一个仿真模型,即世界模型。
模拟引擎是一个库,世界模型必须连接到库上,以使模拟引擎和世界模型存在与同样的进程中。
世界模型必须提供这样的功能比如,把世界状态推进到一个特定的时间、识别一个事件(即随着事件的发生响应改变世界的状态)。