计算机与信息学院机器人足球实验报告计算机科学与技术实验一一、实验目的掌握RoboCup仿真机器人足球比赛相关知识点,具体内容如下:(1)Linux操作系统的熟悉及了解其基本操作。(2)掌握Linux下如何进行C++编程,了解gcc编译器以及一些简单编辑工具,如:vi、emacs、gedit、Anjuta、Kdevelope等。(3)启动RoboCup仿真(2D)足球队的比赛。二、实验设备硬件环境:PC机软件环境:操作系统linux三、实验内容(1)掌握Linux一些常用的命令a)如何找到用户主目录的绝对路径名?在自己的系统上,用户主目录的绝对路径名是什么?pwd/home/student(2)将当前工作目录从/home/UVA转到/home/Tsinghua需要使用什么命令?如何显示当前目录?cd/home/Tsinghua(3)如何在当前目录下建立子目录RoboCup?mkdirRobcup(4)如何删除子目录RoboCup?rmdirRobcup(5)如何查看当前目录下的内容?ls(6)如何将文件start.sh的权限设定为:start.sh属于可读、可写、可执行?chmod777start.sh(7)如何将当前目录包括所有子目录全部做备份文件,备份文件名为first.tar?tarxvfdir1first.tar(8)如何将目录/home下每一个文件压缩成.gz文件?tar-zcwfstore.tar(9)如何把上例中每个压缩的文件解压,并列出详细的信息?tarxvfstore.tarLs-lg实验二1、实验目的(1)了解Demeer5的工作原理(2)学会对Demeer5进行简单的修改二、实验设备硬件环境:PC软件环境:Linux三、实验内容(1)如果可踢球就用最大力踢球elseif(WM-isBallKickable())//如果球已知,而且当前球在我脚下(可踢){VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM-getCurrentCycle()%2))*0.4*SS-getGoalWidth());soc=kickTo(pos,SS-getBallSpeedMax());ACT-putCommandInQueue(soc);//放入命令队列ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}(2)如果球不可踢且我是队友中最快到达球的队员,则去截球elseif(WM-getFastestInSetTo(OBJECT_SET_TEAMMATES,OBJECT_BALL,&iTmp)==WM-getAgentObjectType()&&!WM-isDeadBallThem())//如果球不在我的控制范围下,但是当前能最快抢到球的是我,那我就去执行抢球动作{Log.log(100,Iamfastesttoball;cangettherein%dcycles,iTmp);soc=intercept(false);ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));(3)其他情况按战略点跑位elseif(posAgent.getDistanceTo(WM-getStrategicPosition())1.5+fabs(posAgent.getX()-posBall.getX())/10.0)//到了这里就是其他距离球相对远一点的人了,如果离自己的阵形点太远,就跑回自己的阵形点去。{if(WM-getAgentStamina().getStamina()SS-getRecoverDecThr()*SS-getStaminaMax()+800){soc=moveToPos(WM-getStrategicPosition(),PS-getPlayerWhenToTurnAngle());ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}(4)将球踢向对方球门elseif(WM-isBallKickable())//如果球已知,而且当前球在我脚下(可踢){VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM-getCurrentCycle()%2))*0.4*SS-getGoalWidth());//得到对方球门的坐标soc=kickTo(pos,SS-getBallSpeedMax());ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));(5)将球踢向距自己最近的球员elseif(WM-isBallKickable())//如果球已知,而且当前球在我脚下(可踢){VecPositionvec=WM-globalPosition(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent));soc=kickTo(vec,2.0);ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}(7)用不同的带球模式带球dribble(vec,DRIBBLE…)分别用DRIBBLE_FAST快速带球DRIBBLE_SLOW慢速带球DRIBBLE_WITHBALL安全带球的模式带球(8)向对方球门带球elseif(WM-isBallKickable()){AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}(9)不同的带球组合elseif(WM-isBallKickable()){if(WM-isInTheirPenaltyArea(WM-getBallPos())){VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM-getCurrentCycle()%2))*0.4*SS-getGoalWidth());soc=kickTo(pos,SS-getBallSpeedMax());}else{AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);}AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);ACT-putCommandInQueue(soc);//放入命令队列ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}实验三一、.实验目的熟悉demeer5并学会demeer5的基本使用方法,具体内容如下:(1)理解UVA程序的的么而内容(2)能修改demeer5(3)能进行底层动作的组合二、实验设备:硬件设备:pc机软件设备:操作系统linux三、实验内容(1)如果在对方禁区内就射门,否则,如果时7、8、9号队友就超前方带球,其他队友传球给9号elseif(WM-isBallKickable()){if(WM-isInTheirPenaltyArea(WM-getBallPos())){VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM-getCurrentCycle()%2))*0.4*SS-getGoalWidth());soc=kickTo(pos,SS-getBallSpeedMax());}else{if(WM-getAgentObjectType()==OBJECT_TEAMMATE_7||WM-getAgentObjectType()==OBJECT_TEAMMATE_8||WM-getAgentObjectType()==OBJECT_TEAMMATE_9){AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);}else{soc=leadingPass(OBJECT_OPPONENT_9,1);}}AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}(2)如果队员的位置在自己半场就向对方球门踢球,否则就向前方带球elseif(WM-isBallKickable()=0){if(WM-getBallPos().getX()=0){VecPositionpos=(PITCH_LENGTH/2.0,(-1+2*(WM-getCurrentCycle()%2))*0.4*SS-getGoalWidth());soc=kickTo(pos,SS-getBallSpeedMax());}else{AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);}AngDegang=0.0;soc=dribble(ang,DRIBBLE_FAST);ACT-putCommandInQueue(soc);ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}(3)担忧人来抢球时,就将球传给离自己最近的队友,否则就自己带球elseif(WM-isBallKickable()){Circlecir(posAgent,2.5);intnum=WM-getNrInSetInCircle(OBJECT_SET_OPPONENTS,cir);if(num2){VecPositionvec=WM-getGlobalPosition(WM-getClosestInSetTo(OBJECT_SET_TEAMMATES,posAgent));soc=kickTo(vec,2.0);}else{soc=dribble(0.0,DRIBBLE_FAST);}ACT-putCommandInQueue(soc);//放入命令队列ACT-putCommandInQueue(turnNeckToObject(OBJECT_BALL,soc));}实验四一、实验目的进一步了解demeer5并能熟悉的修改demeer5的内容以达到对场上的球员的控制(1)能理解UVA程序中原来的demeer中原来的demeer中的全部控制(2)能通过修改demeer5中的具体函数内容实现对场上球员的控制(3)能通过底层动作的简单组合控制场上队员做出一些复杂动作决策(4)对worldmodel有初步的认识,学会在woeldmodel,basicplayer里添加新函数二、实验设备硬件环境:PC软件环境:操作系统linux三、实验内容(1)判断守门员的位置,朝门空隙较大的一方射门elseif(WM-isBallKickable()){VecPositionvec=WM-getGlobalPosition(WM-getOppGoalieType());if(vec.getY()0){VecPositionpos=(52.2,-6.5);soc=kickTo(pos,SS-getBallSpeedMax());}else{VecPositionpos1=(52.5,6.5);soc=ki