第2章 server manual.docx

上传人:b****4 文档编号:24651309 上传时间:2023-05-29 格式:DOCX 页数:26 大小:183.30KB
下载 相关 举报
第2章 server manual.docx_第1页
第1页 / 共26页
第2章 server manual.docx_第2页
第2页 / 共26页
第2章 server manual.docx_第3页
第3页 / 共26页
第2章 server manual.docx_第4页
第4页 / 共26页
第2章 server manual.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

第2章 server manual.docx

《第2章 server manual.docx》由会员分享,可在线阅读,更多相关《第2章 server manual.docx(26页珍藏版)》请在冰豆网上搜索。

第2章 server manual.docx

第2章servermanual

第二章SoccerServer

机器人足球世界杯比赛(Robocup)仿真组比赛是在一个标准的计算机环境内进行的。

比赛规则基本上与国际足球联合会的比赛规则一致,对于某些特殊的部分,在手册第二章会有详细论述。

比赛的方式是由Robocup委员会提供标准的Soccerserver系统,各参赛队编写各自的CLIENT程序,模拟实际足球队员参加比赛。

Soccerserver是一个允许竞赛者使用各种程序语言进行仿真足球比赛的系统。

比赛以Client/Server方式进行。

Server,即Soccerserver,提供了一个虚拟场地,并对比赛双方的全部队员和足球的移动进行仿真。

Client,相当于球员的大脑,指挥球员的运动。

Server和Client之间的通信是通过UDP/IP协议进行的。

所以,竞赛者可以使用支持UDP/IP的任何程序系统。

Soccerserver包含两个程序:

Soccerserver和Soccermonitor。

Soccerserver的工作是仿真足球和队员的移动、与Client进行通信、按照一定的规则控制游戏的进程。

Soccermonitor则负责利用Xwindow(或windows95)系统在server中显示虚拟场地。

server可以同时与多个Soccermonitor相连。

因此,我们可以在多个显示器上同时显示比赛的情况。

Client与Server之间都是通过UDP/IP协议进行信息交互的。

通过这种方式,Client发送指令去控制相应的队员,同时从Server端接受队员的传感器传回的信息。

每个Client模块只允许控制一名球员。

故竞赛者必须同时运行与比赛球员数目相等的client。

Client之间的通讯必须通过Soccerserver来进行。

Soccerserver的一个目标就是对多智能体系统进行评价,而智能体之间的通讯效率是一个重要标准。

竞赛者必须在此要求下实现对多个智能体的控制。

2.1比赛过程及规则

2.1.1Server的获取和安装

Soccerserver的源文件可以从如下地址中获得:

目前,在网上可以找到Soccerserver的UNIX和Windows95两个版本,都是源码,分别需要利用GCC和VC++5.0编译成可执行代码。

有关编译过程可参考Soccerserver的Readme文件。

本组委会提供全部有关的文件,包括源代码和编译好的可执行代码。

2.1.2整场比赛的过程

由Soccerserver控制的比赛过程可分为如下步骤:

1两队的全部队员通过init命令与Soccerserver一一连接。

2当全部队员都准备好时,比赛裁判(commissary)用鼠标点取Soccerserver的kick-off按钮,上半场比赛开始。

3上半场比赛为5分钟。

当上半场比赛结束时,Soccerserver暂停比赛。

4中场休息为5分钟。

在此期间,竞赛者可以修改Client程序。

5在下半场比赛开始之前,每个Client需要使用reconnect命令与Soccerserver重新进行连接。

6当全部Client准备就绪时,裁判(commissary)点取kick-off按钮,开始下半场比赛。

7下半场结束时,server自动停止比赛。

8如果比赛结果为平局,加时赛开始。

加时赛采用金球法,即任一方球队进球,比赛立即结束,进球方获胜。

2.1.3Soccerserver控制的比赛规则:

1进球(Goal)

当进球时,裁判(referee)通过向全部Client发送广播式消息宣布进球。

同时它登记比分、暂停比赛5秒钟、将球移回中点、并且将比赛模式切换为开球模式(kick-off)。

