版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1 微软轮式足球机器人仿真微软轮式足球机器人仿真 5VS5 技术报告郑州大学智能机器人实验室二 一一年五月微软轮式仿真足球机器人 5V5 组技术报告2009 年全国机器人大赛队长:马啸队员名单:张子扬、刘明明取得成绩:二等奖队员合影:2010 年全国机器人大赛队长:马啸队员名单:张子扬、李若岱、房矗、朱雄志取得成绩:季军 队员合影:微软轮式仿真足球机器人 5V5 组技术报告目录目录第一章第一章 微软轮式仿真平台微软轮式仿真平台.41.1 微软轮式仿真平台的研发背景.41.1.1 NewNEU足球机器人3D仿真平台由三个基本的服务构成.41.1.2 微软轮式仿真平台的扩展功能.51.2 微软轮式
2、仿真平台的安装过程.61.2.1 所需组件.61.2.2 安装过程.71.2.3 安装注意事项.71.3 微软轮式仿真平台的使用.81.3.1 仿真环境操作.81.3.2 仿真平台的使用模式.81.3.3 控制面板操作.10第二章第二章 微软轮式仿真比赛(微软轮式仿真比赛(5VS5)介绍及决策)介绍及决策.122.1 微软轮式仿真(5VS5)比赛场 .122.2 比赛规则介绍.132.2.1 比赛秩序.132.2.2 计分方法.142.2.3 罚球.142.3 决策 DLL 的生成.162.4 决策的编写DECISIONMAKINGX类.182.4.1 DecisionMakingx类成员变量
3、的数据传送.192.4.2基本的类成员函数与类成员的添加.192.5 整体决策的实现.202.5.1 基于球的位置分区的决策.202.5.2 基于任务分配的决策.212.6 机器人动作的实现.212.7 机器人动作的设计.232.7.1动作的设计举例.242.7.2 高级动作的实现举例.28第三章第三章 比赛程序讲解比赛程序讲解.313.1 球场分区 GETAREANO()和角色分配 ROLE().313.1.1球场分区GetAreaNo():.313.1.2角色分配Role():.323.2 后卫决策 FBACTION()讲解.323.3 中场决策讲解 .343.4 WING决策 WINGA
4、CTION()讲解.363.5 前锋决策 FWACTION()讲解.38微软轮式仿真足球机器人 5V5 组技术报告第一章第一章 微软轮式仿真平台微软轮式仿真平台1.1 微软轮式仿真平台的研发背景基于 Microsoft Robotics Studio SDK1.5 开发,充分利用了开发平台提供的仿真引擎服务。如图1.1所示:图1.1 比赛仿真实现过程(1)支持很多机器人硬件平台的 Windows 机器人开发环境 (2)运行时由 CCR 和 DSS 两个主要的组件构成 CCR:并发和协调运行时(Concurrency and Coordination Runtime,CCR)提供一个高度并发的、
5、面向消息的编程模型,利用强大的消息组织机制替代了锁定、信号量等线程操作。它是整个开发平台的核心运行时。 DSS:分布式系统软件(Decentralized System Services,DSS)提供了一个轻量级的面向服务的应用程序模型,融合了传统网络架构的主要特性和一部分网络服务的架构的特性。1.1.1 NewNEU 足球机器人 3D 仿真平台由三个基本的服务构成 (1)仿真引擎服务 维护可视化的仿真环境,它以物理引擎和渲染引擎为基础。 (2)NewNEU 仿真服务主要功能是仿真引擎服务和人机交互服务的消息处理、维护仿真环境的状微软轮式仿真足球机器人 5V5 组技术报告态、保证比赛的时序和逻
6、辑等。 (3)人机交互服务主要功能是显示比赛的运行情况、设置比赛的相关参数以及足球机器人的测试等。 1.1.2 微软轮式仿真平台的扩展功能仿真平台的控制面板如图 1.2 所示:图1.2 仿真平台控制面板(1)智能裁判仿真比赛的速度比较快的,智能裁判功能能够减少需要人工判断的情况,降低人的干预,有效的防止误判和错判的情况发生,使比赛更公平合理。(2)比赛录像记录整场比赛的过程能够方便比赛双方根据需要回放比赛,更好的分析决策,从而改进算法的缺陷。(3)自动开球在仿真比赛的过程中,在进球或者违规之后都要开球,因此需要人工重新放置足球机器人。人工方式不仅浪费时间而且准确性不够,利用决策文件自动微软轮式
7、仿真足球机器人 5V5 组技术报告形成开球阵形将是比较好的方法。(4)动态加载决策 DLL在不重新启动仿真环境的情况下,能够根据需要实时更换决策 DLL,方便用户操作与决策效果比较。1.2 微软轮式仿真平台的安装过程硬件配置要求硬件配置要求:硬件名称规格推荐CPUP4 1.6GHz 或更高Core2 2.5GHz内存256M 或更大2G显卡显存 128M 以上独显 256M硬盘10G 硬盘剩余空间10G 硬盘剩余空间系统要求系统要求:Windows XP / VISTA 操作系统1.2.1 所需组件(1)PhysX 是原 AGEIA 公司开发的一套物理运算引擎,可运用独立的浮点处理器(包括独立
8、的物理加速卡和 GPU)进行复杂的运算效果,减轻 CPU 的计算负担。(2).NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件。NET Framework 具有两个主要组件:公共语言运行库和 .NET Framework 类库。要求版本:Microsoft .NET Framework 3.5 (3)DirectX 是一种应用程序接口(API),它可让以 Windows 为平台的游戏或多媒体程序获得更高的执行效率,加强 3D 图形和声音效果,并提供设计微软轮式仿真足球机器人 5V5 组技术报告人员一个共同的硬件驱动标准
9、,让开发者不必为每一品牌的硬件来写不同的驱动程序,也降低用户安装及硬件设置的复杂度。1.2.2 安装过程下载所需组件:(1)AGEIA PhysX v7.11.13 下载地址:http:/ 下载地址:http:/ framework3.5 下载地址:http:/ 3D Robot Soccer Simulator 仿真平台软件下载地址:http:/ 安装注意事项(1)dotnet framework3.5 需要在线安装。(2)安装 vs2008 后不必再安装 dotnet framework3.5。(3)仿真平台安装路径不要出现中文。微软轮式仿真足球机器人 5V5 组技术报告1.3 微软轮式仿
10、真平台的使用 1.3.1 仿真环境操作(1)摄像头位置和视角操作:位置:通过键盘 Q、W、E、A、S、D 调节;视角:通过鼠标左键调节,按住鼠标左键拖动即可。(2)物理引擎控制:通过“Physics”菜单可以打开或关闭物理引擎,快捷键是 F3。(3)渲染模式:通过“Render”可以改变当前环境的渲染模式,也可以通过快捷键 F2 切换(4)仿真环境模式:仿真环境有两种模式:Run 和 Edit。可以通过“Mode”菜单进行选择,也可以用快捷键 F5 切换。(5)仿真环境中实体编辑:首先切换到编辑状态,在仿真环境左侧显示了当前环境中的实体及其属性,可以随意编辑各个实体的“Position”和“R
11、otation”参数,建议暂时不要修改其他参数。1.3.2 仿真平台的使用模式(1)单机版模式图 1.3 比赛模式选择微软轮式仿真足球机器人 5V5 组技术报告在对抗赛中,用于选择单机版比赛模式和客户端服务器比赛式,如图 1.3图 1.4 比赛项目和时间设置对抗赛的比赛项目有:3vs3、5vs5、11vs11,时间设置有:3、5、10 分钟。正常比赛时间为 10 分钟,如果比赛结束时还没决出胜则进入 3 分钟加时赛。5分钟的时间设置仅供参赛队调试时使用。如图 1.4图 1.5 决策加载用于单机版对抗赛中,决策的加载。如图 1.5图 1.6 开球方式选择用于选择开球方式和开球方,供各参赛队调试决
12、策时使用以及在比赛开始正常发球时使用,如图 1.6图 1.7 控制按钮在比赛一开始时,可以点击“Start”来开始比赛,比赛中途在必要时可以点击“Pause”暂停比赛,也可以点击“Replay”回放比赛,然后可以点“Continue”继续进行比赛。如果各队放弃比赛,想开始新的比赛,可以点击“Reset” 。如图 1.7(“Start”按钮点击之后变为“Reset”按钮) 。微软轮式仿真足球机器人 5V5 组技术报告(2)客户端模式在客户端服务器模式的对抗赛中用于服务器连接客户端。 1.3.3 控制面板操作(1)单机版对抗赛操作 1. 比赛开始之前,首先在服务器面板中设置如下选项:(a)选择比赛
13、项目以及比赛时间。(b)在“TeamConnect”中选择“Local” 。2. 在服务器端的决策入口加载决策。3. 当双方都加载好决策以后,可以通过选择“KickOffTeam”设置开球方,并提示两个队摆放机器人。4. 在两个队都准备好后,可以点击“Start”开始进行比赛。5. 比赛中,如果需要暂停可以点击按钮“Pause”,然后点击“Continue”继续进行比赛。在有争议的情况下,点击“Replay”可以回放比赛前 10s 的状况。6. 比赛中如果有进球或犯规,其开球方式要求同 3,然后点击“Continue”进行比赛。7. 比赛分上下半场,在下半场可以交换场地,交换场地时两个队需交换
14、决策入口,然后重新加载决策。 8. 比赛结束后,可以点击“ReSet”进行下一场比赛。(2)客户端服务器对抗赛操作 1. 比赛开始之前,首先在服务器面板中设置如下选项: (a)选择比赛项目以及比赛时间。 (b)在“TeamConnect”中选择“Remote” 。 (c)输入两个客户端的 IP,点击“Connect”进行连接。2. 在服务器连接到客户端后,会提示客户端加载决策,当客户端确定加载好决策后,点击“Ready”向服务器发出准备好信号。微软轮式仿真足球机器人 5V5 组技术报告3. 服务器端通过选择“KickOffTeam”设置开球方,并提示两个客户端摆放机器人4. 服务器在接收到两个
15、客户端的准备好信号后,可以点击“Start”开始进行比赛5. 比赛中,如果需要暂停可以点击按钮“Pause” 。在有争议的情况下,点击“Replay”可以回放比赛前 10s 的状况。6. 比赛中如果有进球或犯规,其开球方式要求同 3,再点击“Continue”进行比赛7. 比赛分上下半场,在下半场可以交换场地,交换场地时两个客户端需交换决策入口,然后重新加载决策。8. 比赛结束后,可以点击“ReSet”进行下一场比赛。微软轮式仿真足球机器人 5V5 组技术报告第二章 微软轮式仿真比赛(5VS5)介绍及决策2.1 微软轮式仿真(5vs5)比赛场图 2.1 比赛场地图如图 2.1 所示:(a)场地
16、尺寸赛场为黑色长方形场地,其尺寸是 220cm180cm ,带有 5cm 高,2.5cm 厚的白色围墙。在场地的四角固定四个 7cm7cm 的等腰三角形以避免球进入角落。(b)场地标记中圈半径是 25cm 。作为门区的一部分的圆弧沿球门线长 25cm ,垂直于球门线 5cm。主要直线/圆弧(中线、门区边界线和中圈)均为白色,3mm 宽。争球时机器人的站位(圆)标记为灰色。(c)球门球门宽 40cm,没有横梁和网。微软轮式仿真足球机器人 5V5 组技术报告(d)门线与门区门线是恰好位于球门前长 40cm 的线段。门区包括位于球门前尺寸为50cm15cm 的长方形区域。(e)罚球区罚球区球门前尺寸
17、为 80cm35cm 的长方形区域,弧形区域平行于球门线长度为 25cm ,垂直于球门线高度为 5cm。(f)球用桔黄色的高尔夫球作比赛用球,直径 42.7mm,重 46g。(g)机器人机器人为 7.5cm7.5cm4.5cm 的小车机器人。(h)服务器客户端比赛模式服务器端设有:比赛时间、记分牌、2D 比赛显示、裁判界面、调试界面。客户端设有:比赛时间、记分牌、2D 比赛显示、网络连接状态、决策加载入口。2.2 比赛规则介绍2.2.1 比赛秩序(1)准备在服务器连接到客户端后,各队将比赛策略加载到客户端电脑并运行,在确定准备好,客户端可以向服务器发出“Ready”信号。(2)开始服务器在接收
18、到客户端双方的“Ready”信息之后,由裁判按下服务器菜单的“Start” 比赛开始,按下“Stop”比赛暂停或终止。比赛分两个半场,每半场 5 分钟,中场休息 5 分钟(如双方同意,可继续比赛)。在需暂停或其它必要情况下,裁判员暂停计时。微软轮式仿真足球机器人 5V5 组技术报告2.2.2 计分方法(1)获胜者当整个球越过门线时即破门得分,此时该球队计分牌就自动加 1。根据记分牌数据大小决定获胜队。如果有争议球可以按下“Replay”回放比赛。(2)平局处理下半场比赛结束后,若双方打成平局,则通过突然死亡法决定获胜者。休息 5 分钟后,进入加时赛,加时最大周期为 3 分钟,其间先得分的 球队
19、为获胜者。如果追加 3 分钟后仍是平局,则通过点球决定获胜者。每个球队可射 3 次点球。在这时只有一个踢球员和一个守门员上场比赛。守门员在自己的球门区内,踢球员和球的位置同规则 5。裁判吹哨后,允许守门员走出球门区。如果3 次点球后仍是打成平局,则一次一次地增加点球次数,直到决定获胜者为止。所有点球均由一个机器人踢。 2.2.3 罚球(1) 以下情况发点球1.在球门区内防守方的机器人多于一个(包括守门员),一个机器人多于 50在门区内就认为该机器人在门区内。2.在球门区及罚球区内防守方的机器人多于 4 个(包括守门员),对防守方罚点球。 3.守门员没能在 10 秒钟内将球踢出门区。如图 2.2
20、 所示:微软轮式仿真足球机器人 5V5 组技术报告图 2.2 发点球(2)以下情况发门球1.当守门员在门区内,一方球员直接或间接阻挡、冲撞对方守门员(不论之间是否有球) ,防守球队将发门球。2.在防守球队的门区内参与进攻的机器人多于一个,或禁区内参与进攻的机器人多于四个,防守球队将发门球,禁区包含门区。一个机器人多于 50在门区内就认为该机器人在门区内。如图 2.3 所示:图 2.3 发门球(3)以下情况争球1.在门区外出现僵局达 10 秒钟,裁判将判争球。2.球被微软轮式仿真足球机器人 5V5 组技术报告撞出场地时,将在球离开场地时的球所在的 1/4 半场进行争球。如图 2.4 所示:图 2
21、.4 争球2.3 决策 DLL 的生成DLL:它是 Dynamic Link Library 的缩写形式,动态链接库 (DLL) 是作为共享函数库的可执行文件。微软轮式仿真平台是以加载动态链接库 DLL 的方式来调用参赛队的比赛决策的,参赛队是通过对 DLL 代码的编写来完成对本对机器人的决策与控制的。一般利用 Microsoft Visual Studio 2008 来作为生成决策 DLL 的工具。其接口函数如图 2.5 所示微软轮式仿真足球机器人 5V5 组技术报告图 2.5 接口函数示例StrategyInit(EnvironmentStrategyInit(Environment *E
22、nv)*Env)初始化函数,每次比赛平台只调用此函数一次,用以分配内存空间等操作StrategyStep(EnvironmentStrategyStep(Environment *Env)*Env)正常模式入口函数,在比赛过程中仿真平每周期(30 毫秒)调用此函数一次,执行其中的代码。StratefyDrop(EnvironmentStratefyDrop(Environment *Env)*Env)释放函数,一般用以释放在初始化函数中分配的内存空间,仿真平台只在比赛结束或中止时调用此函数一次。Author(charAuthor(char *team)*team)队名设置函数,平台将把字符串中
23、的内容显示在软件界面上。SetForm(EnvironmentSetForm(Environment *Env)*Env) 阵型设置函数。StrategyStepDebug(EnvironmentStrategyStepDebug(Environment *Env,*Env, DataDebugDataDebug *Data)*Data)微软轮式仿真足球机器人 5V5 组技术报告调试模式入口函数,与正常模式一样,在比赛过程中仿真平台每周期(30 毫秒)调用函数一次,并执行其中的代码。接口函数定义举例接口函数定义举例extern C STRATEGY_API void Author(char*
24、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_API void StrategyStep(Environment *Env) Env-home0_velocityLeft = 0; Env-home0_velocityRight = 0; Env-home1_velocityLeft = 60; Env
25、-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;微软轮式仿真足球机器人 5V5 组技术报告2.4 决策的编写DecisionMakingx 类在机器人比赛中我们是需要利用场上各种敌我双方的信息,以及各种场地及比赛状态信息来对多个机器人
26、的行为进行决策与控制的。显然这将会是一个复杂的过程,针对于此我们利用 DecisionMakingx 类来封装所有与决策相关的算法,是仿真比赛的核心,是决策代码编写的载体。一个基本的DecisionMakingx 类如图 2.6 所示。在接口函数 StrategyInit 通过如下代码完成 DecisionMakingx 类的初始化,在接口函数 StrategyStep 通过如下代码完成DecisionMakingx 类的调用。DecisionMakingx+m_posBall:VecPosition+Robot2*ROBOTNUMBER+1:RobotInford+oldRobot2*ROB
27、OTNUMBER+1:RobotInford+dmDEG:DEGame+rbVROBOTNUMBER:dbLRWheelVelocity+CDecisionMakingx();+CDecisionMakingx():virtual+Startx(RobotInford dmRobot):void+ InitDEG(DEGame DEG): void+ PreProcess():void+ MiroSot_DecisionMaking():void+ PostPrecess():void图 2.6 DecisionMakingx 类2.4.1 DecisionMakingx 类成员变量的数据传送
28、 成员变量 m_posBall,Robot2*ROBOTNUMBER+1,oldRobot2*ROBOTNUMBER+1,微软轮式仿真足球机器人 5V5 组技术报告dmDEG 的值均由结构体 Environment 传入;rbVROBOTNUMBER的值传出至结构体 Environment。从而通过动态链接库的调用完成比赛数据在仿真平台与决策dll 之间的传递。2.4.2 基本的类成员函数与类成员的添加 (1)基本的类成员函数:Startx(RobotInford dmRobot):决策的外部调用接口函数InitDEG(DEGame DEG):比赛状态的决策端初始化函数。传递比赛开球模式,及何
29、方开球等信息。PreProcess():预处理函数。对自增成员变量等进行初始化等操作。MiroSot_DecisionMaking():决策算法主调函数。进行比赛决策的入口。PostPrecess():后处理函数。完成对本周期一些信息的保存。(2)类成员的添加:我们可以根据自身需要加入相应成员变量与成员函数,以更好的实现对多个机器人的整体控制,如阵型设定,任务分配与角色转换等,还可以完善对单个机器人的动作控制,增强单兵作战的能力。2.5 整体决策的实现 2.5.1 基于球的位置分区的决策 为了使大家对使用 DecisionMakingx 类进行决策的编写有更进一步的了解,在这里我们为大家提供了
30、两种实现整体决策的思路:基于球在场地内的位置分区的决策与基于任务分配的决策:(1)首先确定当前球的位置,根据当前球的位置判断当前场上的攻防态势(2)每一种攻防态势下每个球员的相应动作这是一种相对简单易行的决策方法。基于球的位置分区的决策例程MiroSot_DecisionMaking()微软轮式仿真足球机器人 5V5 组技术报告int m_nAreaNo = GetAreaNo(m_posBall);/得到球的位置分区switch(m_nAreaNo)case DEFENCE: /防守状态时每个球员的动作break;case MIDFIELD:/中场争夺状态时每个球员的动作break;case
31、 ATTACK:/进攻状态下每个球员的动作break;2.5.2 基于任务分配的决策 (1)首先定义场上我方球员的五种角色类型:Goalia, BackDefend, AssistDefend, Forward, AssistForward(2)根据场上当前形势进行对我方每一个球员进行角色分配,将机器人车号与球员的角色类型一一对应起来。(3)执行每一种角色的相应动作。MiroSot_DecisionMaking()m_nAreaNo=GetAreaNo(m_posBall);/得到区域号码Role();/角色分配GLAction(GL);BDAction(BD);ADAction(AD);微软
32、轮式仿真足球机器人 5V5 组技术报告AFAction(AS);FWAction(FS);2.6 机器人动作的实现足球机器人比赛过程是由一个个的动作组成的,既有涉及底层运动学模型的到点,转角等基本动作,又有综合各基本动作来实现更高级功能以及更高要求任务的高级动作,如射门动作,包抄动作等。运动学模型以及相关的几何运算是处理足球机器人基本动作的基础,而功能完善的几何类库是完成这些计算的必要工具。支持文件 Support 中为我们提供了几何类库,这一功能强大的几何类库,为我们应用各种相关算法完成复杂的有关运动学的几何运算提供了必要保证。下面就先介绍一下可供我们使用的集合类库:GeometryR Ge
33、ometryR 几何类库集成了 VecPosition 类,Geometry 类,Circle 类,Line 类,Rect 类,可以完成点的相关运算,直线的 相关运算,圆的相关运算,角度的相关运算等等几何运算。(1)VecPosition 类常用成员函数举例:GetDirection:得到向量的方向角GetDistanceTo:得到向量的模(即首末端两点的距离)GetX:得到向量的 X 方向分量GetY:得到向量的 Y 方向分量(2)Line 类常用成员函数举例:MakeLineFromTwoPoints(VecPosition point1,VecPosition point2):过两点确定
34、一条直线GetDistanceWithPoint(VecPosition point):得到点到线的距离微软轮式仿真足球机器人 5V5 组技术报告VecPosition GetIntersection(Line line):得到线与线的交点GetPerpendicularLine(VecPosition point):得到过某点且垂直于某条直线的直线(3)Circle 类Circle(VecPosition point,double dR):根据圆心和直径确定一个圆GetIntersectionPoints(Circle circle):求两个圆的交点 简单的防守跑点动作(机器人跑球与门连线上
35、一点以达到守门的目的)void Defend_example(int nRobot)VecPosition ownGoal(0,PITCH_WIDTH/2.0);Line/Defend_line=Line:MakeLineFromPositionAndAngle(RobotnRobot.pos,PI/2.0);Line/ownGoal2ball=Line:MakeLineFromTwoPoints(ownGoal,m_posBall);VecPosition/run_target=ownGoal2ball.GetIntersection(Defend_line);ToPositionPD(nR
36、obot,run_target,50);2.7 机器人动作的设计机器人的动作大致可以分为两类,如图 2.7 所示。运动的两大特点:微软轮式仿真足球机器人 5V5 组技术报告1 到点动作2 转角动作3 直接给轮速跑直 线、圆弧或自转 1 射门 2 守门3 带球 4 截球5 中路包抄6 传球 基本动作技术动作图 2.7 机器人动作1 非完整约束:非完整约束:同时限制受控对象的空间位置和运动速度、且运动速度不能通过积分转换为空间位置的约束,也称为不可积约束。直观0sincosxy理解:两个轮子不能侧滑,如图 2.8 所示图 2.8 机器人小车运动图示 2 两轮差动:微软轮式仿真足球机器人 5V5 组
37、技术报告通过控制两轮子的转速来完成移动(控制线速度)与转角(控制角速度)的动作 )(21)(2lrlrwrvsincosvyvx2.7.1 动作的设计举例(1) 射门动作:重要性:是足球机器人比赛中的最关键和使用频率最高的动作之一。本质:射门动作的本质上讲是控制机器人以一定方向到球。实现方法:射门动作的实现方法多种多样,比较简单的如中分线射门、切入圆射门、动态圆射门、包抄射门。另外还有诸如“Bezier 曲线”等轨迹规划类的方法。中分线射门法中分线射门法中分线射门法是一种直观易懂的方法,能同时体现距离和方向的变化。给定目标点(即机器人要通过的位置)和方向点(即机器人通过目标点时的姿态),通过该
38、算法返回规划目标点,作为机器人运动的目标点。经过若干个周期的迭代,所产生的一系列目标点,引导机器人以满足朝向方向点的姿态通过目标点。将机器人当前位置与球的位置连线,取这条连线的垂直平分线,这条垂直平分线与球和球门中点的连线有一个交点,设想在当前系统运行周期内,机器人向 这个交点运动,而在下一个系统周期内,同理计算出新的交点,机器人再向新的交点运动,这样,机器人走出了一条平滑的曲线进行射门。这就是机器人垂直平分线算法的基本思想。如图 2.9 所示微软轮式仿真足球机器人 5V5 组技术报告图 2.9 中分线射门切入圆射门法切入圆射门法过球所在点 B、射门目标点 G 做一直线在机器人 R 所在侧做一
39、半径为 r 的圆 O,使圆 O 与直线 BG 相切于点 T,与小车运动方向相切与点 P1。小车沿圆弧调整位姿,进行射门。如图 2.10 所示1 图 2.10 切入圆射门中路包抄射门法中路包抄射门法机器人以最大速度撞击从边路向中路运行的球,使球改变运行方向进入对方球门特点:是一种很有效的快速进攻手段,尤其是在常规射门动作很难打开局面时,达到使对方猝不及防甚至直接将球击入对方空门极佳效果。本质:预测球的运动位置,控制机器人使其与球在同一时间出现在同一地点。好的中路包抄射门:1 快速。2 准确。对球的预测采用最小二乘法,对机器人的预测采用样本查找法。如图 2.11 所示图 2.11 中路包抄射门微软
40、轮式仿真足球机器人 5V5 组技术报告中路包抄射门算法流程1、根据球前若干周期的数据,预测出球的运动方向和速度;2、计算球按预测方向运动与 PosR 和 PosG 连线的交点 PosT;3、计算球按预测的速度运动到 PosT 需要的时间 t;4、计算 PosT 到 PosG 的距离,在确定的样本中查找满足这个距离时机器人所需的时间 T;5、如果 tT,则使机器人跑向 PosG,否则转到 3(2) 守门员动作:好的守门员可以顶半支球队,轮式足球机器人比赛中更是如此。 (原因:1 二维 2 轨迹直线 3 没有人为失误 4 运动速度可大于球速) 。本质:使守门员挡在球进入球门的最有可能的路径上。好守
41、门员动作的两个必要条件:1 对球在场上不同位置的情况考虑要周全。2 所使用的基本动作要快速精确。(3)到点动作原理:应用 PID 控制,对机器人位置与目标点位置所形成的距离偏差及机器人朝向与目标点相对机器人方向所形成的角度偏差进行控制,最终达到距离偏差及角度偏差为零的稳定状态,即实现到点动作。如图 2.12 所示:图 2.12 到点函数示意图微软轮式仿真足球机器人 5V5 组技术报告2.7.2 高级动作的实现举例(1) 避障动作:避开对方围堵、阻挡与拦截,以顺利执行己方目标。它的有无与优劣是一个球队好坏的重要标志。本质:足球机器人的避障控制是一类动态障碍约束条件下的运动规划与控制问题。好的避障
42、动作:1 有效避障 2 时间最优实现方法:1 相交圆算法 2 Bezier 曲线等 避障举例相交圆算法,如图 2.13 所示:图 2.13 相交圆算法(2) 带球动作:在机器人出球之后其仍对球的运动路线加以控制,不但提高了射门精度,而且大大增加了敌方判断球路的难度,从而大大增强了射门的威胁。如图 2.14所示本质:多目标优化问题,处理两个关系机器人与球的关系“机器人和球”这一整体与目标点的关系微软轮式仿真足球机器人 5V5 组技术报告好的带球动作:1 控球能力强 2 速度快 3 精度高图 2.14 带球动作示意图(3)带球避障动作:带球与避障相结合,达到带球过人的效果,是机器人足球场上的绝杀级
43、进攻武器,但由于控制要求相当高,又要考虑到场上瞬息万变的站位状态,无疑为其实现带来较大难度。本质:在带球动作的基础上加入避障轨迹作为其带球路线。带球避障动作在平台上的运行效果,如图 2.15:微软轮式仿真足球机器人 5V5 组技术报告图 2.15 带球避障运行状态图(4) 截球动作:机器人足球比赛,往往具有对抗激烈、攻防转换快的特点,谁能更快、更准地截获正在运动的足球,谁就占有很大的优势。在激烈对抗的动态环境中实时地准确地预测运动路径难度极大。计算复杂性与算法实效性矛盾尤为突出。足球机器人不仅需要与小球快速准确碰撞,更需要以正确的角度碰撞。本质:机动目标的跟踪问题。实现方法:“比例导引法”等方
44、法比较实用有效。微软轮式仿真足球机器人 5V5 组技术报告第三章第三章 比赛程序讲解比赛程序讲解3.1 球场分区球场分区 GetAreaNo()和角色分配和角色分配 Role()由于小车要根据当前球在球场的位置来决定所要进行的动作,所以有必要首先对球场分块编号。另外,每个小车要扮演不同的角色,各司其职,所以要对 5 个小车进行角色分配。球场分区和角色分配方式的选取,取决于整体战术的选取和每个小车的功能动作。我们采取的决策中,球场分区是固定不变的,角色分配则是采用动态分配方式,由球在场上的不同位置和其他一些因素来决定。具体如图 3.1 所示:3.1.1 球场分区球场分区 GetAreaNo():
45、图 3.1 球场分区图分区 0:球的 x 值 X-ball 小于 15分区 1:15X-ball35分区 2:35X-ball105分区 3:105 X-ball 185分区 6:对方小禁区范围微软轮式仿真足球机器人 5V5 组技术报告分区 5:对方大禁区内,小禁区外范围分区 4:对方大禁区两侧的区域3.1.2 角色分配角色分配 Role():1.离自己门(-15,90)最近的始终是守门员2.其他 4 个小车的角色分配与球在对方半场和己方半场有关系:(1)球在己方半场时,先分防守球员角色,再分进攻球员角色。即首先离点(-100,90)最近的依次是后卫,中场,然后离球最近依次是前锋、Wing。如
46、果球 X 小于前锋 X 且 Wing 的 X 小于前锋 X ,则交换 Wing 和前锋。(2)球在对方半场时,除去 2 号小车为专职中场外(原因参看中场策略讲解) ,另外 3 个小车先分进攻角色,再分防守角色。即首先离球最近依次是前锋、Wing。如果球 X 小于前锋 X 且 Wing 的 X 小于前锋 X ,则交换 Wing 和前锋,然后离点(-100,90)最近的是后卫。这里对 2 号小车的处理引入了全局变量m_lock,一般情况下 m_lock=0,中场被锁死,不参与动态角色分配。只有当中场离球很近时 m_lock=1 开锁,此时,中场根据动态 Role()函数进行分配,可以换人。Role
47、()函数虽然简单,但是由于角色是动态变化的,给整个程序增加了很大的复杂性。有许多动作函数的真正效果,必须要结合 Role()函数的动态分配效果,才能体现。大家在学习代码的时候,一定要留意不同时刻,每个小车角色的变化。3.2 后卫决策后卫决策 FBAction()讲解讲解后卫的主要任务自然是防守,现行的后卫策略以模糊算法求最佳防守点防守为基础,增添了几种特定情况下的防守动作,重点完善了防底线突破部分,另外还增加了当球在前场时后卫的中路包抄动作。下面是后卫的基本决策程序流程图:微软轮式仿真足球机器人 5V5 组技术报告图 3.2 后卫动作流程图 此流程图可以理解为,从上到下执行的优先级依次降低,即
48、最上边的执行优先级最高,最下边的优先级最低。上边的一系列判断条件,都是为了应对特定情况,当场上形势不属于所有的考虑到得特殊情况,就执行优先级最低的加权算法计算最佳防守点防守。 后卫、中场决策中最佳防守点算法的详细说明后卫、中场决策中最佳防守点算法的详细说明微软轮式仿真足球机器人 5V5 组技术报告最佳防守点的计算包含有两次加权算法:第一次加权是计算防守圆 iCircleShield 的圆心点 iGuard,其中圆心 y 坐标是由 dGuardCurrent 和 dGuardForecast 两个值加权的来。dGuardCurrent 是球的 y 坐标,如果超出(70,110)的范围则取 70
49、或 110。dGuardForecast 则根据球的预测走向取得,球的预测走向与 x=3.75 的交点,如果此交点在(70,110)内则 dGuardForecast 取这个值,否则取值仍等于dGuardCurrent。有了这两个值 dGuardCurrent 和 dGuardForecast 后,防守圆圆心的 y 坐标由他们加权而来, 权值 dK = dBallSpeed * 10 / dDistBall2Home圆心 y 坐标 : (dK * dGuardForecast + dGuardCurrent) / (dK + 1)。圆心的 x 坐标: -ROBOT_LENGTH。防守圆半径:后
50、卫为 25 中场为 40第二次加权算法是计算最佳防守点 iTarget。它由两个点 iPosForecast 和iPosCurrent 加权而来,其中 iPosCurrent 是球的位置。iPosForecast 是球的预测线与上一步求的防守圆的最近的交点,如果没交点就还等于iPosCurrent。权值 dP = ballCharacter.velocity * 10/RobotnRobot.pos.GetDistanceTo(m_posBall),点 iPosShield = (iPosCurrent + iPosForecast * dP) / (1 + dP)。 然后从上一步的圆心 iGuard 到iPosShield 点连线,防守点 iTarget 为这条线上距圆心 25 或 40 处,注意25、40 是上一步中防守圆的半径,因此防守点还是在防守圆上。加权是模糊数学的一个基本概念,当面临一个两难的判断,比如选 a 还是选 b 时,可以引入一个 0-1 间的系数 k,最后的结果是 k*a+(1-k)*b,这样就相当于两个选项都选了一部分,而那个权值 k 则取决于是想要 a 多一点还是想要b 多一点,k 的确定也是一个不简单的是,最简单的就是线性函数了。在前锋的截球中用到的一次加权 就是这样,有两个目标点,一个是球的正后(左)方
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 卫生院员工培训
- 一病情观察一病情观察的意义为诊断疾病和制定治疗护理方案
- 《员工培训讲义》课件
- 外科妊娠甲亢治疗方案
- 保全工相关技能培训
- 冰雪气候资源评估方法(报批稿)
- 事业部财务培训
- 培训机构动员大会
- GPT产业复盘报告
- 口腔纤维桩护理配合
- 公安笔录模板之询问嫌疑人(书面传唤治安案件)
- 小学作文假如我是(课堂PPT)
- 混凝土配合比检测报告
- 高等学校英语应用能力考试B级真题作文及参考范文
- 鄂尔多斯盆地地层划分表
- 重要医疗器械经营质量管理制度及目录、工作程序
- CT报告单模板精编版
- 全国重点文物保护单位保护项目安防消防防雷计划书
- 学校食堂家长陪餐制度
- 《梯形的面积》(课堂PPT)
- 肾内科疾病诊疗常规
评论
0/150
提交评论