650 likes | 869 Views
微软轮式仿真 5vs5 、 11vs11 平台介绍. 牛牛足球机器人研发基地. 赵亮. 内容概要. 1 微软轮式仿真平台的研发背景 2 微软轮式仿真平台的安装过程 3 微软轮式仿真平台的使用 4 微软轮式仿真( 11vs11 )比赛介绍 5 微软轮式仿真( 5vs5 )比赛介绍 6 动态链接库 (DLL) 的生成 7 决策的编写. FIRA 比赛类型、车体要求. 集 控 式 系 统 概 念 图. 视觉子系统. 总控子系统. 小车子系统. 通讯子系统. 微软轮式仿真平台.
E N D
微软轮式仿真5vs5、11vs11平台介绍 牛牛足球机器人研发基地 赵亮
内容概要 1微软轮式仿真平台的研发背景 2微软轮式仿真平台的安装过程 3微软轮式仿真平台的使用 4微软轮式仿真(11vs11)比赛介绍 5微软轮式仿真(5vs5)比赛介绍 6动态链接库(DLL)的生成 7决策的编写
集 控 式 系 统 概 念 图 视觉子系统 总控子系统 小车子系统 通讯子系统
微软轮式仿真平台 NEWNEU HiFi 3D Simulator for Wheeled Robot Soccer • 读取外部决策文件的方式模拟实际 • 足球队员参加比赛 • 3D可变视角仿真环境和2D全景视图 • 3D碰撞效果逼真,对真实比赛有较高 的仿真度
比赛仿真实现过程 根据比赛信息做出决策,计算机器人轮速 以给定物体速度运算物理模拟结果 设置机器人轮速,获取物体位置信息
仿真过程与实物过程的比较 • FIRA 轮式微型机器人 • 仿真比赛平台 • 东北大学牛牛轮式机器人 • (FIRA微型组)
微软轮式仿真平台的研发背景 • 基于Microsoft Robotics Studio SDK1.5 开发,充分利用了开发平台提供的仿真引擎服务。 Microsoft Robotics Studio • 支持很多机器人硬件平台的Windows机器人开发环境 • 运行时由CCR和DSS两个主要的组件构成 CCR DSS 分布式系统软件 并发和协调运行时
Microsoft Robotics Studio • CCR:并发和协调运行时(Concurrency and Coordination Runtime,CCR)提供一个高度并发的、面向消息的编程模型,利用强大的消息组织机制替代了锁定、信号量等线程操作。它是整个开发平台的核心运行时。 • DSS:分布式系统软件(Decentralized System Services,DSS)提供了一个轻量级的面向服务的应用程序模型,融合了传统网络架构的主要特性和一部分网络服务的架构的特性。
微软轮式仿真平台的结构 NewNEU足球机器人3D仿真平台由三个基本的服务构成 • 仿真引擎服务 维护可视化的仿真环境,它以物理引擎和渲染引擎为基础 • NewNEU仿真服务 主要功能是仿真引擎服务和人机交互服务的消息处理、维 护仿真环境的状态、保证比赛的时序和逻辑等 • 1.3.3人机交互服务 主要功能是显示比赛的运行情况、设置比赛的相关参数以及足球机器人的测试等
微软轮式仿真平台的扩展功能 • 智能裁判 仿真比赛的速度比较快的,,智能裁判功能能够减少需要人工判断的情况,降低人的干预,有效的防止误判和错判的情况发生,使比赛更公平合理。 • 比赛录像 记录整场比赛的过程能够方便比赛双方根据需要回放比赛,更好的分析决策,从而改进算法的缺陷。 • 自动开球 在仿真比赛的过程中,在进球或者违规之后都要开球,因此需要人工重新放置足球机器人。人工方式不仅浪费时间而且准确性不够,利用决策文件自动形成开球阵形将是比较好的方法。 • 动态加载决策DLL 在不重新启动仿真环境的情况下,能够根据需要实时更换决策DLL,方便用户操作与决策效果比较。
微软轮式仿真平台的安装过程 • 硬件配置要求 • 系统要求 Windows XP / VISTA操作系统
所需组件——相关软件介绍 平台需要DirectX,dotnet和AGEIA的支持: • PhysX 是原AGEIA公司开发的一套物理运算引擎,可运用独立的浮点处理器(包括独立的物理加速卡和GPU)进行复杂的运算效果,减轻CPU的计算负担。 • NVIDIA公司以2亿美元的代价收购AGEIA的全部资产和技术。 • .NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件。 • .NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework 类库。 • 要求版本:Microsoft .NET Framework 3.5
所需组件——相关软件介绍 • DirectX是一种应用程序接口(API),它可让以Windows为平台的游戏或多媒体程序获得更高的执行效率,加强3D图形和声音效果,并提供设计人员一个共同的硬件驱动标准,让开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及设置硬件的复杂度。
安装过程 • 下载所需组件: (1)AGEIA PhysX v7.11.13下载地址: http://www.newneu.net/FUploadFile/PhysX_7.11.13_SystemSoftware.exe (2)DirectX下载地址: http://www.newneu.net/FUploadFile/directx_jun2008_redist.exe (3)dotnet framework3.5下载地址: http://www.newneu.net/FUploadFile/dotnetfx3.5setup.exe • 下载仿真平台: NEWNEU 3D Robot Soccer Simulator仿真平台软件下载地址:http://www.newneu.net/%5CFUploadFile%5CNEWNEUWheeledSim_Individual_SetUp.rar
安装注意事项 • dotnet framework3.5 需要在线安装。 • 安装vs2008后不必再安装dotnet framework3.5。 • 仿真平台安装路径不要出现中文。 • 如有其它疑问欢迎致信“huozhiyunewneu@gmail.com”。
微软轮式仿真平台的使用 服务器端: 3D仿真环境 控制面板 客户机端: 控制面板
服务器端控制面板 测试界面 裁判控制界面 时间、比分和队名显示 比赛类型 比赛时间 模式切换 远程模式连接端 确认“准备好”按钮 确认“准备好”按钮 模式切换 开球球队 开球方式 开球按钮 暂停按钮 比赛2D显示 回放按钮
客户端控制面板 比赛2D显示 时间、比分和队名显示 队别(黄、蓝)显示 比赛项目(3、5、11) 决策加载端 确认“准备好”按钮
仿真环境操作 仿真平台提供3D可视化仿真环境,画面真实,仿真度高,可以根据需要 调整视角,达到最佳的视觉效果。 • 摄像头位置和视角操作: • 位置:通过键盘Q、W、E、A、S、D调节; • 视角:通过鼠标左键调节。按住鼠标左键拖动即可。 • 物理引擎控制 • 通过“Physics”菜单可以打开或关闭物理引擎,快捷键是F3。 • 渲染模式 • 通过“Render”可以改变当前环境的渲染模式,也可以通过快捷键F2切换。
仿真环境操作 • 仿真环境模式: • 仿真环境有两种模式:Run和Edit。 • 可以通过“Mode”菜单进行选择,也可以 • 用快捷键F5切换。 • 仿真环境中实体编辑: • 首先切换到编辑状态,在仿真环境左侧显 • 示了当前环境中的实体及其属性,可以随 • 意编辑各个实体的“Position”和“Rotation” • 参数,建议大家暂时不要修改其他参数。
仿真平台的使用模式 • 单机版模式 在平时测试与训练时可采用此模式,简单方便 服务器端模式设置为“Local” • 客户端服务器模式 在正式比赛中采用此模式 服务器端模式设置为“Remote”
单机版模式 • 单机版模式与客户端服务器模式的选择: 在对抗赛中,用于选择单机版比赛模式和客户端服务器比赛模式。 • 比赛项目、时间设定: 对抗赛的比赛项目有:3vs3、5vs5、11vs11。 时间设置有:3、5、10分钟。正常比赛时间为10分钟,如果比赛结束时还没 决出胜负,则进入3分钟加时赛。5分钟的时间设置仅供参赛队调试时使用。
单机版模式 单机版模式只需使用服务器端平台 • 单机版模式与客户端服务器模式的选择: 用于单机版对抗赛中,决策的加载。 • 比赛项目、时间设定: 用于选择开球方式和开球方,供各参赛队调试 决策时使用以及在比赛开始正常发球时使用。
单机版模式 • 确认摆放机器人按钮 用于在各种开球时,通过拖拽色标块来摆放机 器人,在个队确定拖拽的位置为机器人位置时, 可以点击上面的按钮。 • 比赛控制 在比赛一开始时,可以点击“Start”来开始比赛,比赛中途在必要时可以点击 “Pause”暂停比赛,也可以点击“Replay”回放比赛,然后可以点击“Continue” 继续进行比赛。如果各队放弃比赛,想开始新的比赛,可以点击“Reset” (“Start”按钮点击之后变为“Reset”按钮)。
客户端服务器模式 客户端服务器模式需使用客户端平台和服务器端平台 • 单机版模式与客户端服务器模式的选择: • 连接客户端模块: 在客户端服务器模式的对抗赛中用于服务器连接客户端。 • 其它模块同单机版模式 :
控制面板操作——单机版对抗赛操作 (1)比赛开始之前,首先在服务器面板中设置如下选项: (a)选择比赛项目以及比赛时间。 (b)在“TeamConnect”中选择“Local”。 (2)在服务器端的决策入口加载决策。 (3)当双方都加载好决策以后,可以通过选择“KickOffTeam”设置开球方, 并提示两个队摆放机器人。 (4)在两个队都准备好后,可以点击“Start”开始进行比赛。 (5)比赛中,如果需要暂停可以点击按钮“Pause”,然后点击“Continue”继续 进行比赛。在有争议的情况下,点击“Replay”可以回放比赛前10s的状况。 (6)比赛中如果有进球或犯规,其开球方式要求同3,然后点击“Continue”进 行比赛。 (7)比赛分上下半场,在下半场可以交换场地,交换场地时两个队需交换决 策入口,然后重新加载决策 (8)比赛结束后,可以点击“ReSet”进行下一场比赛。
控制面板操作——客户端服务器对抗赛操作 (1)比赛开始之前,首先在服务器面板中设置如下选项: (a)选择比赛项目以及比赛时间。 (b)在“TeamConnect”中选择“Remote”。 (c)输入两个客户端的IP,点击“Connect”进行连接。 (2)在服务器连接到客户端后,会提示客户端加载决策,当客户端确定加载好 决策后,点击“Ready”向服务器发出准备好信号。 (3)服务器端通过选择“KickOffTeam”设置开球方,并提示两个客户端摆放机器人 (4)服务器在接收到两个客户端的准备好信号后,可以点击“Start”开始进行比赛 (5)比赛中,如果需要暂停可以点击按钮“Pause”。在有争议的情况下,点击“Replay”可以回放比赛前10s的状况。 (6)比赛中如果有进球或犯规,其开球方式要求同3,再点击“Continue”进行比赛 (7)比赛分上下半场,在下半场可以交换场地,交换场地时两个客户端需交换决策入口,然后重新加载决策,。 (8)比赛结束后,可以点击“ReSet”进行下一场比赛。
微软轮式仿真(11vs11)比赛介绍 微软轮式仿真(11vs11)比赛场地:
微软轮式仿真(11vs11)比赛场地: (a) 场地尺寸 赛场为黑色长方形场地,其尺寸是400cm×280cm,带有5cm高, 2.5㎝ 厚的白色围墙。在场地的四角固定四个7cm×7cm的等腰三 角形以避免球进入角落。 (b) 场地标记 比赛场地标所示。中圈半径是75cm。主要直线/圆弧 (中线、门区边界线和中圈)均为白色,3mm 宽。争球时机器 人的站位(圆)标记为灰色。 (c) 球门 球门宽60cm,没有横梁和网。 (d) 门线与门区 门线是恰好位于球门前长60cm 的直线。门区(附录2)包括位 于球门前尺寸为80×24㎝ 的长方形区域。
微软轮式仿真(11vs11)比赛场地 (e) 罚球区 罚球区球门前尺寸为120cm×60cm 的长方形区域,罚球 点距球门中心50㎝,与两球门柱等距,罚球区包括门区。 (f) 球 用桔黄色的高尔夫球作比赛用球,直径42.7mm,重46g。 (g) 机器人 机器人为7.5cm×7.5cm×4.5cm 的小车机器人。 (h) 服务器客户端比赛模式 服务器端设有:比赛时间、记分牌、2D比赛显示、裁判界面、调试 界面。 客户端设有:比赛时间、记分牌、2D比赛显示、网络连接状态、决 策加载入口。
比赛次序及比赛时间 • (1)准备 在服务器连接到客户端后,各队将比赛策略加载到客户端电脑并运 行,在确定准备好,客户端可以向服务器发出“Ready”信号。 • (2)开始 服务器在接收到客户端双方的“Ready”信息之后,由裁判按下服务器菜单的“Start” 比赛开始,按下“Stop”比赛暂停或终止。 比赛分两个半场,每半场5 分钟,中场休息5分钟(如双方同意,可继续比赛)。在需暂停或其它必要情况下,裁判员暂停计时。
记分方法 • (1) 获胜者 当整个球越过门线时即破门得分,此时该球队计分牌就自动加1。根据记分牌数据大小决定获胜队。如果有争议球可以按下“Replay”回放比赛。 • (2)平局处理 下半场比赛结束后,若双方打成平局,则通过突然死亡法决定获胜者。休息5分钟后,进入加时赛,加时最大周期为3分钟,其间先得分的球队为获胜者。如果追加3分钟后仍是平局,则通过点球决定获胜者。每个球队可射3次点球。在这时只有一个踢球员和一个守门员上场比赛。守门员在自己的球门区内,踢球员和球的位置同规则5。裁判吹哨后,允许守门员走出球门区。如果3次点球后仍是打成平局,则一次一次地增加点球次数,直到决定获胜者为止。所有点球均由一个机器人踢。
点球PK (Penalty Kick) 在以下情况下罚点球: • 在球门区内防守方的机器人多于一个(包括守门员),一个机器人多于50%在门区内就认为该机器人在门区内。 • 在球门区及罚球区内防守方的机器人多于4个(包括守门员),对防守方罚点球。 • 守门员没能在10 秒钟内将球踢出门区。
门球GK(Goal kick) 在下列情况下发门球: • 当守门员在门区内,一方球员直接或间接阻挡、冲撞对方守门员(不论之间是否有球),防守球队将发门球。 • 在防守球队的门区内参与进攻的机器人多于一个,或禁区内参与进攻的机器人多于四个,防守球队将发门球,禁区包含门区。一个机器人多于50%在门区内就认为该机器人在门区内。
争球FB (Free Ball) 在下列情况下判争球: • 在门区外出现僵局达10 秒钟,裁判将判争球。 • 球被撞出场地时,将在球离开场地时的球所在的1/4半场进行争球。
微软轮式仿真(5vs5)比赛介绍 微软轮式仿真(5vs5)比赛场地:
微软轮式仿真(5vs5)比赛场地: • (a)场地尺寸 赛场为黑色长方形场地,其尺寸是220cm×180cm ,带有5cm 高,2.5cm 厚的白色围墙。在场地的四角固定四个7cm×7cm 的等腰三角形以避免球进入角落。 • (b)场地标记 中圈半径是25cm 。作为门区的一部分的圆弧沿球门线长25cm ,垂直于球门线5cm。主要直线/圆弧(中线、门区边界线和中圈)均为白色,3mm 宽。争球时机器人的站位(圆)标记为灰色。 • (c)球门 球门宽40cm,没有横梁和网。 • (d)门线与门区 门线是恰好位于球门前长40cm 的线段。门区包括位于球门前尺寸为50cm×15cm 的长方形区域。
微软轮式仿真(5vs5)比赛场地: • (e)罚球区 罚球区球门前尺寸为80cm×35cm 的长方形区域,弧形区域平行于球门线长度为25cm ,垂直于球门线高度为5cm。 • (f)球 用桔黄色的高尔夫球作比赛用球,直径42.7mm,重46g。 • (g)机器人 机器人为7.5cm×7.5cm×4.5cm 的小车机器人。 • (h)服务器客户端比赛模式 服务器端设有:比赛时间、记分牌、2D比赛显示、裁判界面、调试界面。 客户端设有:比赛时间、记分牌、2D比赛显示、网络连接状态、决策加载入口。
决策DLL的生成 微软轮式仿真平台是以加载动态链接库DLL的方式来调用参赛队的比赛决策的 参赛队是通过对DLL代码的编写来完成对本对机器人的决策与控制的 DLL:它是Dynamic Link Library 的缩写形式,动态链接库 (DLL) 是作为 共享函数库的可执行文件。 动态链接库的使用在平台中的意义
决策DLL的生成 利用Microsoft Visual Studio 2008来作为生成决策DLL的工具 • Visual Studio 是微软公司推出的开发环境。是目前最流行的 Windows 平台应用程序开发环境。目前已经开发到 9.0 版本,也就是 Visual Studio 2008。 • 支持语言:Visual Basic, C#, C/C++, J# • 使用 Microsoft .NET Framework 3.5
动态链接库的接口函数 • StrategyInit(Environment *Env) 初始化函数,每次比赛平台只调用此函数一次,用以分配内存空间等操作 • StrategyStep(Environment *Env) 正常模式入口函数,在比赛过程中仿真平每周期(30毫秒)调用此函数一次,执行其中的代码。 • StratefyDrop(Environment *Env) 释放函数,一般用以释放在初始化函数中分配的内存空间,仿真平台只在比赛结束或中止时调用此函数一次。 • Author(char *team) 队名设置函数,平台将把字符串中的内容显示在软件界面上。
动态链接库的接口函数 • SetForm(Environment *Env) 阵型设置函数。 • StrategyStepDebug(Environment *Env, DataDebug *Data) 调试模式入口函数,与正常模式一样,在比赛过程中仿真平台每周期(30毫秒)调用函数一次,并执行其中的代码。
动态链接库的接口函数定义举例 extern "C" STRATEGY_APIvoid Author(char* team) { //Please give you strategy a nice name //e.g. strcpy(team,“...”);//双引号内填入球队名 AllocConsole(); freopen("CONOUT$","w+t",stdout); freopen("CONIN$","r+t",stdin);//控制台输出 };
动态链接库的接口函数定义举例 • extern "C" STRATEGY_APIvoidStrategyStep(Environment *Env) • { • Env->home0_velocityLeft = 0; • Env->home0_velocityRight = 0; • Env->home1_velocityLeft = 60; • Env->home1_velocityRight = 60; • Env->home2_velocityLeft = 60; • Env->home2_velocityRight = -60; • Env->home3_velocityLeft = -60; • Env->home3_velocityRight = 60; • Env->home4_velocityLeft = -60; • Env->home4_velocityRight = -60; • }
决策的编写——DecisionMakingx类 • 在机器人比赛中我们是需要利用场上各种敌我双方的信息,以及各种场地及比赛状态信息来对多个机器人的行为进行决策与控制的。显然这将会是一个复杂的过程,针对于此我们利用DecisionMakingx类来封装所有与决策相关的算法,是仿真比赛的核心,是决策代码编写的载体。 DecisionMakingx类的调用 在接口函数StrategyInit通过如下代码完成DecisionMakingx类的初始化: 在接口函数StrategyStep通过如下代码完成DecisionMakingx类的调用: