RoboCup 仿真 2D.ppt_第1页
RoboCup 仿真 2D.ppt_第2页
RoboCup 仿真 2D.ppt_第3页
RoboCup 仿真 2D.ppt_第4页
RoboCup 仿真 2D.ppt_第5页
已阅读5页,还剩79页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010合工大Robocup机器人足球仿真2D技术培训 高明合肥工业大学2010 4 综述 机器人足球 规则 仿真平台 Linux 剧场管理员 演员和剧组 所有演员演出的直播和录播 出场顺序 临近出场前后情况 申请演出 节目内容 人数 Server整体世界模型 Client个人世界模型 WorldModel世界模型的更新通过Monitor来显示出来 Server和Client的沟通 UDP IP通信 11个进程 相关链接 工大机器人主页 工大2D资料站 仿真2D的基本开发技术 仿真2D 感谢各位老师和同学谢谢 致谢 Monitor 标准仿真2D球场 返回 Server简介 Soccerserver是一个系统 程序 它可以使Agent进行足球对抗比赛 这些Agent使用不同程序语言进行设计 Client server 所以对球队的开发编译没有任何限制 唯一要求就是 球队的开发工具提供通过UDP IP连接的client server支持 这是因为server和每个client之间的通讯都是通过UDP IP端口实现的 每个client都是独立的进程 通过给定的端口和server连接 一支球队可以有最多11个client 或者说是球员 server Client Daj375jha2h4f2if acdefghijklmnopq 决策请求 请求信息反馈 Server根据请求Client根据信息反馈各自更新世界模型 两者关心的仅仅是通过通讯从对方获取的符合一定协议的字符串 Server简介 当球员和server连接上后 所有的信息都通过这个端口传递 球员发送他们下一步要做的动作请求给server 如踢球kick 转身turn dash等 Server接收到这些消息后 执行请求 并相应的更新环境 另外 server向所有的球员提供感知sensory信息 如 关于足球 球门和其他球员的位置可视信息 球员用于更新自身世界模型 Server简介 server是以离散的时间间隔 或周期 工作的实时系统 每个时间周期都有确定的分时 为了在某个周期执行 动作必须在正确的间隔到底server 因此 缓慢的反应会对球队的性能产生很大的影响 它会造成丢失执行动作的机会 仿真周期的介绍 一场比赛6000周期 10分钟上下半场各3000个仿真周期 5分钟 1周期 100ms比赛球员的动作决策 包括球员从server信息的获取都是严格按照仿真周期来进行 刚刚提到的离散时间间隔就是由此而来的 定期获取最新版的server 获取Soccerserver Germany Server及logP安装和启动 首先解压rcssbase和rcssserver 并进入各自目录下进行安装 configure make makeinstall然后解压rcsslogplayer 同样进入该文件夹目录下进行安装 打开终端 输入rcssserver 启动server 输入rcsslogplayer启动监视器 返回 Start 比赛规则 在比赛中 由server中的自动裁判和人类裁判来共同执行大量的规则 这节就是解释这些规则是如何工作 它们是怎么影响比赛的 比赛规则 1 开球Kick Off在kickoff之前 比赛开始前 和进球后 所有的球员都必须在她自己的半场 为了能够达到这样 在每次进球得分后 采取把比赛挂起5s时间 在这个间隔中 球员可以使用move命令移动到某点 而不是跑向这个点 这样会既费时又费体力stamina 如果在5s结束后 球员还呆在对方的半场 裁判会把她移到她们自己半场的随机位置 比赛规则 2 进球Goal如果一个球队进球得分 裁判要作很多事情 首先 她向所有的球员广播进球信息 然后更新比分 将球移到中点 并把比赛模式置为kick off x x是left或right 代表左半场球队或右半场球队 最后 她将比赛挂起5s 在此期间球员回到自己的半场 比赛规则 3 出界OutofField当足球出界时 裁判把足球放到一个合适的位置 边线 角球区或球门区 并且把比赛模式置为界外球kick in 角球coner kick 或者球门球goal kick 如果是角球的话 裁判将把足球放到场内正确的角球区坐标 1m 1m 处 比赛规则 4 清场PlayerClearance当比赛模式是开球kick off 界外球kick in 或角球corner kick时 防守队员移出以足球为圆心 9 15m为半径的圆形区域 被移出的球员随机放置在圆形区域的周围 如果比赛模式是越位offside 所有的进攻球员被移回到没有越位的位置 这种情况下的进攻球员是指在越位范围内的所有球员以及位于以足球为圆心9 15m为半径的圆形区域内 如果比赛模式是球门球goal kick 所有的进攻球员会被移到罚球区外 当球门球发生时 进攻球员不能重新进入罚球区 当足球被踢出罚球区后 比赛模式马上被设置为正常play on 比赛规则 5 比赛模式控制Play ModeControl当比赛模式是开球kick off 界外球kick in 或者角球corner kick时 裁判在足球因为kick命令产生移动时 马上把比赛模式设置为正常play on 比赛规则 6 中场时间和终场时间Half TimeandTime Up当上半场或下半场结束时 裁判暂时挂起比赛 每个半场的默认值是3000个仿真周期 大约5分钟 如果在下半场结束后 还是平局的话 会进行加时赛 直到一方进球为止 就是被称为 金球 规则或 突然死亡法 点球大战 几种常见比赛模式总结 PM BEFORE KICK OFF 开球前模式 PM KICK OFF 开球 PM PLAY ON 正常比赛模式 PM KICK IN PM CORNER KICK PM GOAL KICK PM FREE KICK PM BACK PASS PM OFFSIDE 特殊模式 PM TIME OVER 时间结束 特殊裁判规则 某些故意犯规动作 如故意阻挡等 很难由裁判 referee 自动判断 因为它与球员的意图有关 因此 server为通过人来判断这些犯规动作提供赋予某个球队任意球了一种方式 人类裁判可以挂起比赛 特殊裁判规则 1故意包围足球 Surroudingtheball 2故意用多名队员阻挡球 Blockingthegoalwithtoomanyplayers 3故意长时间持球 Notputtingtheballintoplayafteragivennumberofcycles 4故意阻挡其他队员的移动 Intentionallyblockingthemovementofotherplayers 5守门员滥用catch命令 守门员不允许在罚球区内重复使用kick和catch命令 因为这样为移动足球提供了安全的方式 特殊裁判规则 6向server发送过多命令FloodingtheServerwithMessages每个Client在一个仿真周期内不能发送超过3或4个命令 过多的命令会使server阻塞 如果server发生阻塞 将在赛后进行检查 7其他不恰当的行为 返回 球场对象信息的简介 场地和球员 仿真环境中足球场和全部对象都是2维 无高度概念 比赛场地的尺寸为Field Length Field Width 105 68 球门宽度为Goal Width 14 64 是实际的两倍球员和球用圆圈表示 动作是一个离散的过程 每个仿真周期结束时动作执行一次 在每个仿真周期结束前 server接受所有球员命令并执行 最后利用场上对象的位置和速度信息来计算出新的信息 以更新世界模型 对象的运动模式 各种运动模式均符合正常的物理运动规律 如速度 加速度 速度衰减等等 对象的加速度通过Kick 针对球 和Dash 针对球员 两个原子命令的有效power值来计算 有效值概念出于球员身体方向 距离 速度等客观原因对kick和dash力度的影响 Server控制协议 Client命令协议介绍的是client向server发送的主要命令以及命令采取的格式 包括连接 Client感知协议介绍的是client可以从server那里得到什么信息的协议格式 基本命令协议 1 catchDirection球员抓球动作 守门员是唯一能执行catch命令的球员 守门员可以从任何方向抓到足球 只要足球在可抓范围内 守门员在罚球区内 且比赛模式是 play on 如果守门员以 角度去catch足球 那么可抓范围是长宽分别是catchable area l和catchable area w的矩形区域 如果足球在这个矩形区域内 能够被抓到的可能性是catch probability 在外面则不能被抓到 基本命令协议 2 turnMoment球员的转身动作 其参数moment属于minmoment和maxmoment 缺省为到 组成的区间 在球员运动的过程中 由于惯性的存在 转身更为困难 当一个球员以最大速度前进时 他最大可以转过的角度是正负120 基本命令协议 3 turn neckAngel球员转脖子动作 是在独立于球员身体的转动头颈 球员的头部角度是他的视野角度 命令turn改变球员的身体角度 而命令turn neck则改变了球员相对他的身体的颈部角度 球员颈部的相对角度介于minmoment和maxmoment之间 在文件serever conf中定义 切记头颈角度是相对于球员身体的相对角度 如果球员执行了turn命令 而没有执行turn neck命令 球员的视野角度也是会改变的 基本命令协议 4 moveXY命令move可以把球员移动到场上的任何一个地方 只有在设置整个球队时 move命令有效 在正常比赛期间是没有效果的 上下半场开始前 before kick off 进球后 goal r n goal l n 上述两种情况下可以使用move命令 在这种情况下 只要比赛模式没有改变 球员可以被移动到自己半场的任何地点 就是说x 0 而且可以被移动任意多次 如果在5秒钟结束后 球员还在对方半场的话 那么将会被server移动到己方半场的随机位置 庆祝动作 基本命令协议 5 dashPowerDirdash是指在球员所面对的方向上的一个冲力 它不是持续的跑 dash的参数Power要乘以dash power rate 缺省为0 01 方向是在dir上 可以再command上自定义一个角度 当然这个角度的设置最终会影响power的有效力量 力量 加速度 影响球员速度 基本命令协议 6 kickPowerDirection以Power的力量向Direction方向踢球 条件是球要在kickable area范围内 Power 100 100 Direction 180 180 球与球员身体的距离等信息都会多少影响到踢球有效力量 基本命令协议 7 tacklepowerdir在可tackle的范围内 可以向相对身体方向的某一dir进行tackle Tackle的有效力量会因为角度的不同而依照某一规则相应的发生变化 铲球在正式比赛中的用处也是很大的 如破坏球 传球 甚至是射门 其优点是以可踢范围大 力量大 进而争球能力和对球的加速效果很明显 不过每次铲球之后10个仿真周期会处于冷冻状态 基本命令协议 8 change viewANGLE WIDTHQUALITY改变球员的视角宽度和视觉能力 ANGLE WIDTH可以是wide normal narrow QUALITY为high或low 在同步视觉下只有high 若使用同步视觉则又有不同规则 下面会做介绍 其他命令 其他命令像score say等基本命令与上面介绍的那些在一起组成了球员的最基本命令协议 球员体力模型 DashKickTankcle对于球员的体力有三个重要的变量 体力值 thestaminavalue 体力恢复值 recovery 体力使用效率 effort 体力在进行dash动作时不断减少 不过每个周期中体力也会不断的慢慢按一定大小 recovery 进行恢复 Recovery代表了每个周期内球员可以恢复多少体力 effort则代表了体力的使用效率 也就是dash的有效率 两个数字 8000和138000 球员体力模型 当一个球员使用 dashPower 命令时 他的Power参数要受到stamina和effort的影响 Power min Power Stamina Stamina Stamina PowerEffective dash power Min stamina Power effortStamina stamina effective dash power也就是说 dash消耗的体力和power有关 Effort会影响球员dash的力度效果 球员体力模型 在每个循环周期内 如果stamina低于某个阈值 则effort减少 否则增加 这个定义告诉我们 体力值消耗过低 会导致effort减小 从而影响球员dash的力度效果 球员体力模型 在每个循环周期内 如果stamina低于某个阈值 则recovery减少 在每个循环周期内 stamina依recovery的当前值而增加 综合上面两条可得 将体力值保持在某最小值以上 不但可以保持每周期体力恢复速度不变小 而且还可以使dash效果保持在一个较好的水平上 注意事项 在具体决策使用各种原子动作命令的时候要注意 有些动作是不能同时做出来的 比如让机器人一边踢球一边向前方dash 这样就引出了互斥动作的概念 在具体决策的时候 一旦产生互斥动作 server将丢弃前一个动作 只保留并执行最后放入命令队列的动作 而与互斥动作相对应的相容动作 意思就是机器人可以一边向前dash一边转动脖子 这样的动作命令同时交付给server时就可以同时被解释执行 返回 感知协议 听裁判 教练和其他球员发送的消息 检测场上的可视信息 如球员当前可视范围内的对象的距离和方向等 是每个球员维护自身世界模型的一个主要信息来源 检测球员的当前物理状态 体力 速度 脖子方向等 听觉模型 从server发送的听觉消息的格式如下 hearTimeSender Message Time 指示当前时间 Sender 如果是其他球员发送的消息 那么是发送者的相当方向 否则就是下面的选项 self 发送者是自己本人 referee 裁判是发送者 online coach left或者online coach ringt 发送者是在线教练 Message就是消息内容 最长say msg size 512 个字节 听觉模型 关于是哪个队员发的消息和他的距离是听不到的 队员只有有限的通讯能力 只能听到一定距离之内的声音 此距离由soccerserver参数audio cut off dist 50 决定 一个球员只可以听到一条信息 一般情况下 在2个循环周期内 当有多个队员说某消息时 一名队员只能接收一条 而失去了其他的消息 裁判 referee 所发的消息具有高的优先级 可以被全部队员接收到 例如 可以让某个球员 守门员 以某种自定协议一直说球的位置 这样自己球员听到的字符串就可以解析出球的位置 不能知道谁说的 但是获取到了有用信息 自身感知模型 自身感知返回球员当前的物理状态 每隔sense body step 目前使用100ms 就会自动的向球员发送自身感知信息 其中包括自身体力 视觉模型 脖子角度 各种动作统计等等信息 这个由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 objInfo很多 视觉模型 场上有各种标志物 分布在球场内和球场外 球员正是通过首先从 看 到这些标志物 也就是从server获取这些位于可视范围内标志物的基本信息 来定位自己在场上的位置信息 否则球员是不知道自己现在在哪里的 比如位置 身体方向等等 同样 也可以根据对这些标志物位置的信息 以及已定位的自身信息来进一步的定位场上其他球员或者球的位置等信息 找关键建筑 路标来确定自己现在所处位置 场上标志物信息 视觉模型 视角 球员的可视部分依赖于几个因素 首先是server上的参数sense step 150ms 和visible angle 90 决定了视觉信息的时间间隔 以及球员正常视角时的角度 球员通过发送命令改变ViewWidth和ViewQuality也可以改变视觉信息的频率和质量 目前新server的一种同步视觉模式下 每周期随仿真周期同步获得视觉信息 视觉模型 View frequency sense step view quality facor view width factorView quality facor 1 viewQuality high 0 5 low View width factor 2 viewWidth wide 1 normal 0 5 narrow 也就是说 视觉质量要求越高 视角要求越大 则发送时间间隔越大 同步视觉 当球员向server发送synch see的视觉信息时 就进入了同步视觉时间 同步视觉和上面介绍的那种视觉模型有所不同 因为是每个周期的开始从server得到视觉信息 所以它能保证视觉和决策的同步性 在同步视觉中 low视觉质量被禁止使用了 也就是只有high类型 具体模式如下 眼睛一闭一睁 眼睛两闭一睁 视觉效果 球员对于在其视觉范围内的各种物体都存在一个视觉效果的概念 在某些距离内可以获得球员的号码和队名等信息 但是一旦距离拉大到一定程度 将逐渐的随距离继续增大对号码信息的获取能力慢慢减小 直到无法获取 这和我们人类相似 当人离得比较远的时候 我们就无法看清他具体是几号 距离再继续拉大 我们甚至无法判断他是我方还是对方 具体的参数定义在教材里都有详细介绍 在线教练 在线教练则是企图观察比赛然后为球员提供建议和信息 因此 他的能力有所限制 1 能和球员通讯 2 能得到运动对象的较准确信息 3 综合上面两点 一定程度上弥补球员的视觉缺陷 为了防止教练集中式的控制每一个球员 通讯能力被限制了 只能发有限次的消息 隔300个周期才能发 给球员 并且发送以后要经过一定的周期 50个 才能被球员接收 在线教练是一个很好的工具 可以进行对方建模 比赛分析以及给己方球员战略指导 由于教练能得到场上的无噪声全部信息 而且实时要求不高 因此教练可以花费更多的时间考虑战略 需要注意的地方 仿真平台中同样引入了噪声和风力这些客观因素对球场的影响 因此出现决策误差是自然而然的事情 碰撞和穿过 如果在某个仿真周期结束时 两个对象发生重叠 则server自动将他们向后移动 直到不再重叠为止 然后将各自速度乘以 0 1 需要说明的是 只要在仿真周期结束时球和某队员不发生重叠 那么球就可以直接穿过该队员 小结 Server和Client通信以及monitorServer定义的基本比赛规则球员的原子动作命令及体力概念Server提供的感官信息 视觉 听觉 自身感觉 返回 使用UVA底层 1 基本底层类的封装 包括和server的链接 通信 字符串的发送 接受 解析 存储 以及一些基本的球员动作的封装 2 我们自己写底层的话需要工作量过大 而且内部连接和解析相当复杂需要花费大量人力 这个过程并不是我们进行机器人足球研究的根本所在 3 提供这个底层 有基本的功能 我们在这个上面进行各种高层的决策 这样可以只关心决策本身 而不用在意字符串的提取和处理过程 底层若干文件解析 Connection hclassConnection该类使用服务器名和端口号建立一个服务器连接 连接建立好以后就可以通过连接接收和发送消息 与socket结构配合 构成了球员Client与Server的通讯基础 底层若干文件解析 SenseHandler hclassSenseHandler该类通过连接接收服务器发来的消息 它包含了很多方法 用于解析接到的消息并将结果送到相应的世界模型中 当该类实例化后 一个特殊的线程将自动调用handleMessagesFromServer 该函数将一直保持循环状态 通过这种方式 所有的消息将以这种方式被接收然后解析 底层若干文件解析 ActHandler hclassActHandler用于在机器人足球赛环境内向服务器发送命令 它包含一个命令队列 当一个信号到达时 队列中的命令将被转化成字符串并发送到服务器 发出的命令同时也发送到世界模型 世界模型可以根据相应动作的执行而更新自己的内部状态 创建一个实例 就可以使用它将创建的动作命令放入这个命令队列 等待线程的提取和发送 底层若干文件解析 ServerSettings hclassServerSettings该类包含了服务器配置文件中的所有参数 classSoccerCommand根据传入原子命令的参数 建立一个容易理解 且可以灵活改变的命令实例 当对命令处理完后 再将命令转化成server可以理解的命令字符串 classSoccerTypes包含对SoccerTypes h定义的枚举类型的操作 底层若干文件解析 SoccerCommand实例 SoccerCommandsoc Soc makCommand CMD DASH pow ACT putCommandInQueue soc SoccerCommand CMD SYNCHSEE VA NARROW SoccerCommand CMD CHANGEVIEW VA NARROW VQ HIGH 底层若干文件解析 SoccerTypes henumObjectT对象类型enumObjectSetT对象集合类型enumPlayModeT比赛模式类型enumRefereeMessageT裁判消息类型enumViewAngleT视角类型enumViewQualityT视觉质量类型enumSideT边类型enumCommandT命令类型enumPlayerT球员位置类型enumFormationT阵型类型enumBallStatusT球状态类型enumActionT动作类型enumMarkT标志类型enumDribbleT盘球类型enumPassT传球类型enumClearBallT解围类型enumTiredNessT疲劳类型 CommandT CMD DASH CMD TURN CMD TURNNECK CMD CHANGEVIEW CMD CATCH CMD KICK CMD MOVE CMD SAY CMD CHANGEPLAYER 底层若干文件解析 WorldModel hclassWorldModel该类包含所有场上可用的 可信度高的 关于球员 球 标志 线的信息 Environmentalinformation环境信息包含 服务器参数Matchinformation比赛信息包含 Time PlayerNumber Side TeamName PlayMode GoalDiff 比分差 Objectinformation对象信息包含各类对象且有继承关系Actioninformation动作信息包含 每种动作执行的次数 动作队列 已经执行的动作 底层若干文件解析 classWorldModel成员方法分类 Retrievalmethods从agent的世界模型中重新得到对象的信息Updatemethods从来自server的感觉信息更新agent的世界模型Predictionmethods根据先前的感觉信息预测世界的将来的状态High Levelmethods从基本的世界模型信息得出高层的结论 底层若干文件解析 BasicPlayer hclassBasicPlayer该类定义agent使用的skill 包括特殊模式的策略 如何踢球 带球 射门等等 但如何选择时机执行这些skill在该类里并没有给出 而是在Player类里的deMeer5中给出 WorldModel被用于决定这些skill使用的方式 以及为这些动作的顺利执行提供有用的球场信息 我们可以在这个类中定义我们自己的特殊动作出来 比如快速带球突破 侧身带球 护球 以及一些华丽的动作 如马赛回旋 假动作虚晃 回旋加速等等 底层若干文件解析 Player h球员主要决策模块mainLoop 球员主循环函数deMeer5 完成由简单决策构成的队伍deMeer5 goalie 完成一个简单决策门将这三个函数构成了UVA底层的基本球员决策系统 mainLoop运行起来后 形成主循环来反复调用deMeer5和deMeer5 goalie形成球员和门将的具体决策 底层若干文件解析 Geometry hclassVecPosition x y 表示的笛卡尔坐标 或 r phi 表示的极坐标 classCircle圆类 由圆心坐标和半径决定 classLine直线类 以直线标准形式的系数构成的三元组表示 classRectangle矩形类 由左上角和右下角的两个点来定义 返回 底层程序球员启动的流程 1 main cpp文件是程序起点 Formationsfs 读取阵型信息WorldModelwm 创建世界模型Connectionc 连接serverActHandlera 连接感知信息与wm 底层程序球员启动的流程 2 然后创建一个球员对象 Playerbp 一旦有信息来了 就调用handleMessagesFromServer 来接收并解释所有消息 底层程序球员启动的流程 4 最后调用bp mainLoop 来启动这个无限循环 刚介绍过 这个函数是在内部调用deMeer5 和deMeer5 goalie 从而开始了球员的具体决策之路 Main cpp开始调用 deMeer5 具体决策的起点 deMeer5作为一般球员的策略 采用的是能踢则踢 不能踢则防的简单策略 大家都知道有限自动机 在deMeer5中 也是利用这一原理 将球进门作为最终状态 如果球没有进门 deMeer5会一直寻找可能实现这一最终状态的机会 并不断的尝试 直至达到终态为止 所以从这个角度上来说deMeer5的策略是简单的 作为球队中的特例 守门员使用的是单独的策略deMeer5 goalie deMeer5 UVA的开发者这样描述deMeer5 Theplayersdothefollowing ifballiskickable kickballtogoal randomcornerofgoal elseifiamfastestplayertoballandnoopponentcaninterceptball intercepttheballelsemovetostrategicpositionbasedonyourhomepositionandposball deMeer5流程 首先获取阵型文件中的基本位置信息 介绍

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论