当裁判暂停比赛时,球员必须回到自己半场,可以使用move命令。

如果某个球员仍在对方半场,裁判(referee)会自动将此球员移回到自己半场,放置在随机位置。

2开球(kick-off)

开球时全部球员必须在自己半场。

如果某个球员仍在对方半场,裁判(referee)会将此球员移回到自己半场,放置在随机位置。

3出界(OutofField)

当球出界时,裁判(referee)将球移到一个合适位置(边线、角球区或罚球区),并将比赛模式相应的切换为:

边界球(kick_in)、角球(corner_kick)或球门球(goal_kick)。

发角球时,裁判(referee)将球放置在角内(1m,1m)处。

4清场(Clearance)

当守门员扑球后,或当前模式为:

开球(kick_off),边线发球(throw_in),角球(corner_kick),球门球(goal_kick),或越位(offside)时,裁判(referee)将防守队员移出以球为圆心,半径为9.15的圆形区域,被移出的队员随机放置在圆形区域的周围。

5比赛模式控制(Play_modeControl)

当比赛模式为开球(kick_off)、边线发球(throw_in)、角球(corner_kick)、球门球(goal_kick)时,在球接收到kick命令开始移动之后,裁判(referee)将模式切换到正常进行模式(play_on)。

6中场休息时间和终场时间(HalftimeandTimeUp)

当上半场和下半场结束时,裁判(referee)自动终止比赛。

每半场缺省的比赛时间为3000个仿真周期,大约5分钟。

如果下半场结束时为平局,会进行加时赛,直到一方进球为止。

2.1.4需要人判断的规则

某些故意犯规动作,如故意阻挡等,很难由裁判(referee)自动判断,因为它与球员的意图有关。

因此,Soccerserver为通过人来判断这些犯规动作提供了一种方式。

下面简单介绍一下此类犯规动作:

1故意包围足球(Surroudingtheball)

2故意用多名队员阻挡球(Blockingthegoalwithtoomanyplayers)

3故意持球(Notputtingtheballintoplay)

4故意阻挡其他队员的移动(Intentionallyblockingthemovementofotherplayers)

5守门员滥用“catch”命令,守门员不允许在罚球区内重复使用kick和catch命令

6不允许向server发送过多命令,每个Client在一个仿真周期内不能发送超过3或4个命令。

过多的命令会使server阻塞。

2.2Soccerserver

主要介绍了SoccerServer的各个组成部分(对象),包括场地以及球场上面的对象以及球员相关的各种模型。

2.2.1球场上的对象

图2.1是用UML实例图表示了robocup仿真组中的对象。

Figure2.1:

UMLdiagramoftheobjectsinthesimulation

2.2.2场地和球员

仿真环境中足球场和其中的全部对象都是二维的。

任何对象都没有高度的概念。

比赛场地的尺寸为field_length

field_width,球门的宽度为goal_width,缺省值为105(m)

68(m)(单位是没有意义的),球门宽度为14.64(m),是实际的两倍。

实验证明,对于正常的宽度是很难进球的。

球员和球都使用圆圈来表示。

动作模型是离散的(在一个仿真周期结束时全部的动作被执行一次)。

每个仿真周期时间的长短是由参数simulator_step决定的。

在每个仿真周期结束前,Soccerserver接收所有client的命令,并执行命令,并利用当前场上对象(球员和球)的位置和速度信息计算出全部对象新的位置和速度信息。

2.2.3对象的运动模型

在仿真周期内,对象的移动按如下公式进行计算:

)=(

)+(

):

加速

)=(

)+(

):

移动

)=

衰减速率

)=(

):

复位加速度

其中,(

)和(

)分别表示t时刻物体的位置和速度。

Decay是一个参数,分别由ball-decay和player-decay控制。

)表示对象在t时刻的加速度,可以通过dash(针对队员)和kick(针对足球)的Power参数计算得到:

)=Power

其中

表示对象在t时刻的前进方向。

如果对象为球员,他的方向通过由下式计算:

Moment是turn命令的参数。

对于足球,其方向的计算方法是:

其中

