《airobot培训教程.ppt》由会员分享,可在线阅读,更多相关《airobot培训教程.ppt(37页珍藏版)》请在三一办公上搜索。
1、AIRobot机器人培训教程,AIRobot平台简介,AI-CODE 是一套虚拟机器人平台。其中包括机器人运行平台Airobot,代码编辑器CodeCanvas等组件。您可以在AI-CODE中创建自己的机器人,用编程的方式控制它。把它放到战场上同其他开发者创建的机器人对手拼死战斗到底。在战斗中感受到学习所带到的快乐。AI-CODE 是一种教育软件,以寓教于乐的方式。打破了传统教育的模式,让大家在非压迫的竞争中极大的提高自己的学习水平。AI-CODE 参与者可以用不同的语言编写自己的机器人,目前支持的语言包括java,c,c+。使用不同语言的程序员在这里可以同场竞技。,AIRobot机器人平台是
2、一个虚拟平台,参赛者只要把自己的机器人封装好放在平台的指定位置,即可参加战斗,比赛结束后存活者为胜。,平台使用,AIRobot平台安装及配置,1、我们使用的是AIRobot平台3.0版本,首先到网站上下载AIRobot安装程序,运行安装程序,一般安装在D盘。2、使用自己熟悉的程序编写机器人,并生成可执行程序,然后把可执行程序复制到 D:AIROBOTrobots,即程序的安装目录。3、新建比赛,熟悉平台的运行方式。,新建比赛的方法,第一步:运行AIROBOT。通过AIROBOT目录中的run.bat来运行AIROBOT。或双击AIrobot的图标。第二步:点击“Match”菜单下的“New”,
3、如下图:,新建比赛的方法,第三步,弹出新建比赛对话框,在机器人选择页上,先选择机器人所在的包Samples.java,然后选择机器人Circle,这是一个作圆周运动的机器人,然后按add按钮,让Circle参加这场比赛。如图:,新建比赛的方法,第四步,按照同样的方法添加例子机器人MoveLine,然后按finish按钮,这样就开始了一场新的比赛,参加比赛的选手就是我们刚刚选择的机器人Circle和MoveLine。,编写自己的机器人,Tool-Create Robot Project创建一个新的机器人,选择该菜单项后将出现创建机器人对话框。在第一个页面中可以指定项目类型(编程语言),项目名字等
4、信息。,编写自己的机器人,Project Name:项目名。每个机器人项目都拥有若干机器人文件(包括源程序文件,配置文件等),该名字也用作这些文件的文件名的前缀。必须用英文,并且符合所用语言的命名规范。Project Type:机器人类型。目前支持的类型有java,c+,c。,编写自己的机器人,Project Package:项目所在的包。实际上对应存放机器人文件的目录。如果是多级目录,可以用”.”将目录名分开,如abc.def,则机器人的文件将存放在开发目录下的abcedf子目录中。必须用英文,并且符合目录命名的规范,如果是java机器人,还必须符合java语言中包命名的规范。,编写自己的机
5、器人,Developing dire:机器人的开发目录。存放机器人项目的目录,默认的开发目录是airobot安装目录下的robots子目录。Airobot启动的时候会到这些开发目录中装载机器人,开发目录可以通过Tool-Developing Dir进行管理。,编写自己的机器人,例如创建一个java机器人项目,项目名为MyRobot,包名为myPackage,选择默认开发目录。与项目名和包名相对应,机器人源文件为MyRobot.java,该文件存放在开发目录下的myPackage子目录中。这个机器人项目的全名为myPackage.MyRobot,一个机器人项目的全名由包名和项目名定义(中间用”.
6、”分隔),在同一个开发目录中不可以创建两个同名的项目。,编写自己的机器人,项目创建完后将打开代码编辑器(CodeCanvas),在这里可以直接编辑机器人程序和编译机器人。关于代码编辑器的使用请参考相关的文档。,编写自己的机器人,点击next,在接下来的页面中可以指定机器人的描述信息。,编写自己的机器人,name:机器人的名字,该名字和前面输入的项目名没有关系,可以任意制定,可以用中文。(默认与项目名相同)Package:机器人的包名,该名字和前面输入的项目的包名没有关系,可以任意制定,可以用中文。(默认与项目所在的包相同)Version:机器人的版本,可以不输入。Description:机器人
7、的描述信息,可以不输入。,编写自己的机器人,这里输入的信息是用于对外显示的,例如在新建一场比赛的时候对机器人进行分类和选择,以及在比赛过程中对机器人进行区分。例如输入机器人的名字为FirstRobot,包为myRobots,机器人的全名为myRobots.FirstRobot,一个机器人的全名由包名和机器人名定义(中间用”.”分隔)。,编写自己的机器人,点击next,在接下来的页面中可以指定机器人的外观。机器人的外观可以在以后通过机器人管理对话框进行修改。,控制策略及算法设计-运动策略,1、运动是机器人在战斗过程中最重要的事件之一,关系到射击敌方机器人,躲避对方机器人等。2、移动时可以以各种各
8、样的形式进行,如直线运动,弧线运动,曲线运动,随机运动等。3、优秀的运动策略应该是既可以方便的打击对手,又可以快速的躲避敌人且不容易被对手分析出自己的运动轨迹。,控制策略及算法设计-迭代算法,1、用迭代的方法控制机器人的移动,在onTick函数中,迭代之前将bearing初始化为0,迭代在一个循环中执行,首先计算得到一个目标点,该点的物理意义如图所示。,控制策略及算法设计-迭代算法,然后用isValid函数判断这个点是否是一个合理的目标点,isValid主要是检查这个点与四面墙的距离,保证目标点落在一定的范围内,机器人不至于撞倒墙。如果这不是一个合理的目标点,让bearing加上一个弧度值GA
9、P,然后进入下一次迭代,对bearing的递增将导致下一次迭代的时候得到一个不同的目标点。如果找到一个合理的点,那么迭代结束,朝这个目标点移动(moveTo)。,控制策略及算法设计-迭代算法,迭代算法还可以打击走直线的机器人,要打击走直线的机器人,就不能朝机器人的原始位置开火,因为当你的子弹到达机器人的原始位置的时候,他早已经离开那里了。所以必须计算机器人在将来某个时刻所出现的点,向这个点开炮才有可能击中他。,控制策略及算法设计-迭代算法,假设机器人在经过t个单位时间后到达位置p,如果子弹能在t个单位时间后到达p,那么向p开炮就可以击中这个机器人。根据机器人编程接口所提供的函数可以很容易知道机
10、器人的坐标,方向,移动的速度等信息,利用这些信息我们可以得到一个关于t的方程,解出t以后就可以计算出p点,向这个点开炮就可以打中敌人。,控制策略及算法设计-迭代算法,利用解方程确实可以达到预期的效果,幸好这只是一个简单的方程,但在很多情况下,计算机器人将来出现的位置是很难用解方程求出来的。用迭代的方法可以达到同样的效果,而且要简单得多。例子机器人FireLine演示了这种方法。,控制策略及算法设计-迭代算法,无论是用解方程还是迭代,目的都是找出一个子弹和对手相遇的点。利用迭代算法,并不是一下就找到这个点,而是一步步逼近这个点,随着time的增加,离这个相遇点就越来越近,因为子弹的速度比机器人的
11、运动速度要快,所以子弹总是可以追上机器人并击中他。这种方法并不是一下就找到问题的解,所以看上去这个迭代过程有点“苯”,而正是这个原因才使这种方法变得简单有效。,控制策略及算法设计-迭代算法,总结通过这两个例子,我们可以看到迭代算法是一种简单有效的方法。一般情况下,迭代算法都有一个循环体,一个叠加模块(bearing+=Gap,time+),还必须有一个结束迭代的条件。迭代算法并不是直接求解问题的解,而是逐步逼近问题的解,所以他的适应性很强,在编写机器人的时候很多地方都可以用到他。,控制策略及算法设计-随机运动,BaseWrap实现了一个绕对手做来回运动的移动策略,经过WrapKeepDis和W
12、rapAvoidWall的扩展它还可以与对手保持一定的距离,而且不会撞墙。它在做来回运动的时候每隔一定的时间就变换移动的方向,这样的移动规律是非常明显的,为了避免这样的情况发生,在控制移动的时候加入随机性,对手就不能轻易的将你击中了。,控制策略及算法设计-随机运动,在BaseWrap中,在一个方向上的运动时间是固定的,这是移动规律明显的主要因素。WrapRandom从对setDirection函数进行了改进,在每次改变运动方向的时候,它随机生成在这个方向上移动的时间,这样一来机器人的运动就变得“乱”多了,连作者也不知道机器人将会怎么移动,敌人也不可能轻易的分析出机器人的运动规律。,控制策略及算
13、法设计-围绕运动,BaseWrap 围绕运动想要围绕着对手,最简单的办法就是在这样一个圆的轨迹上运动:圆心为对手当前的坐标,半径为机器人到对手的距离。只要一直保持机器人的车身方向与机器人到对手连线方向的夹角为90度,就可以在这样的一个圆周轨迹上运动。,控制策略及算法设计-模拟匹配瞄准,模拟匹配瞄准的思想是假设敌人的运动总是存在一个规律,未来的运动总是历史的重复。在历史记录中寻找与最近一段时间的运动(当前状态段)最相似的一段历史记录,根据这一段记录之后的运动规律就可以确定对手将会以什么样的方式运动。,控制策略及算法设计-统计学瞄准,在一般的情况下,对手不会一动不动的在原地让你打。发弹的时候如果朝
14、对手当前的位置开火,当你的子弹到达对手原来的位置时,对手可能早已经离开了,如图。,控制策略及算法设计-统计学瞄准,对手当前的位置为P,经过一段时间后,对手移动到P,这时如果直接朝P点开炮是打不中对手的,如果选择一个夹角向敌人开火(图中的阿法角),就可以在P打中对手。从数学上说这个夹角是具有一定统计规律的,所以我们就可以选择命中率最高的夹角来发弹。,控制策略及算法设计-躲避子弹,如果我们能够分析出对手子弹的情况,就可以根据这些信息来指导机器人的运动,针对性的躲避对手的子弹。这种运动方式与随机运动不同,这种运动方式主动的分析对手发弹的情况,分析得越准,这种运动方式的效果就越好。随机运动是被动的,机
15、器人只是迷惑对手,不让对手掌握自己的运动规律。,控制策略及算法设计-躲避子弹,当对手发弹的时候,机器人的Action处理函数onFire将得到调用。这时根据FireAction提供的信息我们可以知道对手开火的位置,子弹的能量等信息,不过我们并不知道这颗子弹是朝哪个方向发射的。子弹发射的方向将是我们分析的重点,只要把这个发射的方向分析出来,我们就可以完全掌握子弹的情况了。,控制策略及算法设计-躲避子弹,在分析出对手发弹情况的基础上,还必须有一个算法来指导机器人躲避对手的子弹。因为机器人的最大移动速度(8)并不比能量为3的子弹速度(11)小多少,如果控制得好的话,机器人可以多避开绝大部分的子弹。,AIRobt机器人平台,以上只是AIRobot机器人的基本使用方法及其常用的策略,具体的实现还要大家进行摸索。AIRobot平台是展示大家智慧和能力的平台,希望大家能在学习的过程中体会到学习的乐趣!,AIRobt机器人平台,谢谢大家!,