表示球和踢球队员当前的方向,而Direction是kick命令中第二个参数。

)表示是在t+1时刻的加速度,在现在的Server版本中复位为0。

另外加入以下2种因素:

2.2.3.1碰撞

如果在某个仿真周期结束时,两个对象发生重叠,则server自动将他们向后移动,直到不再重叠为止,然后将各自速度乘以-0.1。

需要说明的是,只要在仿真周期结束时球和某队员不发生重叠,那么球就可以直接穿过该队员。

2.2.3.2风和环境干扰

为了反映出实际比赛中球以及球员运动的不确定性,Soccerserver在球与球员的移动及命令的参数中加入了干扰。

首先考虑移动,干扰是以如下方式加入的:

)=(

)+(

)+(

为属于

的随机数。

rmax的定义为:

rmax

rand是player-rand和ball-rand的参数。

turn命令中Power参数的干扰加入方式为:

2.2.4球员的感知信息

球员可以从server接受三种不同的感知信息:

听觉、视觉和身体状态信息。

听觉感知检测裁判,教练和其他球员发送的消息。

视觉感知检测场上的可视信息,如球员当前可视范围内的对象的距离和方向。

视觉信息很象一个传感器,可以“见到”在球员身后的附近对象。

身体状态信息检测球员的当前物理状态,如球员自身的体力stamina,速度speed和头颈角度neckangle。

2.4.4.1听觉模型

当某球员或裁判(referee)“说”消息(sayMessage)时,附近的其他球员包括对方球员可以立即听到消息,没有延迟。

他们以(hearTimeSender"Message")的形式听到消息。

其中:

Time:

前的仿真周期。

Sender:

如果是其他球员发送的消息,那么是发送者的相当方向(Direction),否则就是下面的选项:

●self:

发送者是自己本人。

●referee:

裁判是发送者。

●online_coach_left或者online_coach_ringt:

发送者是在线教练。

Message:

消息内容。

最长可以是say_msg_size个字节。

裁判发送的消息可以是:

before_kick_off、kick_off_l、kick_off_r、kick_in_l、kick_in_r、corner_kick_l、corner_kick_r、goal_kick_l、goal_kick_r、free_kick_l、free_kik_r、offside_l、offside_r、play_on、half_time、time_up、extend、foul_Side_Unum、goal_Side_Point。

注意关于是哪个队员发的消息和他的距离是不知道的。

队员只有有限的通讯能力,只能听到一定距离之内的声音,此距离由soccerserver参数audio_cut_off_dist决定。

同时队员在hear_decay个循环周期内只能听到hear_inc条消息。

一般情况下,在2个循环周期内,当有多个队员说某消息时,一名队员只能接收一条,而失去了其他的消息。

裁判(referee)所发的消息具有高的优先级,可以被全部队员接收到。

2.4.4.2视觉模型

从server得到的听觉信息按如下格式:

(seeTimeObjInfoObjInfo…)

Time:

当前时间。

ObjInfo表示了可视对象的信息。

其格式为:

(ObjNameDistanceDirectionDistChngDirChngBodyDirHeadDir)

ObjName=(playerTeamnameUnum)

|(golaSide)

|(ball)

|(flagc)

|(flag[l|c|r][t|b])

|(flagp[l|r][t|c|b])

|(flag[t|b][l|r][10|20|30|40|50])

|(flag[l|r][t|b][10|20|30])

|(flag[l|r|t|b]0)

|(line[l|r|t|b])

Distance,Direction表示目标的相对距离和相对方向。

DistChng和DirChng分别表示目标距离和方向的相对变化,DistChng和DirChng不是精确值,只是一个粗略值。

字母:

“l、r、c、t、b”分别表示了左、右、中心、上、下。

“p”表示罚球区。

详见图2.2。

图2.2球场标志

Distance,Direction,DistChng和DirChng按如下方式计算出来的:

Distance=

Direction=

/Distance

/Distance

Distance

其中

是目标的绝对位置坐标,

是接收视觉信息的队员自己本身的绝对坐标,

是目标的绝对速度,

队员自己的绝对速度。

是队员所面向的绝对方向。

另外

表示目标的相对位置和相对速度。

表示平行于相对位置向量的单位向量。

如果被观察者是球员的话,才会有BodyDir和HeadDir,分别是被观察球员相对观察者的身体和头部的相对角度。

如果两个球员的身体都是相同的角度,那么BodyDir就等于零。

HeadDir也一样。

视野范围

球员的可视部分依赖于几个因素。

首先是server上的参数sense_step和visible_angle,决定了视觉信息的时间间隔,以及球员正常视角时的角度。

现在使用的是150ms和90°。

球员通过改变ViewWidth和ViewQuality也可以改变视觉信息的频率和质量。

view_frequency和view_angle由以下公式2.1和2.2计算得出:

(2.1)

1当ViewQuality=high

0.5当ViewQuality=low

2当ViewWidth=narrow

1当ViewWidth=normal

0.5当ViewWidth=wide

也就是说,视觉质量要求越高,视角要求越小,则发送时间间隔越大。

(2.2)

 

2当ViewWidth=wide

1当ViewWidth=normal

0.5当ViewWidth=narrow

球员能够“看到”在他领域内的对象(以visible_distance为半径的圆周)。

如果某一对象在此范围内,但是不在球员的视野范围内,那么球员只知道对象的类型(足球,球员,球门或者是标记),而不知道对象的确切名字。

就是说使用“B”,“P”,“G”和“F”来作为对象的名字,而不是使用“b”,“p”,“g”和“f”。

图2.3球员的视野

图4.3表示了view_angle的意思。

图中的观察球员由两个半圆组成,空心的半圆表示球员的前部。

全黑的圆周代表场上的对象。

只有在view_angle/2的角度范围内,而且在visible_distance的距离范围内的对象才能被看到。

因此,对象b和g是不可见的,其他的对象都是可见的。

对象f在观察者的正前方,它的角度被认为是0°。

对象e会被认为是-40°,而对象d则会被认为是大约20°。

请参考图2.3的标志,球员所获得的视觉信息和距离的相关程度很大。

对于近距离球员,它既可以看到它所属的球队同时也可以看到他的球员号码。

然而,随着距离的增加,首先消失的是球员的号码。

然后距离的增加还会导致球员的队别也分不清楚了。

在服务器端假定这些距离是:

这里假定dist是球员和自己的距离,那么:

◆如果

那么球员号码和球队名称都可见。

◆如果

,那么队名是可见的,但是队员号码有一定的概率看不到。

这个概率根据dist是线性的从1到0减少的。

◆如果

,那么球员号码是不可见的。

◆如果

,那么队名也存在一定的概率不可见,概率是随着dist的减少从1到0线性的递减的。

◆如果

,那么队名是不可见的。

视觉感知噪声模型

为了在视觉感知数据中引入噪声,server发送的信息被进行了量化处理。

如:

无论远处的目标是球还是球员,目标的距离值按如下方式进行量化:

其中

分别表示精确距离和相应的量化距离。

且:

ceiling(V/Q)*Q

这表示队员是不能知道远处物体的精确位置的。

例如:

当距离为100.0时,最大噪声可达到10.0,但当距离在10.0之内时,噪声小于1.0。

对于远处目标是旗或线的情况,距离值按如下公式量化:

其中,

=0.1,

=0.01

2.4.4.3自身感知模型

自身感知返回球员当前的物理状态。

每隔sense_body_step(目前使用100ms),就会自动的向球员发送自身感知信息。

自身感知消息的格式如下:

(sense_bodyTime

(view_modeViewQualityViewWidth)

(staminaStaminaEffort)

(speedAmountOfSpeedDirectionOfSpeed)

(head_angleHeadDirection)

(kickKickCount)

(dashDashCount)

(turnTurnCount)

(saySayCount)

(turn_neckTurnNeckCount)

(catchCatchCount)

(moveMoveCount)

(change_viewChangeViewCount))

ViewQuality的取值是high或low。

ViewWidth取值是narrow,normal,wide。

AmountOfSpeed是球员速度的近似值。

DirectionOfSpeed是球员速度的近似方向。

HeadDirection是球员头部的相对方向。

变量Count是由server执行的对应命令的总量。

如:

DashCount=134说明球员其时已经执行

了134次dash命令

2.2.5球员的动作模型

下面介绍一些球员可以发送给sever的各种动作,并且指出了那些动作是可以同时发送给Server,那些是不能同时发送的。

表2.1中列出了全部表示动作的命令。

(catchDirection)

向Direction方向扑球。

当球落入宽为goalie_catchable_w,长为goalie_catchable_l的矩形内时,并且方向为Direction,守门员可以扑到球。

(turnMoment)

控制球员转身的角度。

Moment应在-180~180之间。

球员身体可以转过的角度随着球员的快速运动而减少。

(Moment的范围会改变。

(turn_neckAngel)

控制球员转脖子。

其中Angel转过的角度。

Angel

[minneckmoment,maxneckmomnet]

(moveXY)

移动球员到(XY)。

X

[-52.5,52.5],Y

[-34,34]

(dashPower)

在球员所面对的方向上增加球员的速度。

Power应在-100~100之间(范围可变)。

(kickPowerDirection)

以Power的力量向Direction方向踢球。

条件是球要在kickable_area范围内。

Power

[-100,100],Direction

[-180,180]。

(sayMessage)

向所有球员广播Message。

Message会迅速被其他球员(包括对方球员)以听的方式接收。

Message是串长小于10个字节的字符串。

可以包含字母,阿拉伯数字和符号“+-*/_.()”。

球员的听力受距离限制。

(tacklepower)

在可tackle的范围内,可以使用power

[-100,100]进行tackle

(score)

询问在Time时刻我们和对手的得分。

(change_viewANGLE_WIDTHQUALITY)

改变球员的视角宽度和视觉能力。

ANGLE_WIDTH可以是wide、normal、narrow。

QUALITY为high或low。

(sense_body)

{sense_bodyTIME

(view_modeQUALITYWIDTH)

(staminaSTAMINAEFFORT)

(speedAMOUNT_OF_SPEED)

(kickKICK_COUNT)

(dashDASH_COUNT)

(turnTURN_COUNT)

(saySAY_COUNT)

}

表2.1表示动作的命令

●catch

球员抓球动作。

守门员是唯一能执行catch命令的球员。

守门员可以从任何方向抓到足球,只要足球在可抓范围内,守门员在罚球区内,且比赛模式是“play_on”。

如果守门员以δ角度去catch足球,那么可抓范围是长宽分别是catchable_area_l和catchable_area_w的矩形区域。

如果足球在这个矩形区域内,能够被抓到的可能性是catch_probability,在外面则不能被抓到。

●turn

球员的转身动作,其参数moment属于minmoment和maxmoment(缺省为

)组成的区间。

在球员运动的过程中,由于惯性的存在,转身更为困难。

一般地,球员的实际角度由下式计算:

inertia_moment是一个参数,缺省值为5.0。

由上式可知,当一个球员以最大速度前进时,他最大可以转过的角度是

●turn_neck

球员转脖子动作。

使用turn_neck命令,从某种角度上,是在独立于球员身体的转动头颈。

球员的头部角度是他的视野角度。

命令turn改变球员的身体角度,而命令turn_neck则改变了球员相对他的身体的颈部角度。

球员颈部的相对角度介于minmoment和maxmoment之间(在文件serever.conf中定义)。

切记头颈角度是相对于球员身体的相对角度,如果球员执行了turn命令,而没有执行turn_neck命令,球员的视野角度也是会改变的。

●move

命令move可以把球员移动到场上的任何一个地方。

只有在设置整个球队时,move命令有效,在正常比赛期间是没有效果的。

在上下半场开始前(比赛模式是‘before_kick_off’)以及进球后(比赛模式是‘goal_r_n’和‘goal_l_n’)才可以使用move命令。

在这种情况下,只要比赛模式没有改变,球员可以被移动到自己半场的任何地点(就是说x<0),而且可以被移动任意多次。

如果球员还在对方半场的话,那么将会被server移动到己方半场的随机位置。

●dash

dash

